Просмотр исходного кода

feat(AllinpaySDK): 更新支付接口为H5收银台支付并调整配置

更新SDK版本至12,修改基础URL和支付接口URL
替换unifiedPay方法为h5Pay方法,调整参数和逻辑
更新测试用例以适配新的H5支付接口
skyfffire 1 неделя назад
Родитель
Сommit
9171e7eff8
1 измененных файлов с 31 добавлено и 29 удалено
  1. 31 29
      src/main/java/common/utils/tl/AllinpaySDK.java

+ 31 - 29
src/main/java/common/utils/tl/AllinpaySDK.java

@@ -20,10 +20,10 @@ import java.util.Base64;
  */
 public class AllinpaySDK {
     // 商户配置信息
-    private static final String VERSION = "11";
+    private static final String VERSION = "12";
     private static final String SIGN_TYPE = "SM2";
-    private static final String APP_ID = "";
-    private static final String CUS_ID = "";
+    private static final String APP_ID = "00000051";
+    private static final String CUS_ID = "990581007426001";
     
     // SM2密钥对
     private static final String SM2_PRIVATE_KEY = "";
@@ -32,31 +32,31 @@ public class AllinpaySDK {
     private static final String ALLINPAY_PUBLIC_KEY = "";
 
     // 生产环境配置
-    private static final String BASE_URL = "https://vsp.allinpay.com";
-    private static final String UNIFIED_PAY_URL = BASE_URL + "/apiweb/unitorder/pay";
+    private static final String BASE_URL = "https://syb.allinpay.com";
+    private static final String H5_PAY_URL = BASE_URL + "/apiweb/h5unionpay/unionorder";
     private static final String QUERY_URL = "https://syb.allinpay.com/apiweb/unitorder/query";
     
     private static final SM2 sm2 = SmUtil.sm2(SM2_PRIVATE_KEY, ALLINPAY_PUBLIC_KEY);
     
     /**
-     * 统一支付接口
-     *
-     * @param trxamt      交易金额(分)
-     * @param reqsn       商户交易单号
-     * @param paytype     交易方式
-     * @param body        订单标题
-     * @param remark      备注
-     * @param acct        支付平台用户标识
-     * @param notify_url  交易结果通知地址
-     * @param limit_pay   支付限制
-     * @param idno        证件号
-     * @param truename    付款人真实姓名
-     * @param sub_appid   微信子appid
+     * H5收银台支付
+     * 
+     * @param trxamt 交易金额(分)
+     * @param reqsn 商户订单号
+     * @param body 订单标题
+     * @param remark 订单备注信息
+     * @param notify_url 服务器异步通知页面路径
+     * @param returl 页面跳转同步通知页面路径
+     * @param charset 参数字符编码集
+     * @param validtime 有效时间(分钟)
+     * @param limit_pay 支付限制
+     * @param truename 付款人真实姓名
+     * @param idno 证件号
      * @return 支付结果
      */
-    public static PaymentResult unifiedPay(Long trxamt, String reqsn, String paytype, String body, String remark,
-                                           String acct, String notify_url, String limit_pay, String idno,
-                                           String truename, String sub_appid) {
+    public static PaymentResult h5Pay(Long trxamt, String reqsn, String body, String remark, 
+                                     String notify_url, String returl, String charset, 
+                                     Integer validtime, String limit_pay, String truename, String idno) {
         try {
             // 1. 构建请求参数
             Map<String, String> params = new TreeMap<>();
@@ -67,24 +67,24 @@ public class AllinpaySDK {
             params.put("randomstr", RandomUtil.randomString(8));
             params.put("trxamt", String.valueOf(trxamt));
             params.put("reqsn", reqsn);
-            params.put("paytype", paytype);
             params.put("body", body);
             params.put("remark", remark);
             params.put("notify_url", notify_url);
 
             // 添加可选参数
-            if (StrKit.notBlank(acct)) params.put("acct", acct);
+            if (StrKit.notBlank(returl)) params.put("returl", returl);
+            if (StrKit.notBlank(charset)) params.put("charset", charset);
+            if (validtime != null) params.put("validtime", String.valueOf(validtime));
             if (StrKit.notBlank(limit_pay)) params.put("limit_pay", limit_pay);
-            if (StrKit.notBlank(idno)) params.put("idno", idno);
             if (StrKit.notBlank(truename)) params.put("truename", truename);
-            if (StrKit.notBlank(sub_appid)) params.put("sub_appid", sub_appid);
+            if (StrKit.notBlank(idno)) params.put("idno", idno);
 
             // 2. 生成签名
             String sign = generateSign(params);
             params.put("sign", sign);
 
             // 3. 发送请求
-            String response = sendPostRequest(UNIFIED_PAY_URL, params);
+            String response = sendPostRequest(H5_PAY_URL, params);
 
             // 4. 解析响应
             return parsePaymentResponse(response);
@@ -503,9 +503,11 @@ public class AllinpaySDK {
         System.out.println("测试订单号: " + reqsn);
         System.out.println("交易金额: " + trxamt + "分");
         
-        // 测试1: 统一支付
-        System.out.println("\n=== 测试统一支付 ===");
-        PaymentResult payResult = unifiedPay(trxamt, reqsn, "W02", body, remark, "o9o43wz9sV5x8P-MA2b02mtYw4Co", notify_url, null, null, null, null);
+        // 测试1: H5收银台支付
+        System.out.println("\n=== 测试H5收银台支付 ===");
+        PaymentResult payResult = h5Pay(trxamt, reqsn, body, remark, notify_url, 
+                                       "https://your-domain.com/return", "UTF-8", 
+                                       30, null, null, null);
         System.out.println("支付结果: " + payResult);
         
         if (payResult.isSuccess()) {