Parcourir la source

统一支付接口测试

yq il y a 3 ans
Parent
commit
27926cb70b

+ 1 - 1
src/main/java/com/usky/dxtop/common/utils/QRCodeUtil.java

@@ -163,7 +163,7 @@ public class QRCodeUtil {
 
     public static void main(String[] args) throws Exception {
         // 存放在二维码中的内容
-        String scanPayApi = TopApi.generateScanPayApi(UUID.randomUUID().toString(true),
+        String scanPayApi = TopApi.generateScanPayApi(TopApi.getOrderNumber(),
                 1,
                 "测试回调",null,null,null,null,null,null);
         // 嵌入二维码的图片路径

+ 22 - 6
src/main/java/com/usky/dxtop/controller/web/TestController.java

@@ -1,9 +1,12 @@
 package com.usky.dxtop.controller.web;
 
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.usky.dxtop.common.utils.http.HttpUtils;
 import com.usky.dxtop.service.api.TopApi;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.core.util.JsonUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -41,12 +44,25 @@ public class TestController {
     }
 
     public static void main(String[] args) {
-        TreeMap<String, String> param = TopApi.generateDealSelectParam("d3d15e03925e4962b95f204c1f6bd5e8", null, null, null);
-        String format = String.format("%s&sign=%s", TopApi.joinParam(param),
-                TopApi.signData(param));
-        System.out.println(format);
-        String s = HttpUtils.sendGet(TopApi.DEAL_SELECT, format);
-        System.out.println(s);
+//        //交易查询
+//        TreeMap<String, String> param = TopApi.generateDealSelectParam("d3d15e03925e4962b95f204c1f6bd5e8", null, null, null);
+//        String format = String.format("%s&sign=%s", TopApi.joinParam(param),
+//                TopApi.signData(param));
+//        String s = HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, format);
+//        JSONObject obj= JSON.parseObject(s);
+//
+//        System.out.println(obj);
+//        TreeMap<String, String> param1 = TopApi.generateReturnDealParam(1, "210824101657094252199", null, null, null, null, null);
+//        String format1 = String.format("%s&sign=%s", TopApi.joinParam(param1),
+//                TopApi.signData(param1));
+//        String s1 = HttpUtils.sendGet(TopApi.RETURN_DEAL_URL, format1);
+//        System.out.println(s1);
+
+        TreeMap<String, String> param2 = TopApi.generateUnifyParam(1, TopApi.SCAN_NOTIFY_URL, null, null, null, null, "W01", null, null, null, null, null, null);
+        String format1 = String.format("%s?%s&sign=%s",TopApi.UNIFY_URL,TopApi.joinParam(param2),
+            TopApi.signData(param2));
+        System.out.println(format1);
+
     }
 
 }

+ 78 - 18
src/main/java/com/usky/dxtop/service/api/TopApi.java

@@ -4,7 +4,11 @@ package com.usky.dxtop.service.api;
 import com.usky.dxtop.common.utils.DateUtils;
 import com.usky.dxtop.common.utils.StringUtils;
 import com.usky.dxtop.common.utils.sign.Md5Utils;
+import com.usky.dxtop.common.utils.uuid.UUID;
+import org.apache.logging.log4j.core.util.UuidUtil;
+import org.omg.CORBA.PUBLIC_MEMBER;
 
+import java.sql.SQLTransactionRollbackException;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -26,7 +30,12 @@ public class TopApi {
     /**
      * 交易查询
      */
-    public static final String DEAL_SELECT = "https://interfacetest.allinpaygx.com/api/access/payInterface/findOrderInfo";
+    public static final String DEAL_SELECT_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/findOrderInfo";
+
+
+    public static final String RETURN_DEAL_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/refund";
+
+    public static final String UNIFY_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/unifiedPay";
 
     /**
      * 商户编号
@@ -81,7 +90,9 @@ public class TopApi {
                                             String validTime,String remark,String goods){
         TreeMap<String, String> params = generateScanPayApiParam(orderNo, amount, note,
                 storeNo,backUrl,orderNumber,validTime,remark,goods);
-        return generateApiCommon(params,SCAN_TO_PAY_URL);
+        return String.format("%s?%s&sign=%s",SCAN_TO_PAY_URL,
+                joinParam(params),
+                signData(params));
     }
 
     /**
@@ -104,24 +115,75 @@ public class TopApi {
     }
 
     /**
-     * 交易查询api
-     * @param merchantOrderNo
-     * @param storeNo
+     * 退款api
+     * @param amount
+     * @param orderNo
+     * @param oriMerchantOrderNo
      * @param trxid
+     * @param refundType
+     * @param remark
      * @param groupNo
      * @return
      */
-    public static String generateDealSelectApi(String merchantOrderNo,String storeNo,String trxid,String groupNo){
-        TreeMap<String, String> param = generateDealSelectParam(merchantOrderNo, storeNo, trxid, groupNo);
-        return generateApiCommon(param,DEAL_SELECT);
+    public static TreeMap<String, String> generateReturnDealParam(Integer amount,String orderNo,String oriMerchantOrderNo,
+                                                                  String trxid,String refundType,String remark,String groupNo){
+        TreeMap<String, String> tMap = new TreeMap<>();
+        tMap.put("version",VERSION);
+        tMap.put("merchantNo",MERCHANT_NO);
+        tMap.put("amount",amount.toString());
+        tMap.put("orderNo",orderNo);
+        tMap.put("oriMerchantOrderNo",oriMerchantOrderNo);
+        tMap.put("trxid",trxid);
+        tMap.put("merchantOrderNo",String.format("RETURN%s", getOrderNumber()));
+        tMap.put("refundType",refundType);
+        tMap.put("remark",remark);
+        tMap.put("groupNo",groupNo);
+        return tMap;
     }
 
-    public static String generateApiCommon(TreeMap<String, String> params,String url){
-        return String.format("%s?%s&sign=%s",url,
-                joinParam(params),
-                signData(params));
+    /**
+     * 统一支队接口
+     * @param amount
+     * @param notifyUrl
+     * @param backUrl
+     * @param note
+     * @param orderName
+     * @param acct
+     * @param payType
+     * @param validTime
+     * @param subAppid
+     * @param remark
+     * @param asinfo
+     * @param groupNo
+     * @param consumerIp
+     * @return
+     */
+    public static TreeMap<String, String> generateUnifyParam(Integer amount,String notifyUrl,
+                                                             String backUrl,String note,String orderName,String acct,
+                                                             String payType,String validTime,String subAppid,
+                                                             String remark,String asinfo,String groupNo,
+                                                             String consumerIp){
+        TreeMap<String, String> tMap = new TreeMap<>();
+        tMap.put("version",VERSION);
+        tMap.put("merchantNo",MERCHANT_NO);
+        tMap.put("merchantOrderNo",getOrderNumber());
+        tMap.put("amount",amount.toString());
+        tMap.put("notifyUrl",notifyUrl);
+        tMap.put("backUrl",backUrl);
+        tMap.put("note",note);
+        tMap.put("orderName",orderName);
+        tMap.put("acct",acct);
+        tMap.put("payType",payType);
+        tMap.put("validTime",validTime);
+        tMap.put("subAppid",subAppid);
+        tMap.put("remark",remark);
+        tMap.put("asinfo",asinfo);
+        tMap.put("groupNo",groupNo);
+        tMap.put("consumerIp",consumerIp);
+        return tMap;
     }
 
+
     public static String joinParam(TreeMap<String, String> params){
         StringBuilder buf = new StringBuilder();
         for (Map.Entry<String, String> entry : params.entrySet()) {
@@ -134,6 +196,7 @@ public class TopApi {
     }
 
 
+
     /**
      * 参数加签
      * 参数加签规则,key+value拼接(value为空时,key value不参与拼接),以key首字母ascii码排序,最后拼接上secret串再进行MD5加密,得到的MD5密钥字母转大写,例:amount1merchantNo1210500001030341dff192f644b5892338f0d964a6b2
@@ -152,13 +215,10 @@ public class TopApi {
     }
 
     /**
-     * 验签
-     * @param treeMap
+     * 获取订单编号
      * @return
      */
-    public static boolean validSign(Map<String, String> treeMap){
-        String validSign = treeMap.get("sign");
-        String sign = signData(treeMap);
-        return validSign != null && validSign.equals(sign) && "".equals(validSign);
+    public static String getOrderNumber(){
+        return UUID.randomUUID().toString(true);
     }
 }