微信支付

接口声明

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

manifest参数说明

微信支付有app支付和网页支付两种方式,不同厂商实现会选择支持其中的一种。为了提升用户体验和兼容不同厂商实现,需要同时支持这两种方式。厂商实现详见“支持版本明细”。

app支付

参数 说明
package 微信支付后台中注册的应用包名,需要和rpk中的包名保持一致
sign 微信支付后台注册时提交的apk的签名的Base64编码,该apk签名证书需要和rpk的签名证书保持一致

网页支付

参数 说明
url 由开发者提供的H5页面,开发者需要在该页面中拉起微信网页支付。当调用微信网页支付接口时,系统会加载该页面,并传入订单信息

导入模块

import wxpay from '@service.wxpay'const wxpay = require('@service.wxpay')

接口定义

wxpay.getType()

获取当前可用的微信支付调用方式

参数:

返回值:

返回值 备注
APP 微信app调用方式,服务端向微信支付下单时,trade_type需要是APP,参考微信app支付
MWEB 微信网页调用方式,服务端向微信支付下单时,trade_type需要是MWEB,参考微信网页支付
none 微信未安装

注意:getType 返回值为 APP 时,开发者将只能使用 app 方式,不能使用网页方式。

wxpay.pay(OBJECT)

发起微信支付

参数:

参数名 类型 必填 说明
prepayid String 微信支付服务器生成的预支付订单id,参考微信app支付微信网页支付
extra Object 当前支付方式下,需要填入的额外订单信息,具体见下文的extra参数说明
success Function 成功后的回调函数,App方式下,回调发生在用户支付完成之后,网页方式下,回调发生在订单提交给微信app之后
fail Function 失败回调
cancel Function 取消回调

extra参数:

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
网页方式
字段名 必选 说明
mweb_url 在微信的支付服务器下单以后,微信返回的MWEB_URL,在CP用于微信支付的h5页面中,直接将mweb_url取出后跳转过去即可,但这个做法并不是强制的,您也可以通过其他自定义键值向您自己的服务器换取MWEB_URL
custome_key 其他的自定义键值,cp可以根据需要增加其他自己认为需要的键名和键值

success返回值:

参数名 类型 说明
prepayid String 只在App支付方式下会出现,微信支付订单的prepayId.
final_url String 只在网页方式下会出现,拼接参数之后,最终用于打开网页的url.

fail返回错误代码:

错误码 说明
900 在manifest.json中配置的应用签名有误,无法解析
901 在manifest.json中配置的应用包名有误
1000 微信未安装
1001 用于微信网页支付的url配置找不到
2001 订单已经提交给微信,但是微信返回错误, 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。

示例

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({
      //微信网页支付的prepayId
      prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
      extra: {
        //传递给支付页面的自定义参数, 根据需要进行设置, 会被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方式下,支付成功的回调仅仅只是指将订单递交给微信,并不意味着支付已经成功完成
        console.log('WX H5 PAY handling success')
      }
    })
  } else {
    console.log('WX PAY is not avaliable')
  }
}

支持明细

厂商 支持 备注
小米 YES -
中兴 YES 仅支持 MWEB 方式
华为 YES 仅支持 MWEB 方式
金立 YES -
联想 no -
魅族 YES 支持 MWEB 方式;APP 方式需 Flyme 7+
努比亚 YES 仅支持 MWEB 方式
OPPO YES 支持 MWEB 方式;APP 方式需 ColorOS 5.0+,部分机型 ColorOS 3.x+
vivo YES -
一加 - -
预览版 YES 仅支持 MWEB 方式

条匹配 "" 的结果

    没有搜索到与 "" 相关的内容