分布式秒杀项目集成支付宝支付时大致流程
1.微服务必须全部开启
2.需要在支付宝的开放平台-->研发服务--->沙箱环境中--->可以看到APPID和支付宝网关
3.下载支付宝的开放平台开发助手,使用秘钥工具,生成应用私钥和应用公钥
4.复制应用公钥到支付宝的沙箱环境中,点击RSA2秘钥,粘贴到应用公钥处,进行加签,生成支付宝公钥
5.在网上注册NATAPP这个内网穿透的软件,使用免费隧道获取免费隧道的autoken并在配置中修改本地端口(改成自己项目中的网关的端口)
6.下载natapp_windows的一个压缩包,然后解压打开一个文件名是config.ini的文件,将上面获取的autoken填写到这个文件对应的属性上,其他属性按照默认值即可,不用改动
7.启动natapp.exe,将会开启一个命令窗口,复制命令窗口中Forwarding这一行中的一个url路径:比如:http://x4m2cu.natappfree.cc 由于使用的是内网穿透的免费隧道,因此每次启动natapp,这个路径都会变.都需要去gitee中配置,同时也可以看到这个路径后面的端口,也就是刚刚在我的隧道中配置的本地端口
8.在gitee中配置alipay.yml,里面的属性全部是支付宝sdk中的属性,在将这些参数传给支付宝之前,需要进行配置才可以,将上面获取的natapp路径粘贴到return_url和notify_url中,同时在这两个url后面还要配上对应服务名:比如:
notify_url: http://mrjgk9.natappfree.cc/seckill/api/alipay/notify_url
return_url: http://mrjgk9.natappfree.cc/seckill/api/alipay/return_url
notify_url表示是发起支付宝请求之后,支付宝异步通知回调接口(就是支付宝那边接收参数以后调用的这个接口),这个接口主要是根据用户的支付状态,更新订单以及完成相关支付后的业务操作,正常的情况下返回一个success字符串
return_url表示支付宝调用异步通知回调接口之后再调用的同步通知回调接口,这个接口的目的是向用户展示支付结果
9.在秒杀服务中配置一个sdk的controller,用来将页面请求发送来的参数通过商户私钥进行加密,然后通过调用支付宝的sdk发送支付请求到支付宝后台,支付宝后台,使用商户公钥进行解密,校验成功后,支付宝会在后台为对应的商户创建一笔未支付的支付订单,同时将结果响应给支付宝sdk,支付宝sdk在将结果响应到浏览器上
关于参数数据验证:在将参数发送给支付宝之前,需要对数据进行签名加密,使用私钥对参数进行加密,得到就是签名,也就是密文,支付宝后台收到以后将会对数据进行验证,使用商户公钥对签名进行解密,得到对应的加密的参数,.然后判断是否和传过来的参数一致,如果一致说明参数没有被修改过
10.支付宝sdk获取响应结果以后,发主动发送重定向到支付宝支付页面,这时候用户需要进行登录,------>选择支付方式----->发送支付请求----->支付宝后台收到支付请求以后需要对对用户的的身份/权限/余额等进行校验,校验成功后将会从用户账户中扣款,打款到商户对应的账户中,饭后将支付结果响应给支付页面,然后又会响应到sdk中的result_url方法中,最终将会响应给用户...