教程 框架 组件 接口 工具 其他

微信支付 wxpay

接口声明

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

manifest 参数说明

微信支付有 app 支付和网页支付两种方式,不同厂商的不同设备可能会支持其中的一种或者两种。为了提升用户体验和兼容不同厂商的设备,建议同时实现这两种方式。如果只想实现其中的一种,请勿配置另外一种支付方式的参数。同时配置两种参数,并且设备都支持的情况下,默认会选择 app 支付。

从 1040 版本开始,网页支付将支持直接设置 referer 方式,此方式不再需要实现中间页。原先需要实现中间页跳转的方式还会继续支持。直接设置 referer 方式需要在 pay 接口中设置 referer 参数,pay 接口的 extra 参数中必须配置 mweb_url,详见下述参数说明。

厂商实现详见“支持版本明细”。

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)

发起微信支付

参数:

参数名类型必填说明
prepayidString微信支付服务器生成的预支付订单 id,参考微信 app 支付微信网页支付
referer 1040+String在微信支付后台配置的域名。从 1040 版本开始,在使用微信网页方式调用时,若该参数不为空,将通过直接设置 referer 的方式拉起微信客户端。
extraObject当前支付方式下,需要填入的额外订单信息,具体见下文的 extra 参数说明
successFunction成功后的回调函数,App 方式下,回调发生在用户支付完成之后,网页方式下,回调发生在订单提交给微信 app 之后
failFunction失败回调
cancelFunction取消回调

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。从 1040 版本开始,若使用直接设置 referer 的方式拉起微信客户端支付,则此参数必选。
custome_key其他的自定义键值,cp 可以根据需要增加其他自己认为需要的键名和键值

success 返回值:

参数名类型说明
prepayidString只在 App 支付方式下会出现,微信支付订单的 prepayId.
final_urlString只在网页方式下会出现,拼接参数之后,最终用于打开网页的 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')
  }
}

1040 开始,微信网页支付支持直接设置 referer 方式:

useWxpay () {
  var payType = wxpay.getType();
  if (payType === 'MWEB') {
    wxpay.pay({
      // 微信网页支付的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方式下,支付成功的回调仅仅只是指将订单递交给微信,并不意味着支付已经成功完成
        console.log('WX H5 PAY handling success')
      }
    })
  }
}

后台运行限制

禁止使用。 后台运行详细用法参见后台运行 脚本

支持明细

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

条匹配 "" 的结果

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