溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ruby如何集成支付寶快捷支付

發(fā)布時間:2021-12-22 14:12:08 來源:億速云 閱讀:184 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細講解有關(guān)Ruby如何集成支付寶快捷支付,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

客戶端

客戶端集成移動端支付寶快捷支付,iOS和Android端很方便,使用支付寶提供的sdk就可以了,要注意的地方就是:

  • 一定要用支付寶提供的工具,生成商戶自己的公鑰和密鑰,密鑰要經(jīng)過pkcs8編碼。這些都可以使用支付寶提供的工具來完成。

  • 要把商戶的公鑰提交到支付寶。

基本上看著文檔就可以很快完成集成測試。

當用戶手機沒有安裝支付寶App,則會彈出安裝支付寶App的彈窗,點確定就去下載支付寶App,點取消就彈出webview打開網(wǎng)頁版支付寶結(jié)算。

服務端

服務端是用Ruby。

因為所有的支付請求都由客戶端完成了,那么服務端只剩下了實現(xiàn)支付寶異步通知接口的任務。

異步通知接口有兩步工作:RSA簽名驗證、Notify ID驗證是否支付寶請求。

RSA簽名驗證

目前快捷支付的簽名類型,只支持RSA, 所以服務端接收異步通知的接口Notify就只能用RSA來驗證簽名。支付RSA驗證的邏輯是這樣的(文檔里也有描述,理解這個邏輯有助于順利完成驗證):

  • 商戶使用支付寶提供的工具生成RSA公鑰私鑰,并把商戶公鑰提交給支付寶。 這一步意味著雙方互換公鑰。

  • 支付寶發(fā)給商戶的請求是用支付寶的私鑰加密的,所以必須用支付寶的公鑰解密,而支付寶的公鑰在文檔里已經(jīng)提供。

  • 商戶發(fā)往支付寶的請求,必須是商戶自己的私鑰加密,而支付寶那邊用商戶的公鑰解密。就是移動客戶端sdk完成的工作。所以移動客戶端那邊一定是用商戶自己的私鑰,并且是經(jīng)過pkcs8編碼的。

理解了RSA的加密解密邏輯,我們就了解了,服務端后臺要驗證來自于支付寶的異步通知POST請求,必須用支付寶的公鑰了。

復制文檔里支付寶的RSA公鑰, 換行的部分用\n代替,如下:

 
-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRA\nFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih4/PrQE\nB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5Ksi\nNG9zpgmLCUYuLkxpLQIDAQAB\n-----END PUBLIC KEY-----

然后,我們使用OpenSSL::PKey::RSA類:

 
rsa = OpenSSL::PKey::RSA.new(alipay_pub_key)

alipay_pub_key是上面的支付寶公鑰。
一定要上面這種格式,或者你使用工具生成符合pem格式的pem文件,否則會報錯。

然后我們就可以使用rsa的verify方法驗證簽名了:

 
rsa.verify('sha1', Base64.decode64(sign), rsa_string.force_encoding("utf-8"))

注意,這里的sign,是支付寶請求里的簽名參數(shù), 這里的sign一定要經(jīng)過base64解碼。rsa_string是根據(jù)支付寶文檔生成的待簽名字符串。

這樣,你就可以完成RSA驗證了。

Notify ID驗證

這個很簡單, 帶上支付寶文檔里提供的參數(shù),給支付驗證接口發(fā)個請求就可以了。


關(guān)于“Ruby如何集成支付寶快捷支付”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI