微信小程式發起支付流程
阿新 • • 發佈:2019-01-05
小程式調起支付API
需要引數
郵件中引數 | API引數名 | 詳細說明 |
---|---|---|
APPID | appid | appid是微信小程式後臺APP的唯一標識,在小程式後臺申請小程式賬號後,微信會自動分配對應的appid,用於標識該應用。可在小程式-->設定-->開發設定中檢視。 |
微信支付商戶號 | mch_id | 商戶申請微信支付後,由微信支付分配的商戶收款賬號。 |
API金鑰 | key | 交易過程生成簽名的金鑰,僅保留在商戶系統和微信支付後臺,不會在網路中傳播。商戶妥善保管該Key,切勿在網路中傳輸,不能在其他客戶端中儲存,保證key不會被洩漏。商戶可根據郵件提示登入微信商戶平臺進行設定。也可按一下路徑設定:微信商戶平臺(pay.weixin.qq.com)-->賬戶設定-->API安全-->金鑰設定 |
Appsecret | secret | AppSecret是APPID對應的介面密碼,用於獲取介面呼叫憑證時使用。 |
互動圖
統一下單
URL地址:
https://api.mch.weixin.qq.com/pay/unifiedorder
以下欄位在return_code 和result_code都為SUCCESS的時候有返回
欄位名 | 變數名 | 必填 | 型別 | 示例值 | 描述 |
---|---|---|---|---|---|
交易型別 | trade_type | 是 | String(16) | JSAPI | 交易型別,取值為:JSAPI,NATIVE,APP等 |
預支付交易會話標識 | prepay_id | 是 | String(64) | wx201410272009395522657a690389285100 | 微信生成的預支付會話標識,用於後續介面呼叫中使用,該值有效期為2小時 |
二維碼連結 | code_url | 否 | String(64) | weixin://wxpay/bizpayurl/up?pr=NwY5Mz9&groupid=00 | trade_type=NATIVE時有返回,此url用於生成支付二維碼,然後提供給使用者進行掃碼支付。注意:code_url的值並非固定,使用時按照URL格式轉成二維碼即可 |
再次簽名
小程式調起支付資料簽名欄位列表:
欄位名 | 變數名 | 必填 | 型別 | 示例值 | 描述 |
---|---|---|---|---|---|
小程式ID | appId | 是 | String | wxd678efh567hg6787 | 微信分配的小程式ID |
時間戳 | timeStamp | 是 | String | 1490840662 | 時間戳從1970年1月1日00:00:00至今的秒數,即當前的時間 |
隨機串 | nonceStr | 是 | String | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 隨機字串,不長於32位。推薦隨機數生成演算法 |
資料包 | package | 是 | String | prepay_id=wx2017033010242291fcfe0db70013231072 | 統一下單介面返回的 prepay_id 引數值,提交格式如:prepay_id=wx2017033010242291fcfe0db70013231072 |
簽名方式 | signType | 是 | String | MD5 | 簽名型別,預設為MD5,支援HMAC-SHA256和MD5。注意此處需與統一下單的簽名型別一致 |
舉例如下:
paySign = MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111) = 22D9B4E54AB1950F51E0649E8810ACD6
呼叫wx.requestPayment(OBJECT)發起微信支付
Object引數說明:
引數 | 型別 | 必填 | 說明 |
---|---|---|---|
timeStamp | String | 是 | 時間戳從1970年1月1日00:00:00至今的秒數,即當前的時間 |
nonceStr | String | 是 | 隨機字串,長度為32個字元以下。 |
package | String | 是 | 統一下單介面返回的 prepay_id 引數值,提交格式如:prepay_id=*** |
signType | String | 是 | 簽名型別,預設為MD5,支援HMAC-SHA256和MD5。注意此處需與統一下單的簽名型別一致 |
paySign | String | 是 | 簽名 |
回撥結果:
回撥型別 | errMsg | 說明 |
---|---|---|
success | requestPayment:ok | 呼叫支付成功 |
fail | requestPayment:fail cancel | 使用者取消支付 |
fail | requestPayment:fail (detail message) | 呼叫支付失敗,其中 detail message 為後臺返回的詳細失敗原因 |
支付成功回撥
該連結是通過【統一下單API】中提交的引數notify_url設定,如果連結無法訪問,商戶將無法接收到微信通知。
通知url必須為直接可訪問的url,不能攜帶引數。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action”
<xml>
<appid><![CDATA[wx2421b1c4370ec43b]]></appid>
<attach><![CDATA[支付測試]]></attach>
<bank_type><![CDATA[CFT]]></bank_type>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<mch_id><![CDATA[10000100]]></mch_id>
<nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>
<openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>
<out_trade_no><![CDATA[1409811653]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>
<sub_mch_id><![CDATA[10000100]]></sub_mch_id>
<time_end><![CDATA[20140903131540]]></time_end>
<total_fee>1</total_fee>
<coupon_fee><![CDATA[10]]></coupon_fee>
<coupon_count><![CDATA[1]]></coupon_count>
<coupon_type><![CDATA[CASH]]></coupon_type>
<coupon_id><![CDATA[10000]]></coupon_id>
<coupon_fee><![CDATA[100]]></coupon_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>