From a7359ca2d8337b0796e36f3a3722790647bd7c62 Mon Sep 17 00:00:00 2001 From: zhanglin <852614290@qq.com> Date: 星期日, 23 七月 2023 16:04:10 +0800 Subject: [PATCH] 微信支付,支付与结果通知 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java | 2 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java | 10 ++++- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/tools/request/ecommerce/profitsharing/ProfitSharingAddReceiverRequest.java | 3 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 5 +- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 70 ++++++++++++++++++++++++++++++++++- 5 files changed, 83 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java index f885ddf..5dc6de6 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java @@ -118,8 +118,7 @@ String tradeStateEnum=transaction.getTradeState().toString(); if(tradeStateEnum.equals("success")){ - String outTradeNo=transaction.getOutTradeNo(); - orderService.payBack(outTradeNo); + orderService.payBack(transaction); } Map map=new HashMap(); @@ -129,4 +128,11 @@ return map; } + @RequestMapping(value = "/shareNotify", method = RequestMethod.POST) + @ApiOperation(value = "微信支付通知") + public Map shareNotify(HttpServletRequest request, HttpServletResponse response) { + + return null; + } + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java index 20d618b..bfc24aa 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java @@ -104,6 +104,8 @@ @TableField("back_time") private Date backTime; + @TableField("transaction_id") + private String transactionId; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index a3440b9..70fd562 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -13,6 +13,7 @@ import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; +import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.ruoyi.order.domain.pojo.account.OrderRefund; import com.ruoyi.order.domain.pojo.account.PaymentMessage; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; @@ -25,6 +26,7 @@ import com.ruoyi.order.service.order.OrderGoodsService; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.order.service.order.UserServiceRecordService; +import com.ruoyi.order.tools.request.ecommerce.profitsharing.ProfitSharingApplyRequest; import com.ruoyi.order.tools.request.pay.combine.CombineTransactionsJsRequest; import com.ruoyi.order.tools.service.ProfitsSharingService; import com.ruoyi.system.api.constant.AppErrorConstant; @@ -42,6 +44,7 @@ import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; import com.wechat.pay.java.service.payments.jsapi.model.*; import org.redisson.api.RLock; @@ -712,6 +715,13 @@ request.setPayer(payer); + //设置订单允许分账 秒杀活动才允许分账 + /* if(order.getOrderFrom()==2){ + SettleInfo settleInfo=new SettleInfo(); + settleInfo.setProfitSharing(true); + request.setSettleInfo(settleInfo); + }*/ + //返回前端唤醒支付结果信息 PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request); @@ -1035,6 +1045,40 @@ agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); // 调用支付 + PrepayRequest request = new PrepayRequest(); + Amount amount = new Amount(); + amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString())); + request.setAmount(amount); + request.setAppid(this.appId); + request.setMchid(this.mchId); + request.setDescription(order.getGoodsInfo()); + request.setNotifyUrl(this.notifyUrl); + request.setOutTradeNo(order.getOrderId()); + Payer payer = new Payer(); + // TODO 获取openID + payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); + + request.setPayer(payer); + + //设置订单允许分账 秒杀活动才允许分账 + if(order.getOrderFrom()==2){ + SettleInfo settleInfo=new SettleInfo(); + settleInfo.setProfitSharing(true); + request.setSettleInfo(settleInfo); + } + + + //返回前端唤醒支付结果信息 + PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request); + + appPlaceOrderVo.setAppId(this.appId); + appPlaceOrderVo.setTimeStamp(res.getTimeStamp()); + appPlaceOrderVo.setNonceStr(res.getNonceStr()); + appPlaceOrderVo.setPackageStr(res.getPackageVal()); + appPlaceOrderVo.setTradeType(res.getSignType()); + appPlaceOrderVo.setPaySign(res.getPaySign()); + + //生成自动取消订单延时任务 Integer delayTime = 30; if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ @@ -1303,7 +1347,13 @@ SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); merVerifyOrderVo.setUserName(sysUser.getNickName()); merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); + // + if(order.getOrderFrom()==2){ + + //profitsSharingService.applyProfitSharing(); + } return merVerifyOrderVo; + } /** @@ -3205,12 +3255,13 @@ * @description 订单支付回调 * @author jqs * @date 2023/7/13 17:57 - * @param orderId + * @param Transaction * @return void */ @Override - public void payBack(String orderId) { + public void payBack(Transaction transaction) { // 更新订单状态 + String orderId=transaction.getOutTradeNo(); Order order = this.getById(orderId); order.setOrderStatus(2); order.setPayTime(new Date()); @@ -3304,7 +3355,22 @@ } activityTotalChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityTotal(activityTotalChangeDto); + + + //活动订单进行分账 + ProfitSharingApplyRequest request=new ProfitSharingApplyRequest(); + request.setAppid(this.appId); + request.setSubMchid(""); + request.setTransactionId(transaction.getTransactionId()); + profitsSharingService.applyProfitSharing(request); } + //生成支付记录 + OrderPayment orderPayment = new OrderPayment(); + + + + + } /** diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index aeb0925..997b2f3 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -10,6 +10,7 @@ import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import java.math.BigDecimal; import java.util.List; @@ -412,10 +413,10 @@ * @description 订单支付回调 * @author jqs * @date 2023/7/13 17:57 - * @param orderId + * @param Transaction transaction * @return void */ - void payBack(String orderId); + void payBack(Transaction transaction); /** * 取消订单 diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/tools/request/ecommerce/profitsharing/ProfitSharingAddReceiverRequest.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/tools/request/ecommerce/profitsharing/ProfitSharingAddReceiverRequest.java index f48ba92..bd208b0 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/tools/request/ecommerce/profitsharing/ProfitSharingAddReceiverRequest.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/tools/request/ecommerce/profitsharing/ProfitSharingAddReceiverRequest.java @@ -7,7 +7,8 @@ /** * <pre> - * 1. 电商平台可通过此接口添加分账接收方,建立分账接收方列表。后续通过发起分账请求,将电商平台下的二级商户结算后的资金,分给分账接收方列表中具体的分账接收方。 2. 添加的分账接收方统一都在电商平台维度进行管理,其他二级商户,均可向该分账接收方列表中的接收方进行分账,避免在二级商户维度重复维护。 + * 1. 电商平台可通过此接口添加分账接收方,建立分账接收方列表。后续通过发起分账请求,将电商平台下的二级商户结算后的资金,分给分账接收方列表中具体的分账接收方。 + * 2. 添加的分账接收方统一都在电商平台维度进行管理,其他二级商户,均可向该分账接收方列表中的接收方进行分账,避免在二级商户维度重复维护。 * 文档地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/profitsharing/chapter3_7.shtml * </pre> */ -- Gitblit v1.7.1