소스 검색

fix

photo
winter 1 년 전
부모
커밋
a15f001d5c
2개의 변경된 파일45개의 추가작업 그리고 3개의 파일을 삭제
  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 파일 보기

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

//https://opendocs.alipay.com/open/270/105898
//https://opendocs.alipay.com/open/270/01didh?ref=api
@Override
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();
//异步接收地址,仅支持http/https,公网可访问
request.setNotifyUrl(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/aliNotify");
@@ -73,7 +76,8 @@ public class AliPagePayAdapterService extends BaseAliPayAdapterService implement

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


+ 39
- 1
suimangService/src/main/java/com/iformall/utils/MaUtil.java 파일 보기

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

String key = appinfo.getAppId();
String key = appinfo.getAppId()+"_byPublicKey";
AlipayClient alipayClient = alipayClientMap.get(key);
if(alipayClient == null){
synchronized("getAliPayClientBlock"+appinfo.getAppId()) {
@@ -335,5 +336,42 @@ public class MaUtil {
}
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;
}

}

불러오는 중...
취소
저장