admin
2020-11-28 dc5be7d38446f70e6ff86df311119c32b41fe7f8
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);