Sfoglia il codice sorgente

代码优化抽象出公用获取请求的方法

yq 3 anni fa
parent
commit
b5b28bff78

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

@@ -165,7 +165,7 @@ public class QRCodeUtil {
         // 存放在二维码中的内容
         String scanPayApi = TopApi.generateScanPayApi(UUID.randomUUID().toString(true),
                 1,
-                "测试回调");
+                "测试回调",null,null,null,null,null,null);
         // 嵌入二维码的图片路径
 //        String imgPath = "C:/Users/pc/Desktop/dog.jpg";
         // 生成的二维码的路径及名称

+ 49 - 8
src/main/java/com/usky/dxtop/service/api/TopApi.java

@@ -1,13 +1,10 @@
 package com.usky.dxtop.service.api;
 
-import com.sun.org.apache.regexp.internal.RE;
+
 import com.usky.dxtop.common.utils.DateUtils;
 import com.usky.dxtop.common.utils.StringUtils;
 import com.usky.dxtop.common.utils.sign.Md5Utils;
-import org.apache.poi.ss.usermodel.DateUtil;
 
-import java.awt.font.ShapeGraphicAttribute;
-import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -26,6 +23,10 @@ public class TopApi {
      * 扫码支付
      */
     private static final String SCAN_TO_PAY_URL = "https://interfacetest.allinpaygx.com/api/access/payInterface/usePaymentCode";
+    /**
+     * 交易查询
+     */
+    private static final String DEAL_SELECT = "https://interfacetest.allinpaygx.com/api/access/payInterface/findOrderInfo";
 
     /**
      * 商户编号
@@ -45,7 +46,7 @@ public class TopApi {
 
 
     /**
-     * 拼接扫码支付
+     * 拼接扫码支付参数
      * @return
      */
     public static TreeMap<String, String> generateScanPayApiParam(String orderNo, Integer amount, String note,
@@ -75,9 +76,47 @@ public class TopApi {
      * @param note
      * @return
      */
-    public static String generateScanPayApi(String orderNo,Integer amount,String note){
+    public static String generateScanPayApi(String orderNo,Integer amount,String note,
+                                            String storeNo,String backUrl,String orderNumber,
+                                            String validTime,String remark,String goods){
         TreeMap<String, String> params = generateScanPayApiParam(orderNo, amount, note,
-                null,null,null,null,null,null);
+                storeNo,backUrl,orderNumber,validTime,remark,goods);
+        return generateApiCommon(params,SCAN_TO_PAY_URL);
+    }
+
+    /**
+     * 生成交易查询参数
+     * @param merchantOrderNo
+     * @param storeNo
+     * @param trxid
+     * @param groupNo
+     * @return
+     */
+    public static TreeMap<String, String> generateDealSelectParam(String merchantOrderNo,String storeNo,String trxid,String groupNo){
+        TreeMap<String, String> tMap = new TreeMap<>();
+        tMap.put("version",VERSION);
+        tMap.put("merchantNo",MERCHANT_NO);
+        tMap.put("merchantOrderNo",merchantOrderNo);
+        tMap.put("storeNo",storeNo);
+        tMap.put("trxid",trxid);
+        tMap.put("groupNo",groupNo);
+        return tMap;
+    }
+
+    /**
+     * 交易查询api
+     * @param merchantOrderNo
+     * @param storeNo
+     * @param trxid
+     * @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 String generateApiCommon(TreeMap<String, String> params,String url){
         StringBuilder buf = new StringBuilder();
         for (Map.Entry<String, String> entry : params.entrySet()) {
             if (!StringUtils.isBlank(entry.getValue()) && !"sign".equals(entry.getKey())) {
@@ -86,10 +125,12 @@ public class TopApi {
         }
         String changeBuf = buf.toString();
         String substring = changeBuf.substring(0, changeBuf.length() - 1);
-        return String.format("%s?%s&sign=%s",SCAN_TO_PAY_URL,
+        return String.format("%s?%s&sign=%s",url,
                 substring,
                 signData(params));
     }
+
+
     /**
      * 参数加签
      * 参数加签规则,key+value拼接(value为空时,key value不参与拼接),以key首字母ascii码排序,最后拼接上secret串再进行MD5加密,得到的MD5密钥字母转大写,例:amount1merchantNo1210500001030341dff192f644b5892338f0d964a6b2