【源码】关于支付宝和微信小程序的芝麻免押租赁平台建设

2024-03-31 02:04

本文主要是介绍【源码】关于支付宝和微信小程序的芝麻免押租赁平台建设,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、项目背景

随着科技的快速发展和互联网的普及,人们的生活方式发生了翻天覆地的变化。特别是在支付领域,传统的现金支付方式逐渐被电子支付所取代。支付宝和微信作为中国两大移动支付巨头,凭借其便捷、高效的特点,深受用户的喜爱。然而,传统的租赁业务往往伴随着押金的问题,这不仅增加了用户的经济负担,也影响了租赁业务的效率。因此,支付宝和微信纷纷推出了免押系统,旨在通过技术创新,优化租赁流程,提升用户体验。

二、项目功能结构

支付宝和微信的免押系统采用了先进的信用评估技术,通过用户的支付行为、社交关系、履约记录等多维度数据,构建出用户的信用画像。基于这一画像,系统能够判断用户的信用等级,从而决定是否为其提供免押服务。

在功能结构上,免押系统主要分为以下几个模块:

  1. 信用评估模块:该模块负责收集和分析用户数据,生成信用评分。通过机器学习和大数据分析技术,系统能够实时更新用户的信用状态,确保评估结果的准确性和时效性。

  2. 免押服务申请模块:用户在使用租赁服务时,可以通过支付宝或微信平台提交免押申请。系统会根据用户的信用评分,自动判断是否批准其申请。

  3. 风险监控模块:该模块负责对免押服务进行实时监控,一旦发现异常行为或风险事件,系统会立即采取措施,保障租赁双方的权益。

  4. 数据报告与分析模块:系统定期生成免押服务的数据报告,帮助运营者了解服务的使用情况、用户反馈等信息,为优化服务提供依据。

三、项目用途

支付宝和微信的免押系统具有广泛的用途,主要体现在以下几个方面:

  1. 优化租赁流程:通过免押系统,用户可以更加便捷地获取租赁服务,无需再为押金问题而烦恼。同时,租赁方也能减少押金管理的工作量,提高业务效率。

  2. 提升用户体验:免押服务降低了用户的经济负担,增强了用户对支付宝和微信平台的信任感和满意度。这种优质的用户体验有助于吸引更多用户,进一步提升平台的竞争力。

  3. 推动信用体系建设:免押系统以信用评估为基础,通过实际应用推动社会信用体系的完善。随着越来越多的人和机构参与到信用体系中来,社会的整体信用水平将得到提升。

四、项目前景

支付宝和微信的免押系统作为移动支付领域的一大创新,具有广阔的发展前景。随着技术的不断进步和数据的不断积累,免押系统的信用评估能力将越来越强,服务范围也将不断扩大。未来,免押系统有望覆盖更多领域,如共享单车、共享汽车、房屋租赁等,为更多用户提供便捷、高效的免押服务。

同时,随着社会信用体系的不断完善,免押服务将成为社会信任的重要体现。通过免押服务,人们可以更加便捷地获取各种资源和服务,推动社会的和谐发展。

package cn.eangaie.appcloud.controller;import cn.eangaie.appcloud.entity.*;
import cn.eangaie.appcloud.service.*;
import cn.eangaie.appcloud.util.*;
import com.alipay.api.AlipayApiException;
import com.alipay.api.response.AlipayMerchantItemFileUploadResponse;
import com.alipay.api.response.AlipayTradeCreateResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.lang.Nullable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @author Ean* @version 0.1.0* @Description* @create 2020-08-21 15:02* @since 0.1.0**/
@RestController
@Api(tags = "支付宝支付相关控制处理器")
@RequestMapping("my/")
@Slf4j
public class MyPayController {finalMyService myService;finalOrderService orderService;finalTradeRecService tradeRecService;@Value("${my.notify.freeze_notify_url}")private String freezeNotifyUrl;@Value("${my.notify.stagePayUrl}")private String stagePayUrl;@Value("${my.notify.firstStagePayUrl}")private String firstStagePayUrl;@Value("${my.notify.buyoutNotify}")private String buyoutNotify;@Value("${my.notify.MerchantApplyNotify}")private String MerchantApplyNotify;@Value("${my.notify.kprenNotify}")private String kprenNotify;finalStageBillService stageBillService;finalOrderbackService orderbackService;@AutowiredPayMapService payMapService;@AutowiredMerchantApplayService merchantApplayService;@AutowiredDistLineService distLineService;@AutowiredMessageUtil messageUtil;@AutowiredExtraService extraService;@AutowiredOrderTemplate orderTemplate;@AutowiredDeductionRecordService deductionRecordService;@AutowiredAttrService attrService;@AutowiredCommissionService commissionService;public MyPayController(MyService myService, OrderService orderService, TradeRecService tradeRecService, OrderbackService orderbackService, StageBillService stageBillService) {this.myService = myService;this.orderService = orderService;this.tradeRecService = tradeRecService;this.orderbackService = orderbackService;this.stageBillService = stageBillService;}/*** @return cn.eangaie.appcloud.entity.Result* @Author Ean* @Description 冻结查询接口,成功返回code0。失败-1* @Date 17:07 2021/7/3 0003* @Param [orderNo, orderRequestNo]**/@ApiOperation("冻结查询接口,成功返回code0。失败-1")@PostMapping("freezeQuery")public Result freezeQuery(String orderNo, String orderRequestNo) {try {String res = myService.queryRes(orderNo, orderRequestNo);if (null != res) {return ResultUtil.success();}} catch (AlipayApiException e) {e.printStackTrace();}return ResultUtil.error(-1, "冻结失败");}/*** @return cn.eangaie.appcloud.entity.Result* @Author Ean* @Description 在用--首期扣款接口。首期金额由前端计算。采用支付宝支付的方式。有对应的回调接口处理后续操作。* @Date 9:44 2021/6/23 0023* @Param [orderId]**/@ApiOperation("第一期支付,原先的接口是从预授权里边扣除,现在改成了使用支付宝支付的方式")@PostMapping("firstTradeV2")public Result firstTradeV2(String orderId) {if (StringUtils.isNotBlank(orderId) && StringUtils.isNotEmpty(orderId)) {Order order = orderService.selectById(orderId);if (null != order) {String tradeNo = CommonUtil.getNo();String title = "首期账单", desc = "首期账单记录", note = "";int periods = 1;StageBill stageBill = stageBillService.initBillOrUpdate(title, desc, note, order.getOrderId(), order.getOrderNo(), order.getOrderRequestNo(), order.getOrderAuthNo(), order.getUserId(), order.getOrderDeposit(), order.getOrderDeposit(), order.getOrderFirstAmount() + Integer.valueOf(order.getGoodExpenses()), periods, tradeNo);log.info("[ " + order.getOrderNo() + " ]创建首期订单[ " + stageBill.toString() + " ]");int firstAmount = order.getOrderFirstAmount();log.info("订单< " + order.getOrderNo() + " >执行首期扣款。本次扣款交易号< " + tradeNo + " >---本次扣款金额< " + firstAmount + " >");if (firstAmount == 0) {return ResultUtil.error(-1, "订单非分期订单,或首期扣款费用不允许为0");}String HbFqNum = null;if (null != order.getHbFqNum()) {HbFqNum = order.getHbFqNum();}String HbFqSellerPercent = null;if (null != order.getHbFqSellerPercent()) {HbFqSellerPercent = order.getHbFqSellerPercent();}String res = myService.myPay(stageBill.getStageBillAmout(), order.getUserUuid(), "首期租金支付", tradeNo, firstStagePayUrl, HbFqNum, HbFqSellerPercent).getTradeNo();return ResultUtil.success(res);}return ResultUtil.error(-1, "订单不允许为空!");}return ResultUtil.error(-1, "订单id不允许为空!");}@ApiOperation("订单扣除金额,成功则会创建扣除记录并更新订单剩余押金字段")@PostMapping("orderDudect")public Result orderDudect(int orderId, int amount) {Order order = orderService.selectById(orderId);if (null != order) {String outTradeNo = CommonUtil.getNo();try {String res = myService.tradepay(outTradeNo, order.getOrderAuthNo(), amount, order.getUserUuid(), "后台手动扣除", null, "");if (null == res) {throw new AlipayApiException();} else {log.info("订单[ " + order.getOrderNo() + " ]发起扣款,本次扣款编号[ " + outTradeNo + " ],本次扣款金额[ " + BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100)).setScale(2).doubleValue() + " ]");order.setOrderRestDeposit(order.getOrderRestDeposit() - amount);order.setOrderFinalpay(order.getOrderFinalpay() + amount);orderService.updateById(order);tradeRecService.insertRec(outTradeNo, order.getOrderNo(), amount, "后台手动扣除", 1);Long curr = System.currentTimeMillis();merchantApplayService.addMarchantIncome(order.getMerchantUserId(), amount, order, "扣除押金费用");
//                    merchantApplayService.addMerchantBalance(order.getMerchantUserId(),amount);distLineService.insertRec(order.getOrderId(), order.getUserId(), amount, String.valueOf(curr));return ResultUtil.success("扣款成功");}} catch (AlipayApiException e) {e.printStackTrace();deductionRecordService.createItem(order.getOrderNo(), outTradeNo, null, amount, order.getMerchantUserId());myService.closeOrder(outTradeNo);
//                log.error("订单[ " + order.getOrderNo() + "] 扣款解冻失败  本次扣款[ " + BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100)).setScale(2) + " ]分");return ResultUtil.error(-1, "退款异常,请联系管理员");}}return ResultUtil.error(-1, "订单不存在");}@ApiOperation("取消订单并解冻退款,订单只扣除第一期的情况下才允许调用。该接口之后退款第一期并解冻押金,然后将订单变为已取消的状态")@PostMapping("orderCancleAndRefu")public Result orderCancleAndRefu(int orderId) {Order order = orderService.selectById(orderId);String res = myService.orderCancleAndRefu(orderId);if ("ok".equals(res)) {Map<String, String> resMap = new HashMap<>();resMap.put("商品名称", order.getGoodTitle());messageUtil.sendKuaiDi100Msg(order.getUserTel(), resMap, "7075");/*订单中心同步状态*/try {myService.alipayMerchantOrderSync(orderTemplate.ClOSED(order));} catch (Exception e) {e.printStackTrace();}/*退款增加Attr库存*/String[] arr = CommonUtil.strToArr(order.getAttrIdList());if (arr.length > 0) {List<Attr> attrList = attrService.selectList(new EntityWrapper<Attr>().in("attr_id", arr));if (attrList.size() > 0) {int i = 0;int num = order.getAttrNum();for (Attr attr : attrList) {attr = attr.selectById();order.setAttrIdList(attr.getAttrId() + ",");attr.setAttrNum(attr.getAttrNum() + num);attrList.set(i++, attr);}attrService.updateAllColumnBatchById(attrList);}}List<Commission> commissionList = commissionService.selectList(new EntityWrapper<Commission>().eq("order_no", order.getOrderNo()));if (commissionList.size() > 0) {int i = 0;for (Commission commission : commissionList) {commission = commission.selectById();commission.setStatus(2);commissionList.set(i++, commission);}commissionService.updateAllColumnBatchById(commissionList);}return ResultUtil.success();}return ResultUtil.error(-1, res);}@ApiOperation("前端取消支付订单租金 解冻订单")@PostMapping("cancelOrderAndRefund")public Result cancelOrderAndRefund(int orderId) {Order order = orderService.selectById(orderId);String res = myService.orderCancleAndRefu(orderId);if ("ok".equals(res)) {try {myService.alipayMerchantOrderSync(orderTemplate.ClOSED(order));} catch (Exception e) {e.printStackTrace();}return ResultUtil.success();}return ResultUtil.error(-1, res);}@ApiOperation("归还解冻。如果逾期,会自动扣除违约金,并新增扣款记录")@PostMapping("refuAndUnfreeze")public Result refuAndUnfreeze(int orderId) {Order order = orderService.selectById(orderId);Long end = null;Long curr = null;Long t = null;if (order.getStatus() == 9) {if (null != order.getOrderEnd() && null != order.getOrderBackTime()) {//租赁中买断没有时间curr = order.getOrderBackTime();//使用归还时间字段计算逾期金额end = order.getOrderEnd();t = curr - end;} else {t = 0L;}} else {end = order.getOrderEnd();curr = TimeUtil.getToDayStemp();//获取今天凌晨的时间戳t = curr - end;}long t1 = 24 * 60 * 60 * 1000L;int day = (int) (t / t1);if ((order.getStatus() == 5 || order.getStatus() == 9) && t > 0 && t >= t1) {//逾期if (day >= 30) {//超出30天。禁用用户的平台免押权限orderService.banUserExemptPermission(order);}
//            int amount = order.getAttrAmount() * day * order.getAttrNum();int amount = order.getPenalAmount() * day;if (amount > order.getOrderRestDeposit()) {amount = order.getOrderRestDeposit();}String outTradeNo = CommonUtil.getNo();try {Integer resAmount = new BigDecimal(myService.queryRes(order.getOrderNo(), order.getOrderRequestNo())).multiply(BigDecimal.valueOf(100)).intValue();if (amount >= resAmount) {amount = resAmount;}if (amount == 0) {orderService.resetOrderUserExepmtStatus(order);order.setOrderBeamo(amount);order.setStatus(7);order.updateById();/*订单中心同步状态*/try {myService.alipayMerchantOrderSync(orderTemplate.EXERCISED(order));} catch (Exception e) {e.printStackTrace();}return ResultUtil.success("解冻成功!");} else {String res = myService.tradepay(outTradeNo, order.getOrderAuthNo(), amount, order.getUserUuid(), "扣除违约金并解冻", "complete", null);if (null != res) {order.setOrderRestDeposit(0);order.setOrderFinalpay(order.getOrderFinalpay() + amount);order.setOrderBeamo(order.getOrderBeamo()+amount);order.setStatus(7);order.updateById();orderService.resetOrderUserExepmtStatus(order);tradeRecService.insertRec(outTradeNo, order.getOrderNo(), amount, "扣除违约金", 1);
//                        merchantBack(order, amount);/*订单中心同步状态*/try {myService.alipayMerchantOrderSync(orderTemplate.RETURN_OVERDUE(order));} catch (Exception e) {e.printStackTrace();}/*抽佣*/merchantApplayService.addMarchantIncome(order.getMerchantUserId(), amount, order, "扣除逾期费用");return ResultUtil.success("解冻成功!");} else {throw new AlipayApiException();}}} catch (AlipayApiException e) {e.printStackTrace();deductionRecordService.createItem(order.getOrderNo(), outTradeNo, null, amount, order.getMerchantUserId());
//                myService.closeOrder(outTradeNo);
//                log.error("订单[ " + order.getOrderNo() + "] 扣款解冻失败  本次扣款[ " + BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100)).setScale(2) + " ]分");return ResultUtil.error(-1, "金额超出,或信息异常,请联系管理员查看订单情况");}}if (order.getStatus() == 9) {try {String outTradeNo = CommonUtil.getRamdonNo();Integer resAmount = new BigDecimal(myService.queryResAuth(order.getOrderNo(), order.getOrderRequestNo(),order.getOrderAuthNo())).multiply(BigDecimal.valueOf(100)).intValue();if (0 != resAmount) {String res = myService.unfreeze(outTradeNo, order.getOrderAuthNo(), resAmount, "解冻剩余押金");if (null != res) {orderService.resetOrderUserExepmtStatus(order);order.setOrderRestDeposit(0);order.setStatus(7);order.updateById();/*订单中心同步状态*/try {myService.alipayMerchantOrderSync(orderTemplate.EXERCISED(order));} catch (Exception e) {e.printStackTrace();}return ResultUtil.success("解冻成功!");}} else {order.setOrderRestDeposit(0);order.setStatus(7);order.updateById();orderService.resetOrderUserExepmtStatus(order);/*订单中心同步状态*/try {myService.alipayMerchantOrderSync(orderTemplate.EXERCISED(order));} catch (Exception e) {e.printStackTrace();}return ResultUtil.success("解冻成功!");}} catch (AlipayApiException e) {e.printStackTrace();log.error("订单[ " + order.getOrderNo() + "]解冻失败");return ResultUtil.error(-1, "解冻失败");}}return ResultUtil.error(-1, "订单不存在");}private void merchantBack(Order order, int amount) {Integer merchantUserId = order.getMerchantUserId();User user = null;if (null != merchantUserId && -1 != merchantUserId) {user = new User().selectById(merchantUserId);}/*订单创建不需要添加分销记录,直接在订单变成租赁中的时候才添加进分销队列*/if (null != user) {user.setUserBalance(user.getUserBalance() + amount);user.setUserTotalBalance(user.getUserTotalBalance() + amount);user.updateById();}}/*** @return cn.eangaie.appcloud.entity.Result* @Author Ean* @Description* @Date 11:01 2021/4/29 0029* @Param [orderId]**/@ApiOperation("订单冻结接口")@PostMapping("orderFreezeDeposit")public Result orderFreezeDeposit(int orderId) {Order order = orderService.selectById(orderId);
//        int firstAmount = order.getOrderFirstAmount();if (null == order) {return ResultUtil.error(-1, "订单不存在");}String res = null;try {String category = order.getZmCategory();if (null == category) {category = "RENT_DIGITAL";}res = myService.freeze(order.getOrderNo(), order.getOrderRequestNo(), order.getOrderDeposit(), freezeNotifyUrl, category);} catch (AlipayApiException e) {e.printStackTrace();return ResultUtil.error(-1, "获取冻结字符串失败");}if (null == res) {return ResultUtil.error(-1, "获取冻结字符串失败");}return ResultUtil.success(res, "返回的预授权额度是押金+首期租金(orderFirstAmount)");}@ApiOperation("支付宝直接支付接口,sub是订单标题,比如: 押金支付 type=1->直接买断 type=2->租赁中买断  type=3->商户申请买断")@PostMapping("myPay")public Result myPay(int amount, String uuid, String sub, String outTradeNo, @Nullable Integer type, @Nullable Integer buyoutOrderId) {Map map = new HashMap();String stagePayUrl = null;if (null != type) {if (null != type && (type == 1 || type == 2)) {stagePayUrl = buyoutNotify;map.put("buyoutOrderId", buyoutOrderId);map.put("type", type);map.put("amount", amount);map.put("outTradeNo", outTradeNo);}if (type == 3) {stagePayUrl = MerchantApplyNotify;}if (type == 4) {stagePayUrl = kprenNotify;}}AlipayTradeCreateResponse response = myService.myPay(amount, uuid, sub, outTradeNo, stagePayUrl, null, null);if (null == response) {return ResultUtil.error(-1, "支付调用失败");}String res = response.getTradeNo();payMapService.create(response.getOutTradeNo(), map);return ResultUtil.success(res);}/*** @return cn.eangaie.appcloud.entity.Result* @Author Ean* @Description 分期账单前端主动支付调用的接口, 新增了回调链接, 后端来更新账单状态* @Date 15:22 2021/4/29 0029* @Param [amount, uuid, sub, outTradeNo:分期账单的账单编号]**/@ApiOperation("分期账单前端主动支付调用的接口")@PostMapping("stageBillPay")public Result stageBillPay(int amount, String uuid, String sub, String outTradeNo) {StageBill stageBill = stageBillService.selectOne(new EntityWrapper().eq("stage_bill_no", outTradeNo));stageBill.setStageBillNo(CommonUtil.getNo());stageBill.updateById();AlipayTradeCreateResponse res = myService.myPay(amount, uuid, sub, stageBill.getStageBillNo(), stagePayUrl, null, null);if (null == res) {return ResultUtil.error(-1, "支付调用失败");}return ResultUtil.success(res.getTradeNo());}@ApiOperation("同步交易记录,1-履约 2-违约")@GetMapping("syncTradeRec")public Result syncTradeRec(int tradeRecId, int syncType) {TradeRec tradeRec = tradeRecService.selectById(tradeRecId);if (null != tradeRec) {String reqNo = CommonUtil.getNo();try {String status = syncType == 1 ? "COMPLETE" : "VIOLATED";String info = "{\"status\":\"" + status + "\"}";myService.sync(tradeRec.getTradeNo(), reqNo, info);return ResultUtil.success();} catch (AlipayApiException e) {e.printStackTrace();return ResultUtil.error(-1, "调用支付宝同步接口异常");}}return ResultUtil.error(-1, "记录不存在");}/*** 退款解冻*/@PostMapping("han/unfreeze")public Result unfreeze(String authNo, int amount) {String outTradeNo = CommonUtil.getNo();String body = "押金解冻";String res = null;try {res = myService.unfreeze(authNo, amount, body);} catch (AlipayApiException e) {e.printStackTrace();return ResultUtil.error(-1, "解冻异常");}return ResultUtil.success(res);}/*** 退款解冻*/@PostMapping("han/freeze")public Result freeze(String orderNo, String orderRequestNo, int amount, String category) {String body = "押金冻结";String res = null;try {if (null == category) {category = "RENT_DIGITAL";}res = myService.freeze(orderNo, orderRequestNo, amount, null, category);} catch (AlipayApiException e) {e.printStackTrace();return ResultUtil.error(-1, "订单冻结异常");}return ResultUtil.success(res);}/*** 退款解冻*/@PostMapping("han/cusTrade")public Result cusTrade(String authNo, int amount, String uuid, String authConfirm) {String body = "【测试】-扣除";String no = CommonUtil.getNo();String res = myService.tradepay(no, authNo, amount, uuid, body, authConfirm, null);if (null == res) {log.error("authNo[ " + authNo + " ]转支付扣款调用失败");}AlipayTradeQueryResponse queryRes = null;try {queryRes = myService.tradeQuery(no);String tradeStatus = queryRes.getTradeStatus();String code = queryRes.getCode();if (code.equals("10000") && null != tradeStatus) {} else if (code.equals("40004")) {} else {return ResultUtil.error(-1, "查询调用失败");}return ResultUtil.success(queryRes);} catch (AlipayApiException e) {e.printStackTrace();return ResultUtil.error(-1, "查询调用失败");}}@ApiOperation("订单中心商品文件上传接口")@GetMapping({"FileUpload"})public Result FileUpload() throws AlipayApiException {AlipayMerchantItemFileUploadResponse response = this.myService.alipayMerchantItemFileUpload();if (response.getCode().equals("10000") && null != response.getMaterialId()) {Extra extra = extraService.selectOne(new EntityWrapper<Extra>().eq("extra_type", 987));extra.setExtraCon(response.getMaterialId());extra.updateById();return ResultUtil.success();} else {return ResultUtil.error(-1, response.getSubMsg());}}}

总之,支付宝和微信的免押系统以其独特的优势和广阔的应用前景,必将在未来的发展中发挥越来越重要的作用。我们期待这一创新技术能够为用户带来更多便利,为社会创造更多价值。

 @Overridepublic String freeze(String outOrderNo, String outRequestNo, int amount, String notifyUrl, String category) throws AlipayApiException {BigDecimal _amount = BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(100)).setScale(2);AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", appid, private_key, "json", "utf-8", public_key, "RSA2");AlipayFundAuthOrderAppFreezeRequest request = new AlipayFundAuthOrderAppFreezeRequest();AlipayFundAuthOrderAppFreezeModel model = new AlipayFundAuthOrderAppFreezeModel();model.setOrderTitle("押金冻结");model.setOutOrderNo(outOrderNo);model.setOutRequestNo(outRequestNo);model.setPayeeUserId(sellerId);//payee_user_id,Payee_logon_id不能同时为空model.setProductCode("PRE_AUTH_ONLINE");//PRE_AUTH_ONLINE为固定值,不要替换model.setAmount(String.valueOf(_amount));//需要支持信用授权,该字段必传model.setExtraParam("{\"category\":\"RENT_HOME_CARE\",\"serviceId\":\"2023022100000000000095194600\"}"); //outStoreAlias将在用户端信用守护、支付信息、账单详情页展示request.setBizModel(model);request.setNotifyUrl(notifyUrl);//异步通知地址,必填,该接口只通过该参数进行异步通知AlipayFundAuthOrderAppFreezeResponse response = alipayClient.sdkExecute(request);//注意这里是sdkExecute,可以获取签名参数if (response.isSuccess()) {return response.getBody();} else {log.error("outOrderNo为< " + outOrderNo + " >的订单冻结失败");}return null;}

这篇关于【源码】关于支付宝和微信小程序的芝麻免押租赁平台建设的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/863146

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、