这篇文章将为大家详细讲解有关Ruby如何集成支付宝快捷支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
客户端
客户端集成移动端支付宝快捷支付,iOS和Android端很方便,使用支付宝提供的sdk就可以了,要注意的地方就是:
-
一定要用支付宝提供的工具,生成商户自己的公钥和密钥,密钥要经过pkcs8编码。这些都可以使用支付宝提供的工具来完成。
-
要把商户的公钥提交到支付宝。
基本上看着文档就可以很快完成集成测试。
当用户手机没有安装支付宝App,则会弹出安装支付宝App的弹窗,点确定就去下载支付宝App,点取消就弹出webview打开网页版支付宝结算。
服务端
服务端是用Ruby。
因为所有的支付请求都由客户端完成了,那么服务端只剩下了实现支付宝异步通知接口的任务。
异步通知接口有两步工作:RSA签名验证、Notify ID验证是否支付宝请求。
RSA签名验证
目前快捷支付的签名类型,只支持RSA, 所以服务端接收异步通知的接口Notify就只能用RSA来验证签名。支付RSA验证的逻辑是这样的(文档里也有描述,理解这个逻辑有助于顺利完成验证):
-
商户使用支付宝提供的工具生成RSA公钥私钥,并把商户公钥提交给支付宝。 这一步意味着双方互换公钥。
-
支付宝发给商户的请求是用支付宝的私钥加密的,所以必须用支付宝的公钥解密,而支付宝的公钥在文档里已经提供。
-
商户发往支付宝的请求,必须是商户自己的私钥加密,而支付宝那边用商户的公钥解密。就是移动客户端sdk完成的工作。所以移动客户端那边一定是用商户自己的私钥,并且是经过pkcs8编码的。
理解了RSA的加密解密逻辑,我们就了解了,服务端后台要验证来自于支付宝的异步通知POST请求,必须用支付宝的公钥了。
复制文档里支付宝的RSA公钥, 换行的部分用/n代替,如下:
然后,我们使用OpenSSL::PKey::RSA类:
alipay_pub_key是上面的支付宝公钥。
一定要上面这种格式,或者你使用工具生成符合pem格式的pem文件,否则会报错。
然后我们就可以使用rsa的verify方法验证签名了:
注意,这里的sign,是支付宝请求里的签名参数, 这里的sign一定要经过base64解码。rsa_string是根据支付宝文档生成的待签名字符串。
这样,你就可以完成RSA验证了。
Notify ID验证
这个很简单, 带上支付宝文档里提供的参数,给支付验证接口发个请求就可以了。
关于“Ruby如何集成支付宝快捷支付”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/230573.html