package com.taoke.autopay.utils;
|
|
|
import java.math.BigDecimal;
|
|
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.request.AlipayTradeQueryRequest;
|
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
|
|
import net.sf.json.JSONObject;
|
import org.slf4j.Logger;
|
|
|
public class AlipayUtil {
|
|
private final static Logger logger = org.slf4j.LoggerFactory.getLogger("debugLogger");
|
|
private static DefaultAlipayClient alipayClient = null;
|
|
static {
|
String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDhLhILE3YPWHOTJ9ndbdAQ+5DzrQ/+esTwAFnvo7YN+Bto8njOX9CI4/HE78bj7fFfTsPAJv0ga+b6iTCw0HhkI7oPZIJ1S4WH9w/EvzcsfoZvSEOJLHhnqOu8rkn8OVwzMZ5DtmRC0Sy2LZ+zIvdOqzJYAPlbJb+Q99ccVgr6nu+JouO6fHXMQ1xKvv5lSFgGy8EFiEU71UHcxdsA21Qn90ZNXAOSt8qHFydANVSE90pjAj3iLlpxleJGTCgLuAfGzN6pxyykjfR1m2YwWvEu7xcMgSlzO6/Hp0nWS8USehY2llRUAYW5QOq3+rhvZRE3rd9eESeDSpkkMWwQPY8RAgMBAAECggEAeL7BghrvZY8iejgWRPwLY+/hbCjSuLyQObmWgD+i8Z6m5AGQ8ejC44SHMfj5B2Oh2F9d6/18IhR6CMHj0AwZYmkd7f8RTWAvvBao5/E43q0B3U48mKO19K/JqKU0mwEPBYyHtvtoi8OqXA3e4qnPPunh1vq+uzdkn5GmUVV6EaSCES+BUBusxwYrBGvnZM//1Z7n3JqsmN+QZZ6c/uWeK0Gzl2zIONPCUnGJzp9gSeDPu6RxM1NLCMcxwrmfhmW+Jy5uhNAjUkfWC8Os6XCneVUTxoUGxZrEsFQbq7fRMUZM/DU5/1zOJpkAPzFEoFsBMp6cWl9ZwYawn9bF+kB4OQKBgQD+sdGPdK8vzZbRKrlPLk+k1JvN7SEDiJc5ZJ3AI5FzKsFL7DP9DLFV1Yev2sk8TrcjksDYHTJlxnNqPMdgJV31Wf+dvw2Wrsl7YucnbtvU6Odl1Vd3GtfIilsZ+oY+sdK3yHxDkg6q668VsSt8KcW47DArliRicQRYrfZnc0HrawKBgQDiVYavq3Ie07diAXpX7ILqbn/d6jbZH7X1qofOp7ZTf6qwFOWmS4slZ7V2M0e1PztgK4+dZbm4aJ+WZojbxbx0nc8mWQLPmAEqvGlECVO+vNrEO0e6v0w2ERpFoGPjaQF6pb21SUdNhvyewQLBHnobziMDzcix5D8J8GZdDpPqcwKBgAGN9El73NXd213LdPYWwkWvRoQrPlhXLRUcmBnkHa8mQ6fC+U5CFZMAiqN4ImJL2LJO4v5urzAP1gR/+neLwtcMhZLg56RTzMcEA4UqGA1knoTwmGgRsd93eLbf4JHhY/fbMWb4LT690YPAYROQ7bQDPQgHEpHHPs+LwEVBXtWhAoGAXaAPdP+w13uw8kO2PkTB6wQGtN+8DJkHhjYis6PA0k2PaANc9CtvxeterySLVzhu8VtTr0JzTwtIaMjFeFQVnw/grvZHKWSxpuIFkXViRRaOUHpNM70KY5sziPXOHDZFvFxvW1ySuElMmscwwn4++N2OsnYfvSazxQLC9V+gZG0CgYB7dHbzpBi4JgggeXo0nWVH82pBQTvCsPQVRvznY6MQxVBbkOPFvdy3bB1g6Br3iyS5heS25JX7/3AOX4rU1Sfiqvn7rLKVRbhxPimcfGULNQUyeKX/+FKKG9Yi3KTV8Mzy8LxDxwJPpPgmV88fdUKrjuVLZxmrluo10czBM5DLjw==";
|
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
|
certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
|
certAlipayRequest.setAppId("2021004141681244");
|
certAlipayRequest.setPrivateKey(privateKey);
|
certAlipayRequest.setFormat("json");
|
certAlipayRequest.setCharset("GBK");
|
certAlipayRequest.setSignType("RSA2");
|
certAlipayRequest.setCertPath(
|
AlipayUtil.class.getClassLoader().getResource("alipay/appCertPublicKey_2021004141681244.crt").getPath());
|
certAlipayRequest.setAlipayPublicCertPath(
|
AlipayUtil.class.getClassLoader().getResource("alipay/alipayCertPublicKey_RSA2.crt").getPath());
|
certAlipayRequest.setRootCertPath(
|
AlipayUtil.class.getClassLoader().getResource("alipay/alipayRootCert.crt").getPath());
|
try {
|
alipayClient = new DefaultAlipayClient(certAlipayRequest);
|
} catch (AlipayApiException e) {
|
e.printStackTrace();
|
logger.error("支付宝初始化失败", e);
|
}
|
|
}
|
|
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;
|
}
|
|
public static void main(String[] args) throws AlipayTransferException, AlipayApiException {
|
|
AlipayUtil.transfer("test-1","18323283413@163.com","夏程培",new BigDecimal("0.1"),"积分兑换","积分兑换");
|
}
|
|
|
public static class AlipayTransferException extends Exception {
|
public AlipayTransferException() {
|
|
}
|
|
/**
|
* 支付宝转账异常
|
*/
|
private static final long serialVersionUID = 1L;
|
private int code;
|
private String subCode;
|
private String msg;
|
|
public int getCode() {
|
return code;
|
}
|
|
public String getMsg() {
|
return msg;
|
}
|
|
public String getSubCode() {
|
return subCode;
|
}
|
|
public AlipayTransferException(int code, String subCode, String msg) {
|
this.code = code;
|
this.msg = msg;
|
this.subCode = subCode;
|
}
|
|
@Override
|
public String getMessage() {
|
return this.msg;
|
}
|
|
}
|
|
|
}
|