2019-1-27 澳洲微信支付: Paylinx 开发
实现思路+具体代码
(题图是2019年1月27号 http://www.paylinx.com.au/ Paylinx 官网的截图)
Paylinx 介绍
Paylinx 是一家澳洲的支付商。
简单说就是,假设你有一个澳洲的网店。用了 Paylinx 之后就能进行微信收款了。
(支付宝收款貌似也可以。官网和文档里都有说,但是我没实现过所以就不介绍了)
这篇文章对谁有用?有什么用?
对谁有用?希望实现 Paylinx 微信支付的程序员
有什么用?可以看这篇文章来大大缩减你的开发时间。因为不但有思路介绍而且有具体代码。
本文比较适合 Ruby on Rails 程序员,因为最后给出的代码都是 Ruby on Rails。
但如果你是 PHP 或 Java 程序员也没关系,思路是一样的,只是具体代码稍有不同。
看着代码结构稍微翻译一下就可以了。
这篇文章讲什么
如何用 Ruby on Rails 5 实现 Paylinx 的微信扫码支付部分。
在文档中叫 "Wechat - 创建交易"
文档地址
文档截图:
这篇文章只讲这一节,因为我只实现了这一节。
先上最后结果
- 用户点击付款
- 显示二维码
- 用户扫码付款后流程结束,进入订单详情页
流程
我们先从最高层次看一遍整个流程。然后再讲细节。
- 你给 Paylinx 发一个请求,把 "要支付多少钱","订单号","支付后的回调地址" 等信息传过去
- Paylay 收到请求,然后返回数据,其中最重要的是 code_url:
weixin://wxpay/bizpayurl?pr=eksyRz2
- 你把 code_url 进行二维码编码,显示给用户看
- 用户微信扫码支付,Paylinx 然后会给你之前给的 "支付后的回调地址" 发一个请求,告知你用户已经给钱了。然后你就可以走自己的业务逻辑了,包括修改订单状态等。最后返回一个 "SUCCESS" 就行。
细节
- 首先根据 Paylinx 的文档。为了“创建交易”
你要把以下数据以 xml 格式发给 Paylinx
注意: 此处需要签名,注意 sign 字段。
签名会需要 key, 这个 key 是在 Paylinx 注册后会颁发给你的。
格式类似这样i111HhkA0cHoYC29d9Z222OTYMAIzzz2T
(为了安全,内容已混淆,改了一些地方,我当然不可能把我们的 key 原样泄露出来)
key 大概是这个长度,由字母和数字混合组成。
sign 签名的方法是:
别担心,后面会给代码
请求发出去之后,根据 Paylinx 文档,应该返回如下格式
此处我给 notify_url 和 code_url 高亮了因为这2个比较重要。
notify_url 是"回调地址",意思是用户支付后, Paylinx 会把通知发到这个地址。
code_url 是二维码
-
这些信息你都要存起来。
比如用户可能关掉了二维码支付页面。
下次再来,总不可能下次进来就没有付款方式了把。
所以 code_url 等几个字段的信息要存起来。 -
处理回调
用户支付后会发回调。根据文档:
-
你应该验证签名,确保的确是 Paylinx 发过来的请求,而不是别人瞎发的请求想占你便宜。
-
签名没问题了,就把用户的订单状态改成已支付。
具体代码
https://github.com/1c7/paylinx-ruby-on-rails
吐槽
-
文档差,特别是"参数签名"和"接口回调"的部分
-
测试费钱,没有 sandbox 测试模式,不像 Stripe 那么方便。
最少需要 1.30 澳元。低于 1.30 澳元会报错。所以每次测试 Paylinx 至少要 6.47 元人民币。
全文完
贴出来只是希望节省其他程序员的时间。
我从2019年1月27号的周日下午14:00 弄到 2019年1月28号01:39。
包括了写代码,测代码,修代码。写这篇博客。把代码开源出来。
感谢阅读。
如果你希望更省事
希望我可以直接帮你开发。
请联系 [email protected]。