0.由于微信支付和支付宝支付代码差不多,直接可以去下载尚硅谷支付的代码查看这里只写一下与微信支付不同的地方
1.微信支付和支付宝支付 流程
//支付宝支付 直接可以调支付(加密比较麻烦)
//微信支付 需要拿appid得到openid,需要准备h5的数据给前端(调用多次接口比较麻烦)
2.支付流程
//登录沙箱网站 https://openhome.alipay.com/develop/sandbox/app
1.我们发送url到支付宝返回跳转 如pay1 pay2
2.发送参数,主要填必填的参数
passback_params 支付成功后会原样给我们跳转的url
bizContent 包括了很多对象的参数比较方便是字符串拼接
3.生成的二维码,因为是沙箱,所以要局域网地址访问模拟器的支付宝4.注意订单号不能重复
3.代码
引入依赖
<!--支付宝 SDK-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.22.57.ALL</version>
</dependency>
下载沙箱支付宝 模拟器打不开沙箱支付宝,使用手机解决,将生成的链接发给手机
https://ur.alipay.com/6GhG2qA8NMPx0weXK7XOl2
4.返回的html代码的url,可以通过url转二维码的工具类,这个工具访问我们的网址,跳转到支付宝生成的页面(和点击url是一样的)
5.开头支付宝支付的流程
签约--->电脑网站支付--->开发信息 加密--->公钥
商家账号--->和支付宝绑定
6.官网有在线调试工具,调试 生成指定的代码
1. 支付宝异步通知,需要返回success ,不然25小时重发8次
需要用公钥验签后校验商户系统与订单号,金额,商家id,以防黑客篡改
处理重复通知,可能没有返回success成功,导致多条处理的日志(直接return;即可)
2.微信/支付宝可能会有多台服务器向我们发送回调数据,我们要加尝试获取锁防止并发,导致多台日志记录
3.取消wx/支付宝 订单 ,支付宝没有登录/扫码,支付宝不会创建订单 ,不抛异常,本地关闭订单
4.主动查询订单,如果支付宝没有返回订单的处理结果
5.定时任务查单改订单状态(4步骤的实现)
6.用户订单太久没有支付,关单
正常回调改订单成功(网络不好,模拟关内网穿透) 主动查改状态
7.退款
1.一笔订单可以有多个金额来退款,使用退款单编号 out_request_no
一笔退全部 使用订单编号
退到银行卡 要退款冲退通知(沙箱无法模拟)
8.对账 账单下载
9.需要注意的点 1.要 超时关闭订单时间>支付超时时间,不然导致支付宝与我们的系统订单状态不一致