支付宝沙箱环境

时间:2024-04-10 22:32:53

一. 沙箱环境网址

https://openhome.alipay.com/platform/appDaily.htm?tab=info

二. 进入沙箱环境获取APPID,获取网关

支付宝沙箱环境
支付宝沙箱环境
支付宝沙箱环境

三. 下载沙箱环境Demo

沙箱Demo地址

支付宝沙箱环境

四. 下载沙箱环境工具

沙箱环境工具
注意:不要有将该工具放到有特殊符号的路径下,大坑
支付宝沙箱环境

五. 生成公钥和私钥

支付宝沙箱环境

六. 将沙箱环境Demo导入eclipse中,配置公钥私钥

支付宝沙箱环境
这里需要修改的是APPID,公钥和私钥以及支付网关,因为这里使用的是沙箱,APPID和网关使用的是测试网关。

注意:沙箱环境中支付宝网关跟这个配置类默认给出的网关是有区别的!另外还需要把异步和同步通知页面改为自己的工程访问地址。

实际开发需要更换成自己的appid和支付宝网关,需要到蚂蚁金服创建应用即可。开启签约即可实现

七. 运行结果图

支付宝沙箱环境
支付宝沙箱环境

八. 流程

在index.jsp页面中点击付款后,会把付款信息表单提交给 alipay.trade.page.pay.jsp ,
支付宝沙箱环境
来看一下这个jsp实现的业务:
支付宝沙箱环境

初始化AlipayClient,增加请求参数后,请求支付宝得到变量result,这个变量即为支付宝返回给我们的字符串形式的form表单,这样的话这个逻辑就清楚了:支付宝把支付所需要的参数信息配置到form表单中,我们再把这个字符串形式的form表单传给前台,前台提交form表单给支付宝的服务器,便出现了我们所见的付款界面。

注意 :当用于实际项目中的时候,这个过程可能会出现中文乱码,如果传给前台的result变量出现中文乱码,那么会直接影响到对接支付宝的过程(这里经过测试得出:如果是我们平常使用的浏览器,如谷歌、360等,会直接在前台打印出这个乱码的form表单,并不会提交给支付宝,IE和火狐会照常提交,但是支付宝服务器会中断这个过程并告诉你验证出错)。

支付完成后,支付宝会根据我们在AlipayConfig.java中配置好的异步和同步通知页面进行付款信息的返回。
先看同步通知页面 return_url.jsp:

支付宝沙箱环境
同步通知可理解为:把付款信息展现给用户看,只做展示,不做业务逻辑处理。 也就是说这个页面是给用户看的。
付款完成后,接收到支付宝的反馈信息,这里可自行去读代码的业务实现,然后支付宝会验签反馈信息,如果整个流程没问题的话,那么验签成功,把付款信息展现给前台。

支付宝沙箱环境
支付宝沙箱环境
异步通知可理解为:利用支付宝的反馈信息进行业务逻辑的处理,例如进行数据库的操作。 也就是说这个页面是用户看不到的。
异步反馈信息和同步反馈信息是有区别的,我们在实现的过程中可自行打印出来观察。

异步通知会返回一个交易状态,为“TRADE_FINISHED”或“TRADE_SUCCESS”两种状态:前者为交易结束,例如用户退款后会返回这个状态,在此状态下做交易结束的业务逻辑处理;后者是交易成功,用户付款完成后会返回这个状态,在此状态下做交易成功的业务逻辑处理。

到此,整个支付的流程就完成了。“退款”、“交易查询”等业务逻辑随后进展。
在实际使用过程中,并非一定要使用此Demo中的代码,根据自身需求进行合理更改即可。

错误总结:

1.点击支付时报错:missing-signature-config 错误原因: 验签出错, 未配置对应签名算法的公钥或者证书
报错信息说的很明白
开放平台未配置商户公钥导致。请登录开放平台,上传公钥。 链接
解决问题
将生成器里得公钥上传到支付宝上即可
2. APPID错误
因为浏览器缓存问题,清除缓存即可付款