php--微信H5支付
阿新 • • 發佈:2019-02-02
首先,我們說一下h5支付的應用場景!
H5支付是指商戶在微信客戶端外的移動端網頁展示商品或服務,使用者在前述頁面確認使用微信支付時,商戶發起本服務呼起微信客戶端進行支付。 主要用於觸屏版的手機瀏覽器請求微信支付的場景。可以方便的從外部瀏覽器喚起微信支付。
說明白點:就是你在微信外部瀏覽器端調微信支付(只能手機調起)
我們看一下h5支付的官方文件
https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1
我們選擇統一下單
介面的地址是:https://api.mch.weixin.qq.com/pay/unifiedorder
欄位名 | 變數名 | 必填 | 型別 | 示例值 | 描述 |
---|---|---|---|---|---|
公眾賬號ID | appid | 是 | String(32) | wxd678efh567hg6787 | 微信分配的公眾賬號ID(企業號corpid即為此appId) |
商戶號 | mch_id | 是 | String(32) | 1230000109 | 微信支付分配的商戶號 |
裝置號 | device_info | 否 | String(32) | 013467007045764 | 終端裝置號(門店號或收銀裝置ID),注意:PC網頁或公眾號內支付請傳"WEB" |
隨機字串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
隨機字串,不長於32位。推薦 |
簽名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | |
簽名型別 | sign_type | 否 | String(32) | HMAC-SHA256 | 簽名型別,目前支援HMAC-SHA256和MD5,預設為MD5 |
商品描述 | body | 是 | String(128) | 騰訊充值中心-QQ會員充值 |
商品簡單描述,該欄位須嚴格按照規範傳遞,具體請見引數規定 |
商品詳情 | detail | 否 | String(6000) | 單品優惠欄位(暫未上線) | |
附加資料 | attach | 否 | String(127) | 深圳分店 | 附加資料,在查詢API和支付通知中原樣返回,該欄位主要用於商戶攜帶訂單的自定義資料 |
商戶訂單號 | out_trade_no | 是 | String(32) | 20150806125346 | 商戶系統內部的訂單號,32個字元內、可包含字母, 其他說明見商戶訂單號 |
貨幣型別 | fee_type | 否 | String(16) | CNY | 符合ISO 4217標準的三位字母程式碼,預設人民幣:CNY,其他值列表詳見貨幣型別 |
總金額 | total_fee | 是 | Int | 888 | 訂單總金額,單位為分,詳見支付金額 |
終端IP | spbill_create_ip | 是 | String(16) | 123.12.12.123 | 必須傳正確的使用者端IP,詳見獲取使用者ip指引 |
交易起始時間 | time_start | 否 | String(14) | 20091225091010 | 訂單生成時間,格式為yyyyMMddHHmmss,如2009年12月25日9點10分10秒錶示為20091225091010。其他詳見時間規則 |
交易結束時間 | time_expire | 否 | String(14) | 20091227091010 |
訂單失效時間,格式為yyyyMMddHHmmss,如2009年12月27日9點10分10秒錶示為20091227091010。其他詳見時間規則 注意:最短失效時間間隔必須大於5分鐘 |
商品標記 | goods_tag | 否 | String(32) | WXG | 商品標記,代金券或立減優惠功能的引數,說明詳見代金券或立減優惠 |
通知地址 | notify_url | 是 | String(256) | http://www.weixin.qq.com/wxpay/pay.php | 接收微信支付非同步通知回撥地址,通知url必須為直接可訪問的url,不能攜帶引數。 |
交易型別 | trade_type | 是 | String(16) | MWEB | H5支付的交易型別為MWEB |
商品ID | product_id | 否 | String(32) | 12235413214070356458058 | trade_type=NATIVE,此引數必傳。此id為二維碼中包含的商品ID,商戶自行定義。 |
指定支付方式 | limit_pay | 否 | String(32) | no_credit | no_credit--指定不能使用信用卡支付 |
使用者標識 | openid | 否 | String(128) | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | trade_type=JSAPI,此引數必傳,使用者在商戶appid下的唯一標識。openid如何獲取,可參考【獲取openid】。企業號請使用【企業號OAuth2.0介面】獲取企業號內成員userid,再呼叫【企業號userid轉openid介面】進行轉換 |
場景資訊 | scene_info | 是 | String(256) |
//IOS移動應用 {"h5_info": {"type":"IOS","app_name": "王者榮耀","bundle_id": "com.tencent.wzryIOS"}} //安卓移動應用 {"h5_info": {"type":"Android","app_name": "王者榮耀","package_name": "com.tencent.tmgp.sgame"}} //WAP網站應用 {"h5_info": {"type":"Wap","wap_url": "https://pay.qq.com","wap_name": "騰訊充值"}} |
該欄位用於上報支付的場景資訊,針對H5支付有以下三種場景,請根據對應場景上報,H5支付不建議在APP端使用,針對場景1,2請接入APP支付,不然可能會出現相容性問題 1,IOS移動應用 {"h5_info": //h5支付固定傳"h5_info" {"type": "", //場景型別 "app_name": "", //應用名 "bundle_id": "" //bundle_id } } 2,安卓移動應用 {"h5_info": //h5支付固定傳"h5_info" {"type": "", //場景型別 "app_name": "", //應用名 "package_name": "" //包名 } } 3,WAP網站應用 {"h5_info": //h5支付固定傳"h5_info" {"type": "", //場景型別 "wap_url": "",//WAP網站URL地址 "wap_name": "" //WAP 網站名 } } |
根據上面介面需要的引數。我們把必須傳的引數組裝成xml格式傳送過去後
微信返回的引數有下面兩個
欄位名 | 變數名 | 必填 | 型別 | 示例值 | 描述 |
---|---|---|---|---|---|
返回狀態碼 | return_code | 是 | String(16) | SUCCESS |
SUCCESS/FAIL 此欄位是通訊標識,非交易標識,交易是否成功需要檢視result_code來判斷 |
返回資訊 | return_msg | 否 | String(128) | 簽名失敗 |
返回資訊,如非空,為錯誤原因 簽名失敗 引數格式校驗錯誤 |
我們通過微信返回的 return_code 中的 result_code來判斷交易是否成功
在return_code 和result_code都為SUCCESS的時候有返回一下欄位
欄位名 | 變數名 | 必填 | 型別 | 示例值 | 描述 |
---|---|---|---|---|---|
交易型別 | trade_type | 是 | String(16) | MWEB | 呼叫介面提交的交易型別,取值如下:JSAPI,NATIVE,APP,,H5支付固定傳MWEB |
預支付交易會話標識 | prepay_id | 是 | String(64) | wx201410272009395522657a690389285100 | 微信生成的預支付回話標識,用於後續介面呼叫中使用,該值有效期為2小時,針對H5支付此引數無特殊用途 |
支付跳轉連結 | mweb_url | 是 | String(64) | https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241 | mweb_url為拉起微信支付收銀臺的中間頁面,可通過訪問該url來拉起微信客戶端,完成支付,mweb_url的有效期為5分鐘。 |
我們看到其中有支付跳轉連結
這個地址便是我們調起微信支付的連結,瀏覽器直接跳轉這個地址即可調起微信支付,支付結果會非同步通知到我們傳過去的回撥地址
注(引數中必填的必須傳,我們調起支付頁面可以通過定時任務,來判斷訂單是否支付,如果已經支付則跳走)
如果有錯誤的的地方歡迎共同學習