支付宝对接

1. 支付宝开通应用并开通功能
2. 下载工具 生成秘钥 https://docs.open.alipay.com/291/105971/
3. 对接接口 以App支付为例 https://docs.open.alipay.com/204/105297/
eg:
String URL=“https://openapi.alipay.com/gateway.do”;
String APP_ID=“2019032663719146”;
String APP_PRIVATE_KEY=" “;
String FORMAT=“json”;
String CHARSET=“UTF-8”;
String ALIPAY_PUBLIC_KEY=” “;
String SIGN_TYPE=“RSA2”;
AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
返回支付扫码页面
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
alipayRequest.setReturnUrl(“http://www.subaotech.com/html/123456.html”);
alipayRequest.setNotifyUrl(“http://47.100.252.233:8081/zhuanjiabao/getNotify”);//在公共参数中设置回跳和通知地址 http://47.100.252.233:8081/zhuanjiabao/alipay/payEnsure
alipayRequest.setBizContent(”{" +
" “out_trade_no”:""+outTradeNo+""," +
" “product_code”:“FAST_INSTANT_TRADE_PAY”," +
" “total_amount”:"+currencyPlan.Price+"," +
" “subject”:""+currencyPlan.Subject+""," +
" “body”:""+currencyPlan.Body+""," +
" “passback_params”:“subaoProfit”," +
" “extend_params”:{" +
" “sys_service_provider_id”:“2019032663719146"” +
" }"+
" }");//填充业务参数
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.setContentType(“text/html;charset=” + CHARSET);
httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();

4. 支付宝官方Demo下载 https://docs.open.alipay.com/54/106370
5. 异步通知查看
通知日志排查 https://openclub.alipay.com/read.php?tid=2085&fid=25
https://openmonitor.alipay.com/acceptance/cloudparse.htm
https://blog.csdn.net/qq_40460909/article/details/80998069
6. 注意事项
1) 调用接口时异步通知的页面需要公网可以访问,(本地测试除外),
2) 调用接口时 使用的是支付宝公钥 不是应用的公钥,java需要私钥是pkcs8格式的
3) 正式环境的支付宝网关https://openapi.alipay.com/gateway.do
4) 支付宝异步通知日志中的sign值是脱敏处理过的,确认能收到通知后才有必要查看日志,否则即使查看了也不能测试
5) 本地测试时 可以使用fiddler进行测试(注意测试参数格式和get请求的参数格式相同即可测试)
7. 如果遇到解决不了的问题 可以咨询支付宝在线开发人员的技术支持
8. 异步通知验证失败问题 多数是sign格式问题 注意得到的sign 处理过可能会把原来的”+”变成” ”(空格),测试时如果报sign长度问题,需要将sign值进行Unicode编码,注意 支付宝测试中的sign=$$$ 因为支付宝对其进行了脱敏处理,该值需要在异步通知的结果中提取保留。
https://blog.csdn.net/sinat_32575213/article/details/79746731

https://blog.csdn.net/qq_40460909/article/details/80998069

猜你喜欢

转载自blog.csdn.net/Street_Walker/article/details/89361300