Commit 6cadafb3f10c5605d50b939eab7248f9bf03e63a

Authored by YunaiV
1 parent a1105ffd

code review 支付宝 wap 的逻辑

yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/PayProperties.java
... ... @@ -6,8 +6,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
6 6 import org.springframework.validation.annotation.Validated;
7 7  
8 8 import javax.validation.constraints.NotEmpty;
9   -import javax.validation.constraints.NotNull;
10   -import java.time.Duration;
11 9  
12 10 @ConfigurationProperties(prefix = "yudao.pay")
13 11 @Validated
... ... @@ -25,11 +23,11 @@ public class PayProperties {
25 23 * 退款回调地址
26 24 * 注意点,同 {@link #payNotifyUrl} 属性
27 25 */
28   - @NotNull(message = "短信发送频率不能为空")
  26 + @NotEmpty(message = "短信发送频率不能为空")
29 27 @URL(message = "退款回调地址的格式必须是 URL")
30 28 private String refundNotifyUrl;
31 29  
32   -
  30 + // TODO @jason:改成 payReturnUrl 。另外,可以加个 @NotEmpty,避免未填写
33 31 /**
34 32 * 支付完成的返回地址
35 33 */
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/NotifyDataDTO.java
... ... @@ -6,12 +6,15 @@ import lombok.ToString;
6 6  
7 7 import java.util.Map;
8 8  
  9 +// TODO @jason:NotifyDataDTO=》PayNotifyDataDTO。另外注释记得加起来哈
9 10 @Data
10 11 @ToString
11 12 @Builder
12 13 public class NotifyDataDTO {
13 14  
  15 + // TODO @jason:这个字段,改成 body
14 16 private String origData;
  17 + // TODO @jason:这个字段如果暂时没用,可以去掉。
15 18 //1:xml 2:form
16 19 private int format;
17 20  
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderUnifiedReqDTO.java
... ... @@ -44,13 +44,15 @@ public class PayOrderUnifiedReqDTO {
44 44 @Length(max = 128, message = "商品描述信息长度不能超过128")
45 45 private String body;
46 46 /**
47   - * 支付结果的回调地址
  47 + * 支付结果的 notify 回调地址
48 48 */
49 49 @NotEmpty(message = "支付结果的回调地址不能为空")
50   - @URL(message = "支付结果的回调地址必须是 URL 格式")
  50 + @URL(message = "支付结果的 notify 回调地址必须是 URL 格式")
51 51 private String notifyUrl;
52   -
53   - @URL(message = "支付结果的return 必须是 URL 格式")
  52 + /**
  53 + * 支付结果的 return 回调地址
  54 + */
  55 + @URL(message = "支付结果的 return 回调地址必须是 URL 格式")
54 56 private String returnUrl;
55 57  
56 58 // ========== 订单相关字段 ==========
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayCodeMapping.java
... ... @@ -19,7 +19,7 @@ public class AlipayPayCodeMapping extends AbstractPayCodeMapping {
19 19 return GlobalErrorCodeConstants.SUCCESS;
20 20 }
21 21 // alipay wap api code 返回为null, 暂时定为-9999
22   - if(Objects.equals(apiCode, "-9999")){
  22 + if(Objects.equals(apiCode, "-9999")){ // TODO @jason:空格要注意哈。if () {
23 23 return GlobalErrorCodeConstants.SUCCESS;
24 24 }
25 25 return null;
... ...
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayWapPayClient.java
... ... @@ -51,6 +51,7 @@ public class AlipayWapPayClient extends AbstractPayClient<AlipayPayClientConfig>
51 51 model.setTotalAmount(calculateAmount(reqDTO.getAmount()).toString());
52 52 model.setProductCode("QUICK_WAP_PAY"); // TODO 芋艿:这里咋整
53 53 //TODO 芋艿:这里咋整 jason @芋艿 可以去掉吧,
  54 + // TODO @jason: 这个支付方式,需要有 sellerId 么?
54 55 //model.setSellerId("2088102147948060");
55 56 model.setTimeExpire(DateUtil.format(reqDTO.getExpireTime(),"yyyy-MM-dd HH:mm:ss"));
56 57 // TODO 芋艿:userIp
... ... @@ -76,7 +77,7 @@ public class AlipayWapPayClient extends AbstractPayClient<AlipayPayClientConfig>
76 77 }
77 78 }
78 79  
79   -
  80 + // TODO @jason: 注释记得补下哈
80 81 /**
81 82 * //https://opendocs.alipay.com/open/203/105286
82 83 * @param data 通知结果
... ... @@ -92,4 +93,5 @@ public class AlipayWapPayClient extends AbstractPayClient<AlipayPayClientConfig>
92 93 .successTime(DateUtil.parse(params.get("notify_time"), "yyyy-MM-dd HH:mm:ss"))
93 94 .data(data.getOrigData()).build();
94 95 }
  96 +
95 97 }
... ...
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayOrderController.java
... ... @@ -79,13 +79,14 @@ public class PayOrderController {
79 79 @PostMapping(value = "/notify/alipay-wap/{channelId}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
80 80 @ApiOperation("支付宝wap页面回调")
81 81 public String notifyAliPayWapPayOrder(@PathVariable("channelId") Long channelId,
82   - @RequestParam Map<String, String> params,
83   - @RequestBody String originData) throws Exception {
  82 + @RequestParam Map<String, String> params,
  83 + @RequestBody String originData) throws Exception {
84 84 //TODO @jason 校验 是否支付宝调用。 使用 支付宝publickey payclient 或许加一个校验方法
85 85 payOrderCoreService.notifyPayOrder(channelId, PayChannelEnum.ALIPAY_WAP.getCode(), NotifyDataDTO.builder().params(params).origData(originData).build());
86 86 return "success";
87 87 }
88 88  
  89 + // TODO @jason 如果有些字段不注释,可以删除哈。不然 IDEA 会报警
89 90 /**
90 91 * https://opendocs.alipay.com/open/203/105285#%E5%89%8D%E5%8F%B0%E5%9B%9E%E8%B7%B3%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E
91 92 * @param channelId
... ...
yudao-user-server/src/main/resources/static/pay_alipay_wap.html
... ... @@ -14,6 +14,7 @@
14 14 <div id="dynamic_form"></div>
15 15 </body>
16 16 <script>
  17 + // TODO @jason:copy 过来后,有些注释要改过来哈
17 18 let shopOrderId = undefined;
18 19 let payOrderId = undefined;
19 20 let server = 'http://127.0.0.1:28080';
... ...
yudao-user-server/src/main/resources/static/pay.html renamed to yudao-user-server/src/main/resources/static/pay_wx_pub.html