美文网首页
肖威洞察 | 如何用 Ruby on Rails 5 实现 Pa

肖威洞察 | 如何用 Ruby on Rails 5 实现 Pa

作者: 2039c142a8d1 | 来源:发表于2019-02-07 14:39 被阅读14次

    (题图是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 - 创建交易"
    文档地址
    文档截图:
    [图片上传失败...(image-cf9b2f-1549521493047)]

    这篇文章只讲这一节,因为我只实现了这一节。

    先上最后结果

    1. 用户点击付款


      pay1
    2. 显示二维码


      pay2
    3. 用户扫码付款后流程结束,进入订单详情页
      [图片上传失败...(image-ed73b9-1549521493043)]

    流程

    我们先从最高层次看一遍整个流程。然后再讲细节。

    1. 你给 Paylinx 发一个请求,把 "要支付多少钱","订单号","支付后的回调地址" 等信息传过去
    2. Paylay 收到请求,然后返回数据,其中最重要的是 code_url: weixin://wxpay/bizpayurl?pr=eksyRz2
    3. 你把 code_url 进行二维码编码,显示给用户看
    4. 用户微信扫码支付,Paylinx 然后会给你之前给的 "支付后的回调地址" 发一个请求,告知你用户已经给钱了。然后你就可以走自己的业务逻辑了,包括修改订单状态等。最后返回一个 "SUCCESS" 就行。

    细节

    1. 首先根据 Paylinx 的文档。为了“创建交易”
      你要把以下数据以 xml 格式发给 Paylinx


      paylinx1111

      注意: 此处需要签名,注意 sign 字段。
      签名会需要 key, 这个 key 是在 Paylinx 注册后会颁发给你的。
      格式类似这样 i111HhkA0cHoYC29d9Z222OTYMAIzzz2T
      (为了安全,内容已混淆,改了一些地方,我当然不可能把我们的 key 原样泄露出来)
      key 大概是这个长度,由字母和数字混合组成。

    sign 签名的方法是:


    paylinx_sign

    别担心,后面会给代码

    请求发出去之后,根据 Paylinx 文档,应该返回如下格式


    paylinx_22233

    此处我给 notify_url 和 code_url 高亮了因为这2个比较重要。
    notify_url 是"回调地址",意思是用户支付后, Paylinx 会把通知发到这个地址。
    code_url 是二维码

    1. 这些信息你都要存起来。
      比如用户可能关掉了二维码支付页面。
      下次再来,总不可能下次进来就没有付款方式了把。
      所以 code_url 等几个字段的信息要存起来。

    2. 处理回调
      用户支付后会发回调。根据文档:


      callback
    3. 你应该验证签名,确保的确是 Paylinx 发过来的请求,而不是别人瞎发的请求想占你便宜。

    4. 签名没问题了,就把用户的订单状态改成已支付。

    具体代码

    https://github.com/1c7/paylinx-ruby-on-rails

    吐槽

    1. 文档差,特别是"参数签名"和"接口回调"的部分

    2. 测试费钱,没有 sandbox 测试模式,不像 Stripe 那么方便。
      最少需要 1.30 澳元。低于 1.30 澳元会报错。所以每次测试 Paylinx 至少要 6.47 元人民币。


      WechatIMG8

    全文完

    贴出来只是希望节省其他程序员的时间。
    我从2019年1月27号的周日下午14:00 弄到 2019年1月28号01:39。
    包括了写代码,测代码,修代码。写这篇博客。把代码开源出来。

    感谢阅读。

    如果你希望更省事

    希望我可以直接帮你开发。
    请联系 guokrfans@gmail.com

    相关文章

      网友评论

          本文标题:肖威洞察 | 如何用 Ruby on Rails 5 实现 Pa

          本文链接:https://www.haomeiwen.com/subject/opzwsqtx.html