Эх сурвалжийг харах

增加支付回调地址的配置

YunaiV 3 жил өмнө
parent
commit
bac30d47b7

+ 5 - 4
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayOrderCoreServiceImpl.java

@@ -130,7 +130,7 @@ public class PayOrderCoreServiceImpl implements PayOrderCoreService {
         // 商户相关字段
         unifiedOrderReqDTO.setMerchantOrderId(order.getMerchantOrderId())
                 .setSubject(order.getSubject()).setBody(order.getBody())
-                .setNotifyUrl(genChannelPayNotifyUrl(reqDTO.getChannelCode()));
+                .setNotifyUrl(genChannelPayNotifyUrl(channel));
         // 订单相关字段
         unifiedOrderReqDTO.setAmount(order.getAmount()).setExpireTime(order.getExpireTime());
         CommonResult<?> unifiedOrderResult = client.unifiedOrder(unifiedOrderReqDTO);
@@ -145,12 +145,13 @@ public class PayOrderCoreServiceImpl implements PayOrderCoreService {
     /**
      * 根据支付渠道的编码,生成支付渠道的回调地址
      *
-     * @param channelCode 支付渠道的编码
+     * @param channel 支付渠道
      * @return 支付渠道的回调地址
      */
-    private String genChannelPayNotifyUrl(String channelCode) {
+    private String genChannelPayNotifyUrl(PayChannelDO channel) {
         // _ 转化为 - 的原因,是因为 URL 我们统一采用中划线的原则
-        return payProperties.getPayNotifyUrl() + "/" + StrUtil.replace(channelCode, "_", "-");
+        return payProperties.getPayNotifyUrl() + "/" + StrUtil.replace(channel.getCode(), "_", "-")
+                + "/" + channel.getId();
     }
 
     private String generateOrderExtensionNo() {

+ 3 - 2
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayOrderController.java

@@ -49,9 +49,10 @@ public class PayOrderController {
 
     // ========== 支付渠道的回调 ==========
 
-    @PostMapping("/notify/wx-pub")
+    @PostMapping("/notify/wx-pub/{channelId}")
     @ApiOperation("通知微信公众号的结果")
-    public String notifyWxPayOrder(@RequestBody String xmlData) {
+    public String notifyWxPayOrder(@PathVariable("channelId") Long channelId,
+                                   @RequestBody String xmlData) {
         System.out.println(xmlData);
         return "success";
     }