1、pom.xml 引入支付宝SDK。
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.8.73.ALL</version>
</dependency>
2、pom.xml 不编译指定类型的资源文件 crt
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<!-- 不需要编译的资源文件 -->
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>crt</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
3、拷贝证书文件到 resources 资源目录。
4、TransferTest 测试类 Demo 源码:
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.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TransferTest {
@Test
public void aliPayTransferTest() {
String serverUrl = "https://openapi.alipay.com/gateway.do";
String appId = "2023042516001234";
String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIMAzqmbgenxznt5LgmKkZzn+Wgt37W5uqZ9TUwCGu8BlAi9dW8BA1rz6aZBP73f6BnGfXxvOWOOeaCaB7PphgQiJE3MG0BY8GSMU5wT7djNgAp0fBCaEy7fKP+h5V7uvBEzQy9YBz3Q9ToSmI4lYP9kpweE42e9W4kp+Y05XhuymTy/xw8zausauroLh4y9mLDSujpHObSJV1RX46MF/bXQcE/jaPVIwN1LRk+jcSOPwFxwglvPzWa5DpPdcoCIsFLc2ThBHrEoUPUWX5xe3d8Nce0Rs15JACylfyaL3YCXi1ew0UgLbB6iYzru3D48zudV4WzgN7AZCA83zedeZNAgMBAAECggEAPmYb4JSBu6nFDMU/1xo+u3iOdI/eOZdYckljId2xoiHc/S2ZtdOmedViIiXHxN5xklz6UVwGWXDrYCxYBZKBVJ/IpsZY6pBBAKh2MYZ23gAk5C9AQn+J66IX1aEVC5wpiElAIBI+M99YA61ckPpb8SXIFj6pwnnfKGUrsithsLZlInTBxm2V+pORueOV+u7oO3YDDb+gR7LMYV7VpODfen5sQU8jtjmvLdlOJfoJEuu2vwF0gqDWROeQNorVn+9R02zdyTFdQlHQT0heGj8GT5TtkSPVRSim1lyryQ8JGIozmknoZue98i+TuivKN71WjA53muhdBPLEPHYDCX7CUQKBgQDigPO9X3jxyz3SA5ejnfroj/Lyj3muqvwGX6mwt30XXpIHLY/wA07ON79ivyO7rT0IJKaI+FTyRsshftYCFEi/OSW4jkvpuGxnpwAWNehrZfLYIFhfmdvsdLFNxMy/HjnYzwGUAW3XKy6bZS1jZubIME/5V4dExB/Nb/uhN+tHEwKBgQDiQcpO3lsVt3i1cjuC2kDvpduh8rLW5Ifbxusqpo9WYXMkVmkmWSAw7zDjk8opn/lgEfLJajGkVGdGr5faJ8nMqjZIxqvR7snFxXIT1Iskv4iIkUbgSk1dCdFuXGSTz0Y5VW/3FZQKbGf0wPpKzshoBwS2/SJA1A8DFqePdpjpHwKBgDckc7Jv0s7yzusZCsq/hD0oBlp9CX+3isG2emZWVXLiCCUNN5SUCZR0x/gvVnCzXT9lRNHluzB8gal26nz5GTjMnd1PbzXIO0QEySWfHCVBXZy2Sy2DFKJ9SkkHl10T67tXsiepLWeL0L3uJN2lSJwF/wJSB9F6+c8W6yi1p2bXAoGBALczACV2I5hk84cvlIIySIwC5uCtjCM17c+FtFrXfI4736hXk1JqrgcRVaufufyUPK6OOeDebI2bjfgNK86Hkv12APhSbUNRruzFH8Zwva2mrF2wDAyF/ThNP9e1VfbcyQaZaExPm4wJFO935fH2lwysSiQEuNx3GCSvDkO6iruPAoGAPjFOxVSR7zreBb88IshYFwzOIf2dofmJntNKskb8PVsAe5AVE9YU4mW6MX7KMr0vmpgBSdD7AT/3Loq/V6oQbBcHeI/x6c2ojuk9AFu31vAIDNTb86BzN+C8IeW19ibEydkfc3xYUdibYTJiBvg9GcRFq6bPj+W2XFqrkmW8PKk=";
String format = "json";
String charset = "UTF-8";
String signType = "RSA2";
String appCertPath = "src/main/resources/appCertPublicKey.crt";
String alipayCertPath = "src/main/resources/alipayCertPublicKey_RSA2.crt";
String alipayRootCertPath = "src/main/resources/alipayRootCert.crt";
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(serverUrl);
//gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do
certAlipayRequest.setAppId(appId);
//APPID 即创建应用后生成,详情见创建应用并获取 APPID
certAlipayRequest.setPrivateKey(appPrivateKey);
//开发者应用私钥,由开发者自己生成
certAlipayRequest.setFormat(format);
//参数返回格式,只支持 json 格式
certAlipayRequest.setCharset(charset);
//请求和签名使用的字符编码格式,支持 GBK和 UTF-8
certAlipayRequest.setSignType(signType);
//商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。
certAlipayRequest.setCertPath(appCertPath);
//应用公钥证书路径(app_cert_path 文件绝对路径)
certAlipayRequest.setAlipayPublicCertPath(alipayCertPath);
//支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径)
certAlipayRequest.setRootCertPath(alipayRootCertPath);
//支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径)
AlipayClient alipayClient = null;
try {
alipayClient = new DefaultAlipayClient(certAlipayRequest);
} catch (AlipayApiException e) {
e.printStackTrace();
}
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
request.setBizContent("{" +
"\"out_biz_no\":\"123456789\"," +
"\"trans_amount\":1.00," +
"\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +
"\"biz_scene\":\"DIRECT_TRANSFER\"," +
"\"order_title\":\"支付宝单笔转账1元\"," +
"\"payee_info\":{" +
"\"identity\":\"18888888888\"," +
"\"identity_type\":\"ALIPAY_LOGON_ID\"," +
"\"name\":\"张三\"," +
"}," +
"\"remark\":\"支付宝单笔转账1元\"," +
"\"business_params\":\"{\\\"payer_show_name\\\":\\\"中国国防科技有限公司\\\"}\"" +
"}");
AlipayFundTransUniTransferResponse response = null;
try {
response = alipayClient.certificateExecute(request);
} catch (AlipayApiException e) {
e.printStackTrace();
}
if (response.isSuccess()) {
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
}
}
注意:应用公钥、支付宝公钥、支付宝CA根证书的路径问题。
正式开发:自行配置参数信息到Nacos等配置中心。