最近收到很多邮件,询问如何集成支付宝和paypal到网站中,而这些咨询的朋友又是比较熟悉php编程的,所以我不妨写一篇日志简单减少集成的流程:
- 支付宝请首先购买商家服务,否则没有API使用,同理paypal请升级为商家用户;
- 创建一个支付记录的数据表,表里面应该至少包含1. 交易ID 2.交易日期 3. 交易金额 4.此笔交易所有者的帐号,其他信息;
- 创建交易链接,创建链接包含交易金额,同时包含服务器通知链接*(后面有解释),便于服务器将交易状态通知到该程序。
- 编写通知链接指向的那个文件,接收交易平台发过来的通知,如果确定交易成功,则返回一个“成功”的标志给服务器,以免服务器重复发送。同时将交易 数据更新到第二步创建的数据表中,供今后使用;
- 至此,每个用户的当前余额就可以在交易记录中提取了,有了数据,后面如何扣款,那自然是很简单的事情了。
服务器通知链 接*:一旦发起了交易,只要在支付宝或者是paypal创建成功,那么支付平台的服务器就会向你指定的这个链接发送通知。然后便可以根 据发送过来的内容判断交易状态。当然,这个程序同时也要给交易平台一个应答,否则交易平台无法判断通知是否被接受到,如果无法判断通知被接受到,交易平台 服务器会不断的发送通知,当然发送会有时间间隔的,这个时间间隔会不断的增大。
几点注意事项:
- 支付宝的通知链接是不能有任何get参数的,比如 http://homzz.com/ali_notify.php?userid=100 这样是永远不可能成功的,所以要判断交易与哪个用户相关,必须在第二步,将交易ID和交易所有者关联好,到时候根据支付宝的通知返回的交易ID来判断交易 的所属;
- paypal没有get参数限制,然而paypal的交易ID是不可以预设的,因此,我们可以动态创建通知返回链接如 http://homzz.com/ali_notify.php?userid=100,那么这笔交易产生之后,paypal就只会向这个指定的 link发送通知;
- 接收到一个通知之后,请向paypal或者alipay返回成功标志,以免重复通知;
- 由于有时候程序故障,或者第三方支付平台也会故障,或者是网络故障,导致返回的“成功”标志没有被支付平台服务器识别,所以在第四步的时候,要考 虑重复通知问题,也就是说,即使重复通知了,数据库也不要产生多次插入操作,防止凭空出现无用的交易。
原文出处:http://www.storyday.com/html/y2010/2642_a-few-words-on-how-to-integrate-the-site-alipay-arrive-in-time-or-paypal-transactions.html