对支付宝"快速接入"文档进行解析
请一定要认真看支付宝的文档,该博客仅仅是对人家文档进行补充说明
快速接入url: https://opendocs.alipay.com/open/309/106236
我们直接来到文档 第三步:搭建和配置开发环境
进入编写代码前我们需要准备好相对应的appid,秘钥 和 证书
1.appid
//APPID 即创建应用后生成
2.app_privateKey
//开发者应用私钥,由开发者自己生成
3.app_cert_path
//开发者应用公钥证书路径
4.alipay_cert_path
//支付宝公钥证书文件路径
5.alipay_root_cert_path
//支付宝CA根证书文件路径
点击设置 如下图
我用的是‘公钥证书‘,这里需要上传.csr文件,往下看
下载密钥生成工具生成
https://opendocs.alipay.com/support/01rauw
安装好,打开
上图第2步注意事项,此处 组织/公司填写的是 dvjxxxxx.com
上图第2步,点击 生成CSR文件
会生成 会生成三个文件
xxx.csr , xxx_公钥.txt , xxx.私钥.txt
此时我们就得到:app_privateKey
// xxx.私钥.txt
此操作成功后,直接下载 这3个文件
.app_cert_path
//开发者应用公钥证书路径
.alipay_cert_path
//支付宝公钥证书文件路径
.alipay_root_cert_path
//支付宝CA根证书文件路径
========================================================
开始编写代码
bcprov-jdk15on-1.62.jar
fastjson-1.2.50.jar
commons-logging-1.1.1.jar
这里这里的三个jar包可以用alipay-sdk-java-4.15.0.ALL.jar来代替
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.15.0.ALL</version>
</dependency>
支付宝文档此处有一坑,保证有效json格式,多了两个逗号,后续文档可能会更新
"sub_msg":"ISV权限不足,建议在开发者中心检查对应功能是否已经添加
我这边是调用的单笔转账到支付宝账户产品,您在应用中挂载下转账到支付宝账户的功能包
可到此解决
https://open.alipay.com/platform/developerIndex.htm
创建一个Demo.java
import com.alipay.api.*;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
public class Demo {
//支付宝网关地址(固定)openapi.alipaydev.com/gateway.do
String gateway = "https://openapi.alipay.com/gateway.do";
//APPID 即创建应用后生成
String app_id = "2021002xxx";
//开发者应用私钥,由开发者自己生成
String app_privateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCq03OtoNKEn6zmedAycyHwNsa2Pw+/BdvF759dpo28nldFltJPdrRego/bDFyHbcY1m4/91Ny1Dd9Q6H6DC92YqtSn4sqerk6ap4x/bVN4uUhjOeDh1MqHGLn2eSS1OAPVF5BucslCBZozf+I4B+x/Iw1+8ugAuBzuqu7EQDzRhS9P415tRZcclHghCTi8hIn2JQED+ZVeDnCBSVcZr4JoO8+uWcdALB7bHUbdKKXtmtUmciynZCoSCvahmyFYjnwYYw8l6YKz93MmGPel5X/v1fLhzl9cBQ1Ni/EBu0X7EA0LggXUz6RHRzSzIjgsp9wywv05hhMubHqx1D5ZfTRtAgMBAAECggEBAI3wqwLPSX0HjEvpVZRF1CJb8VsHJRdNT+K1C49uUAE09EEPY+rBMHgDNnMFXxxxxxxxxxxxxxxxx==";
//参数返回格式,只支持 json 格式 json(固定)
String format = "json";
//请求和签名使用的字符编码格式,支持 GBK和 UTF-8
String charset = "UTF-8";
//商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2
String sign_type = "RSA2";
//开发者应用公钥证书路径
String app_cert_path = "C:\\alpaykey\\appCertPublicKey_20210021xxxxx.crt";
//支付宝公钥证书文件路径
String alipay_cert_path = "C:\\alpaykey\\alipayCertPublicKey_RSA2.crt";
//支付宝CA根证书文件路径
String alipay_root_cert_path = "C:\\alpaykey\\alipayRootCert.crt";
public void TestAlpay() {
try {
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(gateway);
certAlipayRequest.setAppId(app_id);
certAlipayRequest.setPrivateKey(app_privateKey);
certAlipayRequest.setFormat(format);
certAlipayRequest.setCharset(charset);
certAlipayRequest.setSignType(sign_type);
certAlipayRequest.setCertPath(app_cert_path);
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
certAlipayRequest.setRootCertPath(alipay_root_cert_path);
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
request.setBizContent("{" +
"\"out_biz_no\":\"20210xxxxx\"," +
"\"trans_amount\":0.01," +
"\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +
"\"biz_scene\":\"DIRECT_TRANSFER\"," +
"\"order_title\":\"201905代发\"," +
"\"payee_info\":{" +
"\"identity\":\"447xxxxxx.com\"," + //支付宝账号
"\"identity_type\":\"ALIPAY_LOGON_ID\"," +//参与方的标识类型,目前支持如下枚举:1、ALIPAY_USER_ID 支付宝的会员ID2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式
"\"name\":\"赖xx\"" +//支付宝账号绑定人
" }," +
"\"remark\":\"201905代发\"," +
"\"business_params\":\"{\\\"payer_show_name\\\":\\\"服务代理\\\"}\"" +
" }");
AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
if (response.isSuccess()) {
System.out.println(response.getBody());
System.out.println(response.getMsg());
System.out.println("调用成功");
} else {
System.out.println(response.getBody());
System.out.println(response.getMsg());
System.out.println("调用失败");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
到此就差不多了,在使用的时候如果还提示各种各样问题,直接找客服(这样是最快的)