支付宝接口使用讲解

一、说明

此篇博客讲解在沙箱环境中调用支付宝接口,沙箱环境为支付宝官方提供的测试环境,如需用于实际用途请自行在此基础上完善即可

先来说一下我们web项目调用支付宝接口的大概流程:
我们从后台将支付宝所需要的参数传给支付宝,支付宝会返回给我们一个字符串形式的form表单和实现表单提交的script脚本,我们将这个字符串传给前台,前台会自动提交form表单,然后便会看到支付宝官方付款的界面了,付款完成后,支付宝会通过同步和异步两种方式把付款结果信息返回给我们事先设置好的通知接口,整个流程结束。
注意:由于项目需要与支付宝进行交互,所以项目需要部署到公网,确保外网能访问到你的项目。

二、具体实现

2.1、下载官方Demo和SDK

这里我直接使用了支付宝官方提供的Demo来作示范,实际使用可在了解业务流程后将所需代码整合到自己的项目即可,Demo下载地址:
https://docs.open.alipay.com/270/106291/
如图所示,选择java版下载即可:

获取秘钥:通过该地址https://docs.open.alipay.com/291/105971下载秘钥生成工具,下载对应平台的即可

打开,阅读《使用说明文档》,生成秘钥对即可获取公钥和私钥。

注意:不要有将该工具放到有特殊符号的路径下,大坑。

2.2、导入项目

将下载的demo导入到eclipse中

2.3、修改

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

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

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

2.3、结果

以下是次Demo的运行结果图

点击支付结果如下:

三、流程

接下来讲解一下大概的业务流程:

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

初始化AlipayClient,增加请求参数后,请求支付宝得到变量result,这个变量即为支付宝返回给我们的字符串形式的form表单,这样的话这个逻辑就清楚了:支付宝把支付所需要的参数信息配置到form表单中,我们再把这个字符串形式的form表单传给前台,前台提交form表单给支付宝的服务器,便出现了我们所见的付款界面。
注意:当用于实际项目中的时候,这个过程可能会出现中文乱码,如果传给前台的result变量出现中文乱码,那么会直接影响到对接支付宝的过程(这里经过测试得出:如果是我们平常使用的浏览器,如谷歌、360等,会直接在前台打印出这个乱码的form表单,并不会提交给支付宝,IE和火狐会照常提交,但是支付宝服务器会中断这个过程并告诉你验证出错)。

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

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

异步通知页面 notify_url.jsp:

异步通知可理解为:利用支付宝的反馈信息进行业务逻辑的处理,例如进行数据库的操作。 也就是说这个页面是用户看不到的。
异步反馈信息和同步反馈信息是有区别的,我们在实现的过程中可自行打印出来观察。
异步通知会返回一个交易状态,为“TRADE_FINISHED”或“TRADE_SUCCESS”两种状态:前者为交易结束,例如用户退款后会返回这个状态,在此状态下做交易结束的业务逻辑处理;后者是交易成功,用户付款完成后会返回这个状态,在此状态下做交易成功的业务逻辑处理。

到此,整个支付的流程就完成了。伙伴们还可以自己去研究一下“退款”、“交易查询”等业务逻辑实现。

在实际使用过程中,并非一定要使用此Demo中的代码,根据自身需求进行合理更改即可。

发布了23 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36386908/article/details/90550762
今日推荐