odoo8.0 支付宝模块开发心得

odoo8.0 支付宝模块开发心得

odoo8.0 支付宝模块开发心得

官方重新设计了 odoo8.0 的在线支付模块,全面支持第三方支付的接口扩展,大幅增强了实用性和安全性。可以说,官方7.0版本的支付模块只是做做样子,还不实用,要达到实用还需要深度开发,到了8.0,官方提供的四个第三方支付至少有两个达到了实用的水平。

官方提供的四个第三方支付模块作了很好的示范,只要愿意花时间去阅读代码,很快就能上手。掌握官方模块的架构和思路后,做起来就是漫长的对着接口文档进行编码和测试了。

模块架构是这样的:构造请求参数(继承 payment.acquirer 对象)、编写第三方支付服务器的回调接口(在 /controllers/main.py 中)、处理交易数据(继承 payment.transaction 对象)。

言归正传,下面说说支付宝即时到账接口的开发心得。

构造请求参数

比较难的部分是计算接口的安全校验码了,支付宝提供 MD5,DSA、RSA 三种模式,但实际上,支付宝官方只详细描述了计算MD5的方式,另两种需要自行查找资料。支付宝接口官方文档写得很糟糕,如果没有开发过别的第三方支付接口模块而直接就开发支付宝,不管你使用哪种语言,看文档和示例代码都会抓狂。文档中甚至不告诉你访问支付宝接口时,该使用什么网址。

对安全性要求较高的网站,应该向支付宝公司申请开通防钓鱼时间戳验证服务,在构造请求参数时加入防钓鱼时间戳。

没用到的参数就不要出现在参数列表中,用到的参数一定要填写值。

编写回调接口

这部分主要难点在校验数据的正确性,除了 MD5 签名提供第一级安全保障外,还可以使用 ‘notify_id’ 向支付宝服务器求证所收到的数据是否正确,实现第二级安全保障。

处理交易数据

这部分没什么难度,数据都已经正确后,把获取的交易数据写入对象中保存。

关于接口测试

建议用真实账户测试,支付小额,例如 1 分钱。支付宝官方都不建议使用沙箱测试。

示例

我们在提供了支付宝即时到账接口的支付方式,测试时请务必注意我们收款后不发货也不退款的,不要支付多于 1 分钱的款,敬请谅解。

(关于登录用户 名和密码,经常有人问我们要,其实在“登录”画面的右侧可看到“注册”链接,可自行注册。)