|
@@ -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);
|
|
|
}
|
|
|
}
|