Ruby 微信支付 RubyGem 发布 - 适用于微信支付 V3 接口

lanzhiheng · May 13, 2021 · Last by 694586087 replied at November 01, 2023 · 2168 hits
Topic has been selected as the excellent topic by the admin.

花了一周多的时间总算把公司微信支付相关的业务代码抽成一个 Gem,第一次写 Gem 肯定有很多不完善的地方,希望大家多给点意见吧。

原文连接:https://www.lanzhiheng.com/posts/ruby-gem-for-wechat-pay-v3

前言

这个 Gem 主要针对微信的 V3 接口做的封装,之前也发过文章来讨论微信的加密/解密过程,今天这个 Gem 也算是之前理论的产物。它对微信的加密/解密过程以及一些常用的接口做了简单的封装,用户可以开箱即用。针对笔者遗漏的接口,你也可以参考源代码封装出自己的版本。

Gem 介绍

安装好 Gem 之后

gem 'wechat-pay'

用户只需要简单配置所需要的信息,就能够直接使用微信的接口

WechatPay.apiclient_key = File.read('apiclient_key.pem')
WechatPay.platform_cert = File.read('platform_cert.pem')
WechatPay.apiclient_cert = File.read('apiclient_cert.pem') # 没有的话先注释掉
WechatPay.app_id = 'you appid'
WechatPay.mch_id = 'your mchid'
WechatPay.mch_key = 'your mch key'

公共接口目前主要分到 4 个模块中

  • WechatPay如上所示提供了类方法来设置来读取关键的信息。
  • WechatPay::Sign对一些加密/解密的关键方法做了封装,为接口的封装提供支持。针对我遗漏的接口你可以利用里面的方法来封装出自己的版本。不用去纠结微信那繁琐的开发指南
  • WechatPay::Ecommerce基于电商收付通的所有接口做了封装(公司业务需要)。而电商收付通所用到的接口跟服务商的接口会有些重叠,文档还没整合得太好,还请见谅。
  • WechatPay::Direct直连商户相关的接口做了封装,目前只封装了像支付,合单支付,退款等比较常见的接口,后面有需要会慢慢追加。

文档

由于时间比较仓促,文档都是直接通过rdoc来生成,并托管到Github Pages

笔者尽可能对每一个接口都提供了用例,程序员们可以直接贴代码并替换成自己商户系统的相关内容。

比方说,获取证书的接口,我会附上相关的微信文档连接,以及用例代码

get_certificates

测试

要针对微信的每个接口去写测试用例是很难的一件事情,个人精力也比较有限,所以我只针对WechatPay::Sign的相关接口写了测试,每次合并前都会跑 CI,起码先保证签名相关的逻辑不出问题,对接口的封装才会有意义。

test

致社区

如果大家有微信支付相关的业务需求可以考虑尝试一下这个 Gem,有问题请及时给我建issues,能提PR就更好了。希望这个随着这个 Gem 的完善,能给一些对接微信支付的同学节省不少时间。

有转账到红包,转账到零钱的封装吗

Reply to LPFpengfei

暂时还没有。后面慢慢加吧。

可以根据源代码暂时先自己封装一下😂

https://github.com/lanzhiheng/wechat-pay/blob/master/lib/wechat-pay/direct.rb#L453

hooopo mark as excellent topic. 14 May 01:04
Reply to LPFpengfei

官方产品接口有些还停留在 V2,包括企业支付。 https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml

用了这个 gem,改了一下 gemspec 里的 activesupport,以支持 Rails 7.1,非常好用,感谢🙏

文档看不了了

You need to Sign in before reply, if you don't have an account, please Sign up first.