admin
2022-05-12 fa705507ba574c857b1667553737d23b1b7ff495
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.ks.app.utils.pay;
 
import com.alipay.api.AlipayApiException;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.ks.app.utils.Constant;
import net.sf.json.JSONObject;
import org.yeshi.utils.exception.AlipayTransferException;
 
import java.math.BigDecimal;
 
public class AlipayUtil {
 
    private static DefaultAlipayClient alipayClient = null;
 
    static {
        String privateKey = Constant.alipayConfig.getPrivateKey();
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        certAlipayRequest.setAppId(Constant.alipayConfig.getAppId());
        certAlipayRequest.setPrivateKey(privateKey);
        certAlipayRequest.setFormat("json");
        certAlipayRequest.setCharset("GBK");
        certAlipayRequest.setSignType("RSA2");
        certAlipayRequest.setCertPath(
                AlipayUtil.class.getClassLoader().getResource(Constant.alipayConfig.getAppCertPath()).getPath());
        certAlipayRequest.setAlipayPublicCertPath(
                AlipayUtil.class.getClassLoader().getResource(Constant.alipayConfig.getAlipayCertPath()).getPath());
        certAlipayRequest.setRootCertPath(
                AlipayUtil.class.getClassLoader().getResource(Constant.alipayConfig.getAlipayRootCertPath()).getPath());
        try {
            alipayClient = new DefaultAlipayClient(certAlipayRequest);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
 
    }
 
    public static AlipayFundTransUniTransferResponse transfer(String outBizNo, String account, String name,
            BigDecimal money, String orderTitle, String mark)
            throws AlipayApiException, NumberFormatException, AlipayTransferException {
        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
        JSONObject json = new JSONObject();
        json.put("out_biz_no", outBizNo);
        json.put("trans_amount", money.toString());
        json.put("product_code", "TRANS_ACCOUNT_NO_PWD");
        json.put("order_title", orderTitle);
        JSONObject payee_info = new JSONObject();
        payee_info.put("identity", account);
        payee_info.put("identity_type", "ALIPAY_LOGON_ID");
        payee_info.put("name", name);
        json.put("payee_info", payee_info);
        json.put("remark", mark);
        json.put("biz_scene", "DIRECT_TRANSFER");
 
        request.setBizContent(json.toString());
        AlipayFundTransUniTransferResponse response = null;
        response = alipayClient.certificateExecute(request);
        // 成功转账
        if (response != null && response.isSuccess() && "10000".equals(response.getCode())) {
            return response;
        } else// 转账失败
        {
            throw new AlipayTransferException(Integer.parseInt(response.getCode()), response.getSubCode(),
                    response.getSubMsg());
        }
    }
 
    public static AlipayFundTransUniTransferResponse transferNoThrowException(String outBizNo, String account, String name,
            BigDecimal money, String orderTitle, String mark) throws AlipayApiException{
        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
        JSONObject json = new JSONObject();
        json.put("out_biz_no", outBizNo);
        json.put("trans_amount", money.toString());
        json.put("product_code", "TRANS_ACCOUNT_NO_PWD");
        json.put("order_title", orderTitle);
        JSONObject payee_info = new JSONObject();
        payee_info.put("identity", account);
        payee_info.put("identity_type", "ALIPAY_LOGON_ID");
        payee_info.put("name", name);
        json.put("payee_info", payee_info);
        json.put("remark", mark);
        json.put("biz_scene", "DIRECT_TRANSFER");
 
        request.setBizContent(json.toString());
        AlipayFundTransUniTransferResponse response = null;
        response = alipayClient.certificateExecute(request);
        return response;
    }
 
}