Просмотр исходного кода

增加支付宝 QR 支付的回调

YunaiV 3 лет назад
Родитель
Сommit
aa77eb029f

+ 1 - 0
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayQrPayClient.java

@@ -53,6 +53,7 @@ public class AlipayQrPayClient extends AbstractPayClient<AlipayPayClientConfig>
         // 构建 AlipayTradePrecreateRequest
         AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
         request.setBizModel(model);
+        request.setNotifyUrl(reqDTO.getNotifyUrl());
 
         // 执行请求
         AlipayTradePrecreateResponse response;

+ 5 - 1
yudao-framework/yudao-spring-boot-starter-biz-pay/src/test-integration/java/cn/iocoder/yudao/framework/core/client/impl/PayClientFactoryImplTest.java

@@ -13,6 +13,7 @@ import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayWapPayClient
 import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
 import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPubPayClient;
 import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
+import com.alipay.api.response.AlipayTradePrecreateResponse;
 import org.junit.jupiter.api.Test;
 
 import java.io.FileInputStream;
@@ -75,6 +76,7 @@ public class PayClientFactoryImplTest {
      * {@link AlipayQrPayClient}
      */
     @Test
+    @SuppressWarnings("unchecked")
     public void testCreatePayClient_ALIPAY_QR() {
         // 创建配置
         AlipayPayClientConfig config = new AlipayPayClientConfig();
@@ -89,8 +91,10 @@ public class PayClientFactoryImplTest {
         PayClient client = payClientFactory.getPayClient(channelId);
         // 发起支付
         PayOrderUnifiedReqDTO reqDTO = buildPayOrderUnifiedReqDTO();
-        CommonResult<?> result = client.unifiedOrder(reqDTO);
+        reqDTO.setNotifyUrl("http://niubi.natapp1.cc/api/pay/order/notify/alipay-qr/1"); // TODO @tina: 这里改成你的 natapp 回调地址
+        CommonResult<AlipayTradePrecreateResponse> result = (CommonResult<AlipayTradePrecreateResponse>) client.unifiedOrder(reqDTO);
         System.out.println(JsonUtils.toJsonString(result));
+        System.out.println(result.getData().getQrCode());
     }
 
     /**

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

@@ -51,11 +51,25 @@ public class PayOrderController {
     // ========== 支付渠道的回调 ==========
 
     @PostMapping("/notify/wx-pub/{channelId}")
-    @ApiOperation("通知微信公众号的结果")
+    @ApiOperation("通知微信公众号支付的结果")
     public String notifyWxPayOrder(@PathVariable("channelId") Long channelId,
                                    @RequestBody String xmlData) throws Exception {
         payOrderCoreService.notifyPayOrder(channelId, PayChannelEnum.WX_PUB.getCode(), xmlData);
         return "success";
     }
 
+    @PostMapping("/notify/alipay-qr/{channelId}")
+    @ApiOperation("通知支付宝扫码支付的结果")
+    public String notifyAlipayQrPayOrder(@PathVariable("channelId") Long channelId,
+                                         @RequestBody String data) {
+        return "success";
+    }
+
+    @RequestMapping("/notify/test")
+    @ApiOperation("通知的测试接口")
+    public String notifyTest() {
+//        System.out.println(data);
+        return "success";
+    }
+
 }