1. 程式人生 > >微信小程式發起支付流程

微信小程式發起支付流程

小程式調起支付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>