1. 账号准备
1. 签约产品
首先需要有一个用来收款的商家账号(一般是让客户提供),这个账号需要签约对应的产品,见(https://b.alipay.com/order/products.htm?channel=ent)
这里我用到的是即时到账
2. Pid和key
然后需要知道pid和key,见(https://b.alipay.com/order/pidAndKey.htm),这2个参数在调用支付接口的时候会用到
3. 接口文档
然后下载对应的文档(https://b.alipay.com/order/techService.htm?channel=ent)
我这里用到的是即时到账收款
2. 文档解读
1. 文档结构
解压压缩文档可以看到下面的目录
打开第一个文件夹看到
Demo文件夹是各种语言的demo实现,即时到账交易接口(create_direct_pay_by_user).pdf是接口的具体细节,标红的是我们需要主要关注的
先看看 即时到账交易接口(create_direct_pay_by_user).pdf
我们主要需要关注的地方是pdf的第11页的请求参数说明
具体需要用到的参数看后面的代码
2. demo解读
然后我们打开demo文件夹,可以看到
用IDE打开项目
从index.jsp开始查看可以看到具体的流程。代码很简单。
3. 具体实现
1. Form提交
首先你在自己的站点把你需要的数据form提交到后台
我这里只有一个积分,你可以有更多的其他数据。
然后数据来到controller
下面就是各种的提交参数,具体的参数的作用可以看接口文档。
Controller return到如下这样的一个页面
是把controlle里的拼接的html提交了。,然后就会出现支付页面。
能出来这个页面基本就算成功了。
其实把所有的参数放在页面提交有时候也是可以的,为什么说有时候?因为我们的站点一般是http,支付宝的页面是https,会有提交不了的情况。而且支付宝的demo也是用后台拼接form的方式,是为了生成sign?还是为了安全?应该主要是为了安全,所以还是推荐按支付宝demo的做法去做。
2. 支付成功回调
最后看一下我的回调函数
代码很简单,判断trade_status的状态进行对应的业务处理就可以了,有一点要注意的就是这个方法支付宝可能会回调多次。