快應(yīng)用 微信支付

2020-09-07 17:55 更新

接口聲明

{
  "name": "service.wxpay",
  "params": {
    "package": "com.your.package",
    "sign": "abcdefg",
    "url": "http://your.domain/page"
  }
}

manifest參數(shù)說(shuō)明

微信支付有 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ì)”。

app支付

參數(shù) 說(shuō)明
package 微信支付后臺(tái)中注冊(cè)的應(yīng)用包名,需要和rpk中的包名保持一致
sign 微信支付后臺(tái)注冊(cè)時(shí)提交的 apk 的簽名的 Base64 編碼,該 apk 簽名證書需要和 rpk 的簽名證書保持一致

網(wǎng)頁(yè)支付

參數(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è)面,并傳入訂單信息

導(dǎo)入模塊

import wxpay from '@service.wxpay' 
或 
uire('@service.wxpay')

接口定義

wxpay.getType()

獲取當(dāng)前可用的微信支付調(diào)用方式

參數(shù):

無(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è)方式。

wxpay.pay(OBJECT)

發(fā)起微信支付

參數(shù):

參數(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)

extra參數(shù):

app方式
字段名 必選 說(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
網(wǎng)頁(yè)方式
字段名 必選 說(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)為需要的鍵名和鍵值

success返回值:

參數(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.

fail返回錯(cuò)誤代碼:

錯(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)行限制

禁止使用。 后臺(tái)運(yùn)行詳細(xì)用法參見(jiàn) 后臺(tái)運(yùn)行腳本。

支持明細(xì)

廠商支持備注
小米YES-
中興YES僅支持 MWEB 方式
華為YES僅支持 MWEB 方式
金立YES-
聯(lián)想no-
魅族YES支持 MWEB 方式;APP 方式需 Flyme 7+
努比亞YES僅支持 MWEB 方式
OPPOYES支持 MWEB 方式;APP 方式需 ColorOS 5.0+,部分機(jī)型 ColorOS 3.x+
vivoYES-
一加--
預(yù)覽版YES僅支持 MWEB 方式


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)