中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

App移動客戶端如何集成微信支付

發布時間:2021-12-22 14:11:32 來源:億速云 閱讀:179 作者:小新 欄目:大數據

小編給大家分享一下App移動客戶端如何集成微信支付,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

申請微信支付:

首先,你得去微信開放平臺申請微信支付。經過比較漫長的申請過程,審核通過之后,可以去這里下載文檔和demo。

開發

使用方式描述: 當使用App點擊微信支付,會直接跳轉到微信進行支付。

開發步驟:

  • 獲取access token

  • 獲取prepayid

  • 得到sign,結合prepayid發起微信支付請求

  • 支付完成

上面的所有步驟,你可以在iOS或者Andriod端完成,但是,為了安全最好在服務端完成前兩步。

而我就是在服務端完成了前兩步,使用Ruby。

支付邏輯

  • 使用access token 訪問支付接口。

  • 預支付訂單的生成包含雙重驗證: a:package為訂單數據打包,攜帶一個md5簽名,sign, b:app_signature則為訪問接口使用簽名驗證,sha1。

  • 得到預支付id,生成客戶端發起微信支付請求需要的sign,這個c: client_pay_sign是sha1簽名。因為你在服務端完成簽名,所以移動客戶端不需要知道package的具體值了,因為已經從服務端創建預支付訂單的時候傳過去了,所以這里只需要固定值“Sign=WXPay”

  • 最終,需要把預支付id和簽名c(上面那個client_pay_sign)傳給客戶端,客戶端就可以發起微信支付請求了。

  • 整個過程客戶端完全不知道appkey,secret,partnerid等敏感數據。


下面是值的注意的地方:

獲取access token

 
POST url = https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential# post paramsappid=APPIDsecret=APPSECRET

微信支付的文檔里寫的是用GET,我就不吐槽騰訊的文檔了,你用GET能取到的只有錯誤碼。所以這個地方是用POST,才能取到access token。
當然這里你用到的APPID和APPSECRET是你申請成功微信支付后才會有的。

獲取prepayid

第一眼看微信支付的文檔,感覺是和支付寶快捷支付一樣,但是看到這一步的時候,感覺微信支付做的更安全。生成預支付訂單完全可以在服務端完成。

 
POST  https://api.weixin.qq.com/pay/genprepay?access_token=ACCESS_TOKEN

很多人會碰到一個錯誤:{"errcode":40001,"errmsg":"invalid credential"}
這個時候需要仔細檢查你的access token是不是給對了。

然后就是POST Data,一定要是json對象, 要仔細看文檔,寫對參數名,否則會碰到{"errcode":49004,"errmsg":"not match signature"}的錯誤。

生成package
這個地方文檔描述的不是很正確,不知道是不是寫文檔的人語文沒學好,我來把文檔重新糾正一下。

  • A)對所有傳入參數按照字段名的 ASCII 碼從小到大排序(字典序)后,使用 URL 鍵值對的格 式(即 key1=value1&key2=value2...)拼接成字符串 string1;

  • B) 在 string1 最后拼接上 key=partnerKey 得到 stringSignTemp 字符串, 并對 stringSignTemp 進行 md5 運算,再將得到的字符串所有字符轉換為大寫,得到 sign 值 signValue。

  • C)對 string1 中的所有鍵值對中的 value 進行 urlencode 轉碼,按照 a 步驟重新拼接成字符 串,得到 string2。對于 js 前端程序,一定要使用函數 encodeURIComponent 進行 urlencode 編碼(注意!進行 urlencode 時要將空格轉化為%20 而不是+)。

  • D)將 sign=signValue 拼接到 string2 后面得到最終的 package 字符串。

字典序,在Ruby里,用sort方法就可以了。
文檔里的D)寫的是把sign=signValue拼接到string1后面,應該是拼到string2后面,也就是經過url encode的字串。

我被坑到的地方就是,POST Data轉成json對象的時候,使用了to_json方法, 把package參數里的&符號轉成了\u0026。
應該使用JSON.generate(data)來轉換。

把上面所說的搞對,基本就很順了。

生成app_signature

這里需要注意的是,appkey就是paySignKey, 128位長的字符串, 請不要和app secret、appid搞混。

以上是“App移動客戶端如何集成微信支付”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

app
AI

银川市| 花莲县| 海口市| 旬阳县| 阿合奇县| 彭州市| 安庆市| 和政县| 天长市| 饶阳县| 湾仔区| 桃江县| 噶尔县| 肥乡县| 东阳市| 竹山县| 丰城市| 临城县| 繁峙县| 迁安市| 临潭县| 河源市| 贺州市| 罗田县| 岳西县| 河北省| 清镇市| 昭觉县| 荆州市| 融水| 乡城县| 宝清县| 嘉黎县| 宁远县| 桃园市| 阳朔县| 玉环县| 同心县| 双城市| 资溪县| 青神县|