W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
{
"name": "service.wxpay",
"params": {
"package": "com.your.package",
"sign": "abcdefg",
"url": "http://your.domain/page"
}
}
微信支付有 app 支付和網(wǎng)頁支付兩種方式,不同廠商的不同設(shè)備可能會支持其中的一種或者兩種。為了提升用戶體驗和兼容不同廠商的設(shè)備,建議同時實現(xiàn)這兩種方式。如果只想實現(xiàn)其中的一種,請勿配置另外一種支付方式的參數(shù)。同時配置兩種參數(shù),并且設(shè)備都支持的情況下,默認(rèn)會選擇 app 支付。
從 1040 版本開始,網(wǎng)頁支付將支持直接設(shè)置 referer 方式,此方式不再需要實現(xiàn)中間頁。原先需要實現(xiàn)中間頁跳轉(zhuǎn)的方式還會繼續(xù)支持。直接設(shè)置 referer 方式需要在 pay 接口中設(shè)置 referer 參數(shù),pay 接口的 extra 參數(shù)中必須配置 mweb_url,詳見下述參數(shù)說明。
廠商實現(xiàn)詳見“支持版本明細(xì)”。
參數(shù) | 說明 |
---|---|
package | 微信支付后臺中注冊的應(yīng)用包名,需要和rpk中的包名保持一致 |
sign | 微信支付后臺注冊時提交的 apk 的簽名的 Base64 編碼,該 apk 簽名證書需要和 rpk 的簽名證書保持一致 |
參數(shù) | 說明 |
---|---|
url | 由開發(fā)者提供的 H5 頁面,開發(fā)者需要在該頁面中拉起微信網(wǎng)頁支付。當(dāng)調(diào)用微信網(wǎng)頁支付接口時,系統(tǒng)會加載該頁面,并傳入訂單信息 |
import wxpay from '@service.wxpay'
或
uire('@service.wxpay')
獲取當(dāng)前可用的微信支付調(diào)用方式
無
返回值 | 備注 |
---|---|
none | 微信未安裝 |
APP | 微信app調(diào)用方式,服務(wù)端向微信支付下單時,trade_type需要是APP,參考微信app支付 |
MWEB | 微信網(wǎng)頁調(diào)用方式,服務(wù)端向微信支付下單時,trade_type需要是MWEB,參考微信網(wǎng)頁支付 |
注意:在 getType
返回值為 APP
時,開發(fā)者將只能使用 app 方式,不能使用網(wǎng)頁方式。
發(fā)起微信支付
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
prepayid | String | 是 | 微信支付服務(wù)器生成的預(yù)支付訂單id,參考微信app支付和微信網(wǎng)頁支付 |
referer 1040+ |
String | 否 |
在微信支付后臺配置的域名。從 1040 版本開始,在使用微信網(wǎng)頁方式調(diào)用時,若該參數(shù)不為空,將通過直接設(shè)置 referer 的方式拉起微信客戶端。 |
extra | Object | 是 | 當(dāng)前支付方式下,需要填入的額外訂單信息,具體見下文的extra參數(shù)說明 |
success | Function | 否 | 成功后的回調(diào)函數(shù),App方式下,回調(diào)發(fā)生在用戶支付完成之后,網(wǎng)頁方式下,回調(diào)發(fā)生在訂單提交給微信app之后 |
fail | Function | 否 | 失敗回調(diào) |
cancel | Function | 否 | 取消回調(diào) |
字段名 | 必選 | 說明 |
---|---|---|
app_id | 是 | 微信支付訂單中的app_id |
partner_id | 是 | 微信支付訂單中的partner_id |
package_value | 是 | 微信支付訂單中的package_value |
nonce_str | 是 | 微信支付訂單中的nonce_str |
time_stamp | 是 | 微信支付訂單中的time_stamp |
order_sign | 是 | 微信支付訂單中的order_sign |
字段名 | 必選 | 說明 |
---|---|---|
mweb_url | 否 | 在微信的支付服務(wù)器下單以后,微信返回的MWEB_URL,在 CP 用于微信支付的 h5 頁面中,直接將 mweb_url 取出后跳轉(zhuǎn)過去即可,但這個做法并不是強制的,您也可以通過其他自定義鍵值向您自己的服務(wù)器換取 MWEB_URL |
custome_key | 否 | 其他的自定義鍵值,cp 可以根據(jù)需要增加其他自己認(rèn)為需要的鍵名和鍵值 |
參數(shù)名 | 類型 | 說明 |
---|---|---|
prepayid | String | 只在 App 支付方式下會出現(xiàn),微信支付訂單的 prepayId. |
final_url | String | 只在網(wǎng)頁方式下會出現(xiàn),拼接參數(shù)之后,最終用于打開網(wǎng)頁的 url. |
錯誤碼 | 說明 |
---|---|
900 | 在 manifest.json 中配置的應(yīng)用簽名有誤,無法解析 |
901 | 在 manifest.json 中配置的應(yīng)用包名有誤 |
1000 | 微信未安裝 |
1001 | 用于微信網(wǎng)頁支付的 url 配置找不到 |
2001 | 訂單已經(jīng)提交給微信,但是微信返回錯誤, 可能的原因:簽名錯誤、未注冊 APPID、項目設(shè)置 APPID 不正確、注冊的 APPID 與設(shè)置的不匹配、其他異常等。 |
useWxpay () {
var payType = wxpay.getType();
if (payType === 'APP') {
wxpay.pay({
//微信 app支付的prepayId
prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
extra: {
app_id: 'your app_id',
partner_id: 'your partner_id',
package_value: 'your package_value',
nonce_str: 'your nonce_str',
time_stamp: 'your time_stamp',
order_sign: 'your order sign'
},
fail: function (data, code) {
console.log(`WX PAY failed, code = ${code}`)
},
cancel: function () {
console.log('WX PAY cancelled by user')
},
success: function (data) {
console.log('WX PAY success')
}
})
} else if (payType === 'MWEB') {
wxpay.pay({
//微信網(wǎng)頁支付的prepayId
prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
extra: {
//傳遞給支付頁面的自定義參數(shù), 根據(jù)需要進行設(shè)置, 會被urlEncode之后拼接在配置的url尾部
mweb_url: 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin',
customeKey1: 'customeValue1',
customeKey2: 'customeValue2'
},
fail: function (data, code) {
console.log(`WX H5 PAY handling fail, code = ${code}`)
},
cancel: function () {
console.log('WX H5 PAY handling cancel')
},
success: function (data) {
//H5方式下,支付成功的回調(diào)僅僅只是指將訂單遞交給微信,并不意味著支付已經(jīng)成功完成
console.log('WX H5 PAY handling success')
}
})
} else {
console.log('WX PAY is not avaliable')
}
}
1040 開始,微信網(wǎng)頁支付支持直接設(shè)置 referer 方式:
useWxpay () {
var payType = wxpay.getType();
if (payType === 'MWEB') {
wxpay.pay({
// 微信網(wǎng)頁支付的prepayId
prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
referer: 'your host name configured in wechat, eg: https://www.quickapp.cn',
extra: {
// 需要將微信返回的MWEB_URL地址配置到這里
mweb_url: 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin'
},
fail: function (data, code) {
console.log(`WX H5 PAY handling fail, code = ${code}`)
},
cancel: function () {
console.log('WX H5 PAY handling cancel')
},
success: function (data) {
//H5方式下,支付成功的回調(diào)僅僅只是指將訂單遞交給微信,并不意味著支付已經(jīng)成功完成
console.log('WX H5 PAY handling success')
}
})
}
}
禁止使用。 后臺運行詳細(xì)用法參見 后臺運行腳本。
廠商 | 支持 | 備注 |
---|---|---|
小米 | YES | - |
中興 | YES | 僅支持 MWEB 方式 |
華為 | YES | 僅支持 MWEB 方式 |
金立 | YES | - |
聯(lián)想 | no | - |
魅族 | YES | 支持 MWEB 方式;APP 方式需 Flyme 7+ |
努比亞 | YES | 僅支持 MWEB 方式 |
OPPO | YES | 支持 MWEB 方式;APP 方式需 ColorOS 5.0+,部分機型 ColorOS 3.x+ |
vivo | YES | - |
一加 | - | - |
預(yù)覽版 | YES | 僅支持 MWEB 方式 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: