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

2020-09-07 17:55 更新

接口聲明

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

manifest參數(shù)說明

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

app支付

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

網(wǎng)頁支付

參數(shù) 說明
url 由開發(fā)者提供的 H5 頁面,開發(fā)者需要在該頁面中拉起微信網(wǎng)頁支付。當(dāng)調(diào)用微信網(wǎng)頁支付接口時,系統(tǒng)會加載該頁面,并傳入訂單信息

導(dǎo)入模塊

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

接口定義

wxpay.getType()

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

參數(shù):

返回值:

返回值 備注
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)頁方式。

wxpay.pay(OBJECT)

發(fā)起微信支付

參數(shù):

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

extra參數(shù):

app方式
字段名 必選 說明
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)頁方式
字段名 必選 說明
mweb_url 在微信的支付服務(wù)器下單以后,微信返回的MWEB_URL,在 CP 用于微信支付的 h5 頁面中,直接將 mweb_url 取出后跳轉(zhuǎn)過去即可,但這個做法并不是強(qiáng)制的,您也可以通過其他自定義鍵值向您自己的服務(wù)器換取 MWEB_URL
custome_key 其他的自定義鍵值,cp 可以根據(jù)需要增加其他自己認(rèn)為需要的鍵名和鍵值

success返回值:

參數(shù)名 類型 說明
prepayid String 只在 App 支付方式下會出現(xiàn),微信支付訂單的 prepayId.
final_url String 只在網(wǎng)頁方式下會出現(xiàn),拼接參數(shù)之后,最終用于打開網(wǎng)頁的 url.

fail返回錯誤代碼:

錯誤碼 說明
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ù)需要進(jìn)行設(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ì)用法參見 后臺運行腳本。

支持明細(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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號