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

一、项目背景

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

二、项目功能结构

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

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

  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.mzph.cn/news/781914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析大语言模型显存占用:训练与推理

深入解析大语言模型显存占用&#xff1a;训练与推理 文章脉络 估算模型保存大小 估算模型在训练时占用显存的大小 全量参数训练 PEFT训练 估算模型在推理时占用显存的大小 总结 对于NLP领域的从业者和研究人员来说&#xff0c;有没有遇到过这样一个场景&#xff0c;你的…

java 溯本求源之基础(九)之 javap

简介 Java 类文件反汇编工具&#xff08;javap&#xff09;是一个命令行工具&#xff0c;用于反汇编一个或多个 Java 类文件。反汇编的输出内容取决于使用的选项。当不使用任何选项时&#xff0c;javap 命令将打印传递给它的类的包、受保护的和公共字段以及方法。javap 命令将其…

某东推荐的十大3C热榜第一名!2024随身wifi靠谱品牌推荐!2024随身wifi怎么选?

一、鼠标金榜&#xff1a;戴尔 商务办公有线鼠标 售价:19.9&#xffe5; 50万人好评 二、平板电脑金榜&#xff1a;Apple iPod 10.2英寸 售价:2939&#xffe5; 200万人好评 三、随身WiFi金榜&#xff1a;格行随身WiFi 售价:69&#xffe5; 15万人好评 四、游戏本金榜&#xff…

C++多线程:unique_lock源码分析与使用详解(六)

1、unique_lock介绍 unique_lock取代lock_guard&#xff0c;unique_lock更像lock_guard的升级版&#xff0c;也是mutex的管家&#xff01; unique_lock是个类模板&#xff0c;工作中一般使用lock_guard&#xff08;推荐使用&#xff09; lock_guard取代了mutex的lock()和unloc…

Gromacs模拟一:配体-双链蛋白质复合物体系准备

1、蛋白质的准备&#xff1a; 在RCSB网站下载想要的蛋白晶体&#xff08;教程里是3htb&#xff09;&#xff0c;用notepad等编辑器或是分子可视化软件除去里面的非蛋白分子或离子。 这里采用的是一个经过分子对接后的蛋白质pdb和配体小分子的pdb。 教程里提到的配体是2-丙基…

【Java多线程】5——Lock底层原理

5 Lock底层原理 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&…

新能源汽车充电桩常见类型及充电桩站场的智能监管方案

随着新能源汽车市场的迅猛发展&#xff0c;充电桩作为支持其运行的基础设施&#xff0c;也呈现出多样化的类型。这些充电桩不仅在外形和功能上存在差异&#xff0c;更在充电速度、充电方式以及使用场景等方面展现出独特的优势。 一、充电桩类型及区别 1、慢充桩&#xff08;交…

C语言经典例题(14) --- 反斜线形图案、正斜线形图案、X形图案、空心正方形图案、空心三角形图案

1.反斜线形图案 题目描述: KK学习了循环&#xff0c;BoBo老师给他出了一系列打印图案的练习&#xff0c;该任务是打印用“*”组成的反斜线形图案。 输入描述: 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成反…

Go 之 Gin 框架

Gin 是一个 Go (Golang) 编写的轻量级 web 框架&#xff0c;运行速度非常快&#xff0c;擅长 Api 接口的高并发&#xff0c;如果项目的规模不大&#xff0c;业务相对简单&#xff0c;这个时候我们也推荐您使用 Gin&#xff0c;特别适合微服务框架。 简单路由配置 package mai…

Linux查看当前目录并输出到文件

进入想要查看的目录 rootubuntu20:/# ls bin boot cdrom dev etc home lib lib32 lib64 libx32 lostfound media mmkv.default mmkv.default.crc mnt opt path proc root run sbin snap srv swapfile sys tmp usr var执行命令 ls -d */ | tr -d /…

Linux 系统快速安装 nginx (新手版)

1、安装所需依赖 yum -y install pcre pcre-devel gcc openssl openssl-devel zlib zlib-devel &#xff08;pcre&#xff1a; 包括 perl 兼容的正则表达式库 openssl&#xff1a; 支持安全传输协议https(和财务有关系的请求会走的协议) 创建运行用户、组 useradd -M -…

变分信息瓶颈

变分信息瓶颈和互信息的定义 1 变分信息瓶颈 定义&#xff1a;变分信息瓶颈&#xff08;Variational Information Bottleneck&#xff09;是一种用于学习数据表示的方法&#xff0c;它旨在通过最小化输入和表示之间的互信息来实现数据的压缩和表示学习。这种方法通常用于无监…

clickhouse 查询group 分组最大值的一行数据。

按照 sql_finger_md5 分组取query_time_ms 最大的一行数据。 使用any函数可以去匹配到的第一行数据&#xff0c;所以可以先让数据按照query_time_ms 排序&#xff0c;然后再使用group by 和any结合取第一行数据&#xff0c;就是最大值的那一行数据。 selectany (time) as time…

JavaScript学习笔记

本篇文章是本人在学习JS时所记录的笔记&#xff0c;记录的知识点比较基础&#xff0c;但是较为详细。 使用 在html中有两种方式可以使用javascript 1.外引 <script src"...js"></script> 调用js文件时调用的是拷贝体 2.内嵌 <script>......…

【BlossomRPC】服务端与客户端请求Handler

文章目录 客户端Handler服务端Handler RPC项目 配置中心项目 网关项目 客户端Handler 承接上文&#xff0c;客户端的Handler其实就比较简单了&#xff0c;因为客户端作为接收数据的时候&#xff0c;我们只需要从上文提到的Cache中通过reqId的方式拿到Future/Promise对象&…

接口自动化框架搭建(一):框架介绍

1&#xff0c;背景目的 最近在搭建接口自动化框架&#xff0c;打算写个专栏&#xff0c;方便自己查找和他人学习。有不正确的地方&#xff0c;欢迎指正。 2&#xff0c;技术框架 pythonpytestalllurejenkins多进程钉钉消息通知 3&#xff0c;版本 推荐方法&#xff1a;创建…

【数据结构与算法】排序

概述 最容易想到的排序&#xff0c;从旧数组中找到一个最小的&#xff0c;不断放入新的数组中。&#xff08;不使用数组的slice等方法是因为会使效率变得更慢&#xff09; let arr [3, 5, 6, 7, 1, 2, 4, 9, 8]function getMin(arr) {if (arr null || arr.length 0) retur…

Oracle VM(虚拟机)性能监控工具

Oracle VM是一个独立的虚拟化环境&#xff0c;由 Oracle 提供支持和设计&#xff0c;旨在为运行虚拟机提供轻量级、安全的基于服务器的平台。Oracle VM 能够在受支持的虚拟化环境中部署操作系统和应用软件&#xff0c;Oracle VM 将用户和管理员与底层虚拟化技术隔离开来&#x…

cmake编译faiss源码记录

文章目录 简介下载源码安装环境编译 简介 Faiss&#xff08;Facebook AI Similarity Search&#xff09;是一个由Facebook AI研发并开源的&#xff0c;用于大规模向量检索的库。其核心算法采用了聚类、压缩和量化等技术&#xff0c;以优化最近邻搜索的效率和准确性。Faiss提供…

ctfshow xxe web373-378

web373 libxml_disable_entity_loader(false)&#xff1a;这行代码用于启用实体加载器&#xff0c;允许加载外部实体。 $xmlfile file_get_contents(php://input)&#xff1a;从输入流中读取XML数据并存储在 $xmlfile 变量中。 $dom->loadXML($xmlfile, LIBXML_NOENT |…