Gem Alipay Gem 单笔转账

yu7272yu · 2018年06月15日 · 最后由 yu7272yu 回复于 2018年07月04日 · 5190 次阅读

通过 Alipay 这个 gem 包,调用支付宝的单笔转账的接口,

1 不传入收款方真实姓名是可以调用成功的,

2 但是如果多传入一个收款方的字段(参数为汉字),这个接口就调用失败(签名失败),支付宝接收到的汉字,是乱码,(服务端和代码里的编码格式都是 utf-8)

response = @client.execute(
         method: 'alipay.fund.trans.toaccount.transfer',
         biz_content: {
            out_biz_no: '1603201806061445434920',
            payee_type: 'ALIPAY_LOGONID',
            payee_account: '支付宝账号',
            amount: '1.0',
            payee_real_name: '真实姓名',
            remark: '备注:账号用户名匹配'
          }.to_json(ascii_only: true)
        )

支付宝那边接收到的是:

所以你发这篇帖子的目的是?

imwildcat 回复

我想知道怎么将传过去的参数,不要变成乱码

可以帮 debug 一下

Rei 回复

我要怎么 debug

yu7272yu 回复

按官方文档实现一遍,看哪里有问题。

Rei 回复

最开始这样实现的,是没有问题的

@client = Alipay::Client.new(url: "https://openapi.alipay.com/gateway.do",
            app_id: Setting.alipay.appid,
            app_private_key: File.read("lib/certificate/alipay_app_private_key.pem"),
            alipay_public_key: File.read("lib/certificate/alipay_public_key.pem")
        )


response = @client.execute(method: 'alipay.fund.trans.toaccount.transfer',
biz_content: {out_biz_no: '31880008821423432',
payee_type: 'ALIPAY_LOGONID',
payee_account: '***',
amount: '0.1'}.to_json(ascii_only: true))

我指支付宝的官方文档。

Rei 回复

官方的文档,我的 sign,验签好像一直不对。。。。

可能是编码的问题,alipay 不认 utf-8 编码,或者处理方式和 ruby 不一样,可以尝试 pull/78 里面的方式用 gbk 编码。

不过不要期望我给出完整方案,因为我没有项目在用 alipay,现在只负责 merge,欢迎 PR。

官方的接口写的挺挫的,应该是很久没更新了;个人收款的话可以试试 bufpay.com 即时到账接口

Rei 回复

好的好的,我在试试呢

bufpay 回复

可是还是想先整明白单笔转账,实在不行,我在换接口

14 楼 已删除
bufpay 回复

你说的即时到账是买家给钱,我说的单笔转账是商户给钱。

Rei 回复

我用了 gbk 的编码,还是不行,伤心😟

估计是 rails 版本问题 还是使用 JSON.generate({ subject: '测试' }, ascii_only: true) 这种方式可以

guojhq 回复

好的,我先试试啊

guojhq 回复

忘记回复你了,可以成功了的,谢谢你哦,么么哒

yu7272yu 关闭了讨论。 07月28日 20:25
需要 登录 后方可回复, 如果你还没有账号请 注册新账号