winter 1 rok temu
rodzic
commit
a15f001d5c
2 zmienionych plików z 45 dodań i 3 usunięć
  1. +6
    -2
      suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java
  2. +39
    -1
      suimangService/src/main/java/com/iformall/utils/MaUtil.java

+ 6
- 2
suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java Wyświetl plik

@@ -43,10 +43,13 @@ public class AliPagePayAdapterService extends BaseAliPayAdapterService implement
return null; return null;
} }


//https://opendocs.alipay.com/open/270/105898
//https://opendocs.alipay.com/open/270/01didh?ref=api
@Override @Override
public PayAdapterResult createPay(ProductOrderPay orderPay, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { public PayAdapterResult createPay(ProductOrderPay orderPay, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception {


AlipayClient alipayClient = maUtil.getAliPayClient(appInfo, payAccount);
//AlipayClient alipayClient = maUtil.getAliPayClient(appInfo, payAccount);
AlipayClient alipayClient = maUtil.getAliPayCertClient(appInfo, payAccount);
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//异步接收地址,仅支持http/https,公网可访问 //异步接收地址,仅支持http/https,公网可访问
request.setNotifyUrl(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/aliNotify"); request.setNotifyUrl(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/aliNotify");
@@ -73,7 +76,8 @@ public class AliPagePayAdapterService extends BaseAliPayAdapterService implement


request.setBizContent(bizContent.toString()); request.setBizContent(bizContent.toString());
try{ try{
AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
//AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
AlipayTradePagePayResponse response = alipayClient.certificateExecute(request);
log.info("ali创建支付返回{}"+ JSON.toJSONString(response)); log.info("ali创建支付返回{}"+ JSON.toJSONString(response));
PayAdapterResult par = new PayAdapterResult(); PayAdapterResult par = new PayAdapterResult();
if(response.isSuccess()){ if(response.isSuccess()){


+ 39
- 1
suimangService/src/main/java/com/iformall/utils/MaUtil.java Wyświetl plik

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient; import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig; import com.alipay.api.AlipayConfig;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient; import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse; import com.alipay.api.response.AlipayTradePagePayResponse;
@@ -315,7 +316,7 @@ public class MaUtil {
alipayConfig.setAlipayPublicKey(payAccount.getMerchantApiKey()); alipayConfig.setAlipayPublicKey(payAccount.getMerchantApiKey());
alipayConfig.setSignType("RSA2"); alipayConfig.setSignType("RSA2");


String key = appinfo.getAppId();
String key = appinfo.getAppId()+"_byPublicKey";
AlipayClient alipayClient = alipayClientMap.get(key); AlipayClient alipayClient = alipayClientMap.get(key);
if(alipayClient == null){ if(alipayClient == null){
synchronized("getAliPayClientBlock"+appinfo.getAppId()) { synchronized("getAliPayClientBlock"+appinfo.getAppId()) {
@@ -335,5 +336,42 @@ public class MaUtil {
} }
return alipayClient; return alipayClient;
} }
public AlipayClient getAliPayCertClient(WxAppinfo appinfo, WxPayAccount payAccount) {
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
certAlipayRequest.setAppId(appinfo.getAppId());
certAlipayRequest.setPrivateKey(appinfo.getSecret());
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset("UTF-8");
certAlipayRequest.setSignType("RSA2");
certAlipayRequest.setCertPath(payAccount.getMerchantCertPath());
certAlipayRequest.setAlipayPublicCertPath(payAccount.getMerchantKeyPath());
certAlipayRequest.setRootCertPath(payAccount.getMerchantCertPemPath());
String key = appinfo.getAppId()+"_byCert";
AlipayClient alipayClient = alipayClientMap.get(key);
if(alipayClient == null){
synchronized("getAliPayClientBlock"+appinfo.getAppId()) {
alipayClient = alipayClientMap.get(key);
if (null == alipayClient) {
try {
alipayClient = new DefaultAlipayClient(certAlipayRequest);
alipayClientMap.put(key, alipayClient);
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
}
}
if(alipayClient == null){
throw new MallinkException(ErrorCode.APP_PLAT_ERROR.getCode(),"获取支付配置失败");
}
// 提交数据至支付宝时请使用
//alipayClient.certificateExecute(request);
return alipayClient;
}


} }

Ładowanie…
Anuluj
Zapisz