xiongzhu 3 anni fa
parent
commit
c8de68b88c

+ 1 - 0
src/main/java/com/izouma/nineth/dto/PayQuery.java

@@ -18,6 +18,7 @@ public class PayQuery {
     private boolean       exist;
     private String        msg;
     private PayStatus     status;
+    private String        orderId;
     private BigDecimal    amount;
     private LocalDateTime createTime;
     private LocalDateTime payTime;

+ 3 - 0
src/main/java/com/izouma/nineth/service/SandPayService.java

@@ -507,6 +507,9 @@ public class SandPayService {
             if (StringUtils.isNotEmpty(body.getString("payTime"))) {
                 query.setPayTime(LocalDateTime.parse(body.getString("payTime"), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
             }
+            if (StringUtils.isNotEmpty(body.getString("oriOrderCode"))) {
+                query.setOrderId(body.getString("oriOrderCode"));
+            }
             switch (body.getString("orderStatus")) {
                 case "00":
                     query.setStatus(PayStatus.SUCCESS);

+ 1 - 2
src/main/java/com/izouma/nineth/service/UserBankCardService.java

@@ -77,8 +77,7 @@ public class UserBankCardService {
         payEaseService.bindCardCaptcha(bindCardId);
     }
 
-    public void
-    unbind(Long userId) {
+    public void unbind(Long userId) {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         userBankCardRepo.findByUserId(userId).forEach(userBankCard -> {
             if (StringUtils.isNotEmpty(userBankCard.getBindCardId())) {

+ 20 - 41
src/test/java/com/izouma/nineth/PayOrderTest.java

@@ -13,47 +13,26 @@ public class PayOrderTest extends ApplicationTests {
 
     @Test
     public void refund() {
-        for (int orderId : new int[]{
-                7587002,
-                7587102,
-                7587101,
-                7587577,
-                7587001,
-                7587100,
-                7587000,
-                7587574,
-                7586999,
-                7587573,
-                7586998,
-                7586997,
-                7587571,
-                7587569,
-                7587570,
-                7587568,
-                7586996,
-                7586995,
-                7586993,
-                7587567,
-                7586916,
-                7587096,
-                7586915,
-                7586992,
-                7587094,
-                7587091,
-                7587093,
-                7587090,
-                7586991,
-                7586914,
-                7586913,
-                7587089,
-                7586990,
-                7587088,
-                7586989
-        }) {
-            PayQuery query = orderPayService.query(orderId + "");
-            if (query.isExist()) {
-                orderPayService.refund(orderId + "", query.getTransactionId(), query.getAmount(), query.getChannel());
-            }
+        for (String s : new String[]{"NUPAC20220602004158600000000000000088878",
+                "NUPAC20220602004178600000000000000089288",
+                "NUPAC20220602004199100000000000000089197",
+                "NUPAC20220602004125400000000000000090478",
+                "NUPAC20220602004178800000000000000091749",
+                "NUPAC20220602004183300000000000000093060",
+                "NUPAC20220602004131100000000000000094001",
+                "NUPAC20220602004114100000000000000093751",
+                "NUPAC20220602004195800000000000000094095",
+                "NUPAC20220602004166600000000000000095053",
+                "NUPAC20220602004171300000000000000094667",
+                "NUPAC20220602004155000000000000000095478",
+                "NUPAC20220602004198300000000000000096828",
+                "NUPAC20220602004128500000000000000098532",
+                "NUPAC20220602004129100000000000000099890",
+                "NUPAC20220602004113200000000000000099680",
+                "NUPAC20220602004170100000000000000100350"}) {
+            PayQuery q = orderPayService.query(s, Constants.PayChannel.SAND);
+            orderPayService.refund(q.getOrderId(), q.getTransactionId(), q.getAmount(), q.getChannel());
         }
+
     }
 }

+ 18 - 0
src/test/java/com/izouma/nineth/service/SandPayServiceTest.java

@@ -82,6 +82,24 @@ class SandPayServiceTest {
 
     @Test
     public void refund() {
+        JSONObject header = new JSONObject();
+        header.put("version", "1.0");                           //版本号
+        header.put("method", "sandpay.trade.refund");           //接口名称:退货
+        header.put("productId", "00000006");                    //产品编码
+        header.put("mid", mid);          //商户号
+        header.put("accessType", "1");                          //接入类型设置为普通商户接入
+        header.put("channelType", "07");                        //渠道类型:07-互联网   08-移动端
+        header.put("reqTime", SandPayService.getReqTime());                    //请求时间
+
+        JSONObject body = new JSONObject();
+        body.put("orderCode", new SnowflakeIdWorker(0, 0).nextId());        //商户订单号
+        body.put("oriOrderCode", "981961667879387136");        //原交易订单号
+        body.put("refundAmount", "000000005100");          //退货金额
+        body.put("refundReason", "退款");                         //退货原因
+        body.put("notifyUrl", "https://test.raex.vip/sandpay/notify");  //异步通知地址
+        body.put("extend", "");
+
+        SandPayService.requestServer(header, body, "https://cashier.sandpay.com.cn/qr/api/order/refund");
     }
 
     @Test