admin
2020-11-19 672ec0a719f4edb07cb37d0f1b8b486eeb1cfbbe
支付宝调整
3个文件已修改
78 ■■■■ 已修改文件
utils/src/main/java/org/yeshi/utils/alipay/AlipayUtil.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/src/main/java/org/yeshi/utils/entity/alipay/AlipayAppInfo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/src/main/java/org/yeshi/utils/alipay/AlipayUtil.java
@@ -1,9 +1,7 @@
package org.yeshi.utils.alipay;
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundAccountQueryRequest;
import com.alipay.api.request.AlipayFundTransCommonQueryRequest;
@@ -14,7 +12,6 @@
import net.sf.json.JSONObject;
import org.yeshi.utils.StringUtil;
import org.yeshi.utils.entity.alipay.AlipayAppInfo;
import org.yeshi.utils.entity.alipay.AlipayCertInfo;
import org.yeshi.utils.entity.alipay.AlipayTransferInfo;
import org.yeshi.utils.exception.AlipayCommonException;
import org.yeshi.utils.exception.AlipayTransferException;
@@ -23,42 +20,40 @@
public class AlipayUtil {
    public static AlipayClient getAlipayClient(AlipayAppInfo app) {
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", app.getAppId(), app.getPrivateKey(), "json", "GBK", app.getAlipayPublicKey(), "RSA2");
        return alipayClient;
    public static AlipayClient getAlipayClient(AlipayAppInfo app) throws AlipayApiException {
        if (app.getCertInfo() == null) {
            AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", app.getAppId(), app.getPrivateKey(), "json", "GBK", app.getAlipayPublicKey(), "RSA2");
            return alipayClient;
        } else {
            String privateKey = app.getPrivateKey();
            MyCertAlipayRequest certAlipayRequest = new MyCertAlipayRequest();
            certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
            certAlipayRequest.setAppId(app.getAppId());
            certAlipayRequest.setPrivateKey(privateKey);
            certAlipayRequest.setFormat("json");
            certAlipayRequest.setCharset("GBK");
            certAlipayRequest.setSignType("RSA2");
            certAlipayRequest.setCertStream(
                    app.getCertInfo().getAppCertPublicKeyStream());
            certAlipayRequest.setAlipayPublicCertStream(
                    app.getCertInfo().getAlipayPublicCertStream());
            certAlipayRequest.setRootCertStream(
                    app.getCertInfo().getAlipayRootCertStream());
            return new CertAlipayClient(certAlipayRequest);
        }
    }
    private static AlipayClient getAlipayClient(AlipayAppInfo app, AlipayCertInfo info) throws AlipayApiException {
        String privateKey = app.getPrivateKey();
        MyCertAlipayRequest certAlipayRequest = new MyCertAlipayRequest();
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        certAlipayRequest.setAppId(app.getAppId());
        certAlipayRequest.setPrivateKey(privateKey);
        certAlipayRequest.setFormat("json");
        certAlipayRequest.setCharset("GBK");
        certAlipayRequest.setSignType("RSA2");
        certAlipayRequest.setCertStream(
                info.getAppCertPublicKeyStream());
        certAlipayRequest.setAlipayPublicCertStream(
                info.getAlipayPublicCertStream());
        certAlipayRequest.setRootCertStream(
                info.getAlipayRootCertStream());
        return new CertAlipayClient(certAlipayRequest);
    }
    /**
     * 统一转账(包含红包与转账)
     *
     * @param app
     * @param info
     * @param certInfo
     * @return
     * @throws AlipayApiException
     * @throws NumberFormatException
     * @throws AlipayTransferException
     */
    public static AlipayFundTransUniTransferResponse alipayFundTransUniTransfer(AlipayAppInfo app, AlipayTransferInfo info, AlipayCertInfo certInfo)
    public static AlipayFundTransUniTransferResponse alipayFundTransUniTransfer(AlipayAppInfo app, AlipayTransferInfo info)
            throws AlipayApiException, NumberFormatException, AlipayTransferException {
        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
        com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
@@ -96,7 +91,7 @@
        request.setBizContent(json.toString());
        AlipayFundTransUniTransferResponse response = null;
        response = getAlipayClient(app, certInfo).certificateExecute(request);
        response = getAlipayClient(app).certificateExecute(request);
        // 成功转账
        if (response != null && response.isSuccess() && "10000".equals(response.getCode())) {
            return response;
@@ -119,8 +114,8 @@
     * @return
     * @throws AlipayApiException
     */
    public static AlipayFundTransCommonQueryResponse getOrderDetail(AlipayAppInfo app, AlipayCertInfo certInfo, AlipayTransferInfo.AlipayProductCodeEnum productCode, AlipayTransferInfo.AlipayBizSceneEnum bizScene, String outBizNo) throws AlipayApiException, AlipayCommonException {
        AlipayClient alipayClient = getAlipayClient(app, certInfo);
    public static AlipayFundTransCommonQueryResponse getOrderDetail(AlipayAppInfo app, AlipayTransferInfo.AlipayProductCodeEnum productCode, AlipayTransferInfo.AlipayBizSceneEnum bizScene, String outBizNo) throws AlipayApiException, AlipayCommonException {
        AlipayClient alipayClient = getAlipayClient(app);
        AlipayFundTransCommonQueryRequest request = new AlipayFundTransCommonQueryRequest();
        com.alibaba.fastjson.JSONObject content = new com.alibaba.fastjson.JSONObject();
        if (productCode != null)
@@ -146,8 +141,8 @@
     * @throws AlipayApiException
     * @throws AlipayCommonException
     */
    public static BigDecimal getAccountBalance(AlipayAppInfo app, AlipayCertInfo certInfo, String userId) throws AlipayApiException, AlipayCommonException {
        AlipayClient alipayClient = getAlipayClient(app, certInfo);
    public static BigDecimal getAccountBalance(AlipayAppInfo app, String userId) throws AlipayApiException, AlipayCommonException {
        AlipayClient alipayClient = getAlipayClient(app);
        AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest();
        com.alibaba.fastjson.JSONObject content = new com.alibaba.fastjson.JSONObject();
        content.put("alipay_user_id", userId);
utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipayOpenAppMiniTemplatemessageSendResponse;
@@ -30,7 +29,7 @@
        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
        request.setGrantType("authorization_code");
        request.setCode(code);
        AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
        AlipaySystemOauthTokenResponse response = app.getCertInfo() != null ? alipayClient.certificateExecute(request) : alipayClient.execute(request);
        if (!response.isSuccess()) {
            throw new AlipayXcxException(response.getCode(), response.getSubMsg(), response.getBody());
        }
@@ -71,7 +70,7 @@
        System.out.println(content.toString());
        request.setBizContent(content.toString());
        AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request);
        AlipayOpenAppMiniTemplatemessageSendResponse response = app.getCertInfo() != null ? alipayClient.certificateExecute(request) : alipayClient.execute(request);
        if (!response.isSuccess()) {
            throw new AlipayXcxException(response.getCode(), response.getSubMsg(), response.getBody());
        }
utils/src/main/java/org/yeshi/utils/entity/alipay/AlipayAppInfo.java
@@ -7,10 +7,13 @@
    private String appId;
    private String privateKey;
    private String alipayPublicKey;
    private AlipayCertInfo certInfo;//证书信息
    public AlipayAppInfo(String appId, String privateKey) {
    public AlipayAppInfo(String appId, String privateKey, AlipayCertInfo certInfo) {
        this.appId = appId;
        this.privateKey = privateKey;
        this.certInfo = certInfo;
    }
    public AlipayAppInfo(String appId, String privateKey, String alipayPublicKey) {
@@ -19,6 +22,15 @@
        this.alipayPublicKey = alipayPublicKey;
    }
    public AlipayCertInfo getCertInfo() {
        return certInfo;
    }
    public void setCertInfo(AlipayCertInfo certInfo) {
        this.certInfo = certInfo;
    }
    public String getAppId() {
        return appId;
    }