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