|
|
@@ -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()) {
|