wx.requestCommonPayment(Object object)

基础库 2.19.2 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:不支持

功能描述

发起通用支付。目前该接口仅支持 B2b 支付类型。

参数

Object object

属性 类型 默认值 必填 说明
mode string 是 支付的类型
合法值 说明
retail_pay_goods B2b支付
retail_pay_indirect_goods 间接支付
retail_pay_combined_goods 合单支付
retail_pay_goods_new 多渠道B2b支付
signData Object 是 具体支付参数见signData, 该参数需以string形式传递, 例如signData: ‘{“mchid”:”1234567890″,”out_trade_no”:”test1244″,”description”:”测试测试”,”amount”:{“order_amount”:1,”currency”:”CNY”},”attach”:”test_attach”,”env”:1}’
结构属性 类型 默认值 必填 说明
mchid string 是 由微信支付生成并下发的商户号。示例值:1230000109
out_trade_no string 是 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一,长度限制为[6,32]。示例值:1217752501201407033233368018
description string 是 商品描述。示例值:Image形象店-深圳腾大-QQ公仔
amount Object 是 订单金额信息。
结构属性 类型 默认值 必填 说明
product_amount number 否 订单所有商品的原价总和,单位为分。示例值:1000
freight number 否 订单运费,单位为分。示例值:200
discount number 否 订单总计优惠金额,单位为分。示例值:500
other_fee number 否 订单其他费用总金额,单位为分。示例值:600
order_amount number 是 订单总需支付金额,也即是真正下单总金额,单位为分。示例值:1300
currency string 否 货币类型。示例值:CNY
合法值 说明
CNY 人民币
attach string 否 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。示例值:test_attach
product_info Object 否 订单详细商品信息列表。
结构属性 类型 默认值 必填 说明
spu_id string 是 商户系统内该商品的spuid。示例值:spu123456
sku_id string 是 商户系统内该商品的skuid。示例值:sku123
title string 是 商品标题。示例值:QQ长鹅
path string 是 商户商品详请页微信小程序路径。示例值:pages/index
head_img string 是 商品主图的url,大小建议64*64。示例值:https://mp.weixin.qq.com/123
category string 是 商户侧该商品所属的类目。示例值:玩偶
sku_attr string 是 商户系统内该商品的sku属性。示例值:50cm
org_price number 是 该商品原价,单位为分。示例值:5000
sale_price number 是 该商品售价,单位为分。示例值:4000
quantity number 是 用户购买该商品的数量。示例值:5
delivery_type number 否 配送方式。示例值:2
合法值 说明
1 同城配送
2 快递配送
3 门店自提
4 无需配送与提货
env number 是 下单环境。示例值:0
合法值 说明
0 生产环境/现网环境
1 沙箱环境/测试环境
requestPaymentInfo Object 否 B2b间连支付场景下,调用requestPaymentInfo的参数
结构属性 类型 默认值 必填 说明
timeStamp string 否 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间
nonceStr string 否 随机字符串,长度为32个字符以下
package string 否 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=***
signType string 否 签名算法,应与后台下单时的值一致
paySign string 否 签名,具体见微信支付文档
paySig string 是 支付签名, 详见《签名详解》
signature string 是 用户态签名, 详见《签名详解》
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数
Object res
属性 类型 说明
errMsg string 调用成功信息

object.fail 回调函数

参数
Object err
属性 类型 说明
errMsg string 错误信息
errno number 错误码

错误

错误码 错误信息 说明
1000 系统错误
1022 参数json格式非法
702001 参数错误,具体原因见errMsg
702002 用户态签名错误
702003 支付签名错误
702004 mode不合法
702005 out_trade_no重复,请更换新单号重试
702006 二级商户进件未完成
702007 用户未授权给品牌
702008 正式版微信小程序只能用生产环境下单
702009 B2b授权关系校验不通过

注意事项:

示例代码

  wx.requestCommonPayment({
    signData: JSON.stringify({
      mchid: '1234567890',
      out_trade_no: 'test1244',
    description: '测试测试',
    amount: {
      order_amount: 1,
      currency: 'CNY'
    },
    attach: 'test_attach',
    product_info: {
      product_list: [{
        spu_id: 'spu123456',
        sku_id: 'sku123',
        title: 'QQ长鹅',
        path: 'pages/index',
        head_img: 'https://mp.weixin.qq.com/123',
        category: '玩偶',
        sku_attr: '50cm',
        org_price: 5000,
        sale_price: 4000,
        quantity: 5
      }]
    },
    delivery_type: 2,
      env: 0
    }),
    paySig: 'd0b8bbccbe109b11549bcfd6602b08711f46600965253a949cd6a2b895152f9d',
    signature: 'd0b8bbccbe109b11549bcfd6602b08711f46600965253a949cd6a2b895152f9d',
    mode: 'retail_pay_goods',
    success(res) {
      console.log('requestCommonPayment success', res)
    },
    fail({ errMsg, errno }) {
      console.error(errMsg, errno)
    },
  })

wx.requestMerchantTransfer(Object object)

基础库 3.3.0 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:不支持

微信 鸿蒙 OS 版:支持

功能描述

商家转账用户确认模式下,在微信客户端通过微信小程序拉起页面请求用户确认收款。调用前需在微信支付商户平台/合作伙伴平台-产品中心,申请开通商家转账。

参数

Object object

属性 类型 默认值 必填 说明
mchId string 是 商户号
subMchId string 否 子商户号,服务商模式下必填
appId string 否 商户 appId,普通模式下必填,服务商模式下,appId 和 subAppId 二选一填写
subAppId string 否 子商户 appId,服务商模式下,appId 和 subAppId 二选一填写
package string 是 商家转账付款单跳转收款页 pkg 信息,商家转账付款单受理成功时返回给商户
openId string 否 收款用户 openId, 对应传入的商户 appId 下,某用户的 openId
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.requestMerchantTransfer({
  mchId: '',
  subMchId: '',
  appId: '',
  subAppId: '',
  package: '',
  openId: '',
  success (res) { },
  fail (res) { }
})

wx.requestPayment(Object object)

以 Promise 风格 调用:支持

微信小程序插件:不支持

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

功能描述

发起微信支付。调用前需在微信小程序微信公众平台-功能-微信支付入口申请接入微信支付。了解更多信息,可以参考 微信支付开发文档:

【普通商户】

  • 产品介绍
  • 开发指引
  • 下单接口
  • 调起支付接口

【普通服务商】

  • 产品介绍
  • 开发指引
  • 下单接口
  • 调起支付接口

【旧版本 (v2)】

  • 开发指引
  • 支付接口

如果使用云开发,则 wx.requestPayment 所需参数可以通过云开发微信支付统一下单接口免鉴权获取、并可免证书、免签名的安全调用微信支付服务端接口、及接收异步支付结果回调,详见云开发微信支付。

参数

Object object

属性 类型 默认值 必填 说明
timeStamp string 是 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间
nonceStr string 是 随机字符串,长度为32个字符以下
package string 是 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=***
signType string MD5 否 签名算法,应与后台下单时的值一致
合法值 说明
MD5 仅在 v2 版本接口适用
HMAC-SHA256 仅在 v2 版本接口适用
RSA 仅在 v3 版本接口适用
paySign string 是 签名,具体见微信支付文档
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.requestPayment({
  timeStamp: '',
  nonceStr: '',
  package: '',
  signType: 'MD5',
  paySign: '',
  success (res) { },
  fail (res) { }
})

注:如果服务端有使用云开发,可以通过云开发微信支付统一下单接口免鉴权获取以上所需所有参数,示例:

// 云函数代码
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async (event, context) => {
  const res = await cloud.cloudPay.unifiedOrder({
    "body" : "小秋TIT店-超市",
    "outTradeNo" : "1217752501201407033233368018",
    "spbillCreateIp" : "127.0.0.1",
    "subMchId" : "1900009231",
    "totalFee" : 1,
    "envId": "test-f0b102",
    "functionName": "pay_cb"
  })
  return res
}

// 微信小程序代码
wx.cloud.callFunction({
  name: '函数名',
  data: {
    // ...
  },
  success: res => {
    const payment = res.result.payment
    wx.requestPayment({
      ...payment,
      success (res) {
        console.log('pay success', res)
      },
      fail (err) {
        console.error('pay fail', err)
      }
    })
  },
  fail: console.error,
})

wx.requestPluginPayment(Object object)

基础库 2.22.1 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.22.1

微信 鸿蒙 OS 版:支持

相关文档: 插件支付功能页

功能描述

在微信小程序插件中发起支付。

参数

Object object

属性 类型 默认值 必填 说明
version string 是 插件版本
合法值 说明
develop 开发版
trial 体验版
release 正式版
fee number 是 需要显示在页面中的金额,单位为分
paymentArgs Object 是 任意数据,传递给功能页中的响应函数
currencyType string CNY 否 需要显示在页面中的货币符号的代码
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

Tip

  1. tip: 微信小程序与插件绑定在同一个开放平台账号上,且微信小程序与插件均为该开放平台账号的同主体或关联主体时,调用此接口将直接拉起支付收银台。
  2. tip: 这个接口本身可以在开发者工具中使用,但功能页的跳转目前不支持在开发者工具中调试,请在真机上测试。
  3. tip: 跳转支付功能页需要在 app.json 中配置 "functionalPages": true

示例代码

具体用法及参数说明可参考 插件支付文档

wx.requestPluginPayment({
  version: 'release',
  fee: 1,
  paymentArgs: {},
  currencyType: 'CNY',
  success (res) { },
  fail (res) { }
})

wx.requestVirtualPayment(Object object)

基础库 2.19.2 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:不支持

功能描述

发起米大师虚拟支付

参数

Object object

属性 类型 默认值 必填 说明
signData Object 是 具体支付参数见signData, 该参数需以string形式传递, 例如signData: ‘{“offerId”:”123″,”buyQuantity”:1,”env”:0,”currencyType”:”CNY”,”productId”:”testproductId”,”goodsPrice”:10,”outTradeNo”:”xxxxxx”,”attach”:”testdata”}’
结构属性 类型 默认值 必填 说明
offerId string 是 微信小程序支付基础配置中的offerid
buyQuantity number 是 购买数量
env number 否 环境配置, 0 正式环境, 1 沙箱环境, 默认为 0
currencyType string 是 币种
合法值 说明
CNY 人民币
productId string 否 道具ID, **该字段仅mode=short_series_goods时需要必填**
goodsPrice number 否 道具单价(分), **该字段仅mode=short_series_goods时需要必填**, 用来校验价格与后台道具价格是否一致, 避免用户在业务商城页看到的价格与实际价格不一致导致投诉
activitySellingPrice number 否 道具优惠价格(分),**非必填,该字段需与goodsPrice一起传入**。如用户使用优惠券、积分等,需要以低于道具价格下单时可传入,传入后该价格即为实际下单价格。
outTradeNo string 是 业务订单号, 每个订单号只能使用一次, 重复使用会失败(极端情况不保证唯一, 不建议业务强依赖唯一性). 要求8-32个字符内, 只能是数字、大小写字母、符号 _-|*@组成, 不能以下划线(_)开头
attach string 是 透传数据, 发货通知时会透传给开发者
mode string 是 支付的类型, 不同的支付类型有各自额外要传的附加参数
合法值 说明
short_series_goods 道具直购
short_series_coin 代币充值
paySig string 是 支付签名, 详见《签名详解》
signature string 是 用户态签名, 详见《签名详解》
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数
Object res
属性 类型 说明
errMsg string 调用成功信息

object.fail 回调函数

参数
Object err
属性 类型 说明
errMsg string 错误信息
errCode number 错误码

错误

错误码 错误信息 说明
1001 参数错误
-1 支付失败
-2 支付取消
-4 风控拦截
-5 开通签约结果未知
-15001 参数错误,具体原因见err_msg
-15002 outTradeNo重复使用,请换新单号重试
-15003 系统错误
-15004 currencyType错误,目前只能填CNY
-15005 用户态签名signature错误
-15006 支付签名paySig错误
-15007 session_key过期
-15008 二级商户进件未完成
-15009 代币未发布
-15010 道具productId未发布
-15011 现网版本的env只能是0,不能填1(沙盒环境)
-15012 调用米大师失败导致关单,请换新单号重试
-15013 goodsPrice道具价格错误
-15014 道具/代币发布未生效,禁止下单,大概10分钟后生效
-15016 signData格式有问题
-15017 此商家涉嫌违规,收款功能已被限制,暂时无法支付。商家可以登录微信商户平台或微信支付商家助手微信小程序查看原因和解决方案
-15018 代币或道具的productId审核未通过
-15019 调用微信时提示商户受限,商家可以登录微信商户平台或微信支付商家助手微信小程序查看原因和解决方案
-15020 操作过于频繁,请稍后再试
-15021 微信小程序交易被限制频率

注意事项:

  • 目前只有基础库版本大于或等于 v2.19.2 时才支持该接口,后续会逐步支持更多低版本基础库。因此建议开发者这样判断:当前用户的基础库版本大于或等于 v2.19.2 时,可以直接使用 wx.requestVirtualPayment;小于 v2.19.2 时,使用 wx.canIUse(‘requestVirtualPayment’) 来判断接口是否可用。具体判断方法可参考示例代码。

示例代码

function compareVersion(_v1, _v2) {
  if (typeof _v1 !== 'string' || typeof _v2 !== 'string') return 0

  const v1 = _v1.split('.')
  const v2 = _v2.split('.')
  const len = Math.max(v1.length, v2.length)

  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i], 10)
    const num2 = parseInt(v2[i], 10)

    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }

  return 0
}

const SDKVersion = wx.getSystemInfoSync().SDKVersion

if (compareVersion(SDKVersion, '2.19.2') >= 0 || wx.canIUse('requestVirtualPayment')) {
  wx.requestVirtualPayment({
    signData: JSON.stringify({
      offerId: '123',
      buyQuantity: 1,
      env: 0,
      currencyType: 'CNY',
      productId: 'testproductId',
      goodsPrice: 10,
      outTradeNo: 'xxxxxx',
      attach: 'testdata',
    }),
    paySig: 'd0b8bbccbe109b11549bcfd6602b08711f46600965253a949cd6a2b895152f9d',
    signature: 'd0b8bbccbe109b11549bcfd6602b08711f46600965253a949cd6a2b895152f9d',
    mode: 'short_series_goods',
    success(res) {
      console.log('requestVirtualPayment success', res)
    },
    fail({ errMsg, errCode }) {
      console.error(errMsg, errCode)
    },
  })
} else {
  console.log('当前用户的客户端版本不支持 wx.requestVirtualPayment')
}

wx.verifyHKPaymentPassword(Object object)

基础库 3.17.4 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:不支持

微信 鸿蒙 OS 版:支持

功能描述

拉起WeChat Pay HK密码验证组件。

接入步骤:

  1. 商户需已经开通微信港币钱包WeChat Pay HK的支付权限,
  2. 请用商户在微信支付入驻时预留的邮箱,发起邮件申请接入权限:
  • 【收件人】hkpayment@wechat.com
  • 【邮件主题】申请接入验证WeChat Pay HK密码验证+商户名称:***+商户号:***
  • 【邮件内容】因XXX原因(原因请按实际情况填写,不合理的原因将被驳回),需申请拉起WeChat Pay HK密码验证组件,申请材料如下:
    • 商户名称
    • 商户号
    • 申请调用的微信小程序名称
    • 申请调用的微信小程序APPID
    • 商户资质材料扫描件或照片(CI,BR任一),所有材料均需清晰,且有盖章
    • 拉起WeChat Pay HK密码验证的场景说明:需有文字和示意图说明
    • 商户联系方式:邮件***,联系电话***

UDPSocket.write(Object object)

基础库 2.15.0 开始支持,低版本需做兼容处理。

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.11.1

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 网络使用说明、局域网通信

功能描述

用法与 send 方法相同,如果没有预先调用 connect 则与 send 无差异(注意即使调用了 connect 也需要在本接口填入地址和端口参数)

参数

Object object

属性 类型 默认值 必填 说明
address string 是 要发消息的地址。在基础库 <= 2.9.3 版本必须是和本机同网段的 IP 地址,或安全域名列表内的域名地址;之后版本可以是任意 IP 和域名
port number 是 要发送消息的端口号
message string/ArrayBuffer 是 要发送的数据
offset number 0 否 发送数据的偏移量,仅当 message 为 ArrayBuffer 类型时有效
length number message.byteLength 否 发送数据的长度,仅当 message 为 ArrayBuffer 类型时有效
setBroadcast boolean false 否 向指定地址发消息时,是否要开启广播,基础库 2.24.0 开始支持

示例代码


  const udp = wx.createUDPSocket()
  udp.bind()
  udp.connect({
    address: '192.168.193.2',
    port: 8848,
  })
  udp.write({
    address: '192.168.193.2',
    port: 8848,
    message: 'hello, how are you'
  })

UDPSocket.setTTL(number ttl)

基础库 2.18.0 开始支持,低版本需做兼容处理。

微信小程序插件:支持

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 网络使用说明、局域网通信

功能描述

设置 IP_TTL 套接字选项,用于设置一个 IP 数据包传输时允许的最大跳步数

参数

number ttl

ttl 参数可以是 0 到 255 之间

示例代码


  const udp = wx.createUDPSocket()
  udp.onListening(function () {
    udp.setTTL(64)
  })
  udp.bind()

UDPSocket.send(Object object)

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.11.1

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 网络使用说明、局域网通信

功能描述

向指定的 IP 地址和端口号发送消息。从基础库 2.9.0 版本开始,支持广播功能(将地址设置为 255.255.255.255 即可)。

参数

Object object

属性 类型 默认值 必填 说明
address string 是 要发送消息的地址。在基础库版本小于或等于 2.9.3 时,必须是和当前设备处于同一网段的 IP 地址,或者是安全域名列表中的域名地址;之后的版本则可以是任意 IP 地址和域名
port number 是 要发送消息的端口号
message string/ArrayBuffer 是 要发送的数据内容
offset number 0 否 发送数据的起始偏移量,仅在 message 为 ArrayBuffer 类型时生效
length number message.byteLength 否 发送数据的长度,仅在 message 为 ArrayBuffer 类型时生效
setBroadcast boolean false 否 向指定地址发送消息时,是否开启广播模式,从基础库 2.24.0 版本开始支持

示例代码


  const udp = wx.createUDPSocket()
  udp.bind()
  udp.send({
    address: '192.168.193.2',
    port: 8848,
    message: 'hello, how are you'
  })

UDPSocket.onMessage(function listener)

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.11.1

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 网络使用说明、局域网通信

功能描述

监听收到消息的事件

参数

function listener

收到消息的事件的监听函数

参数

Object res
属性 类型 说明
message ArrayBuffer 收到的消息。消息长度需要小于4096。
remoteInfo Object 发送端地址信息
结构属性 类型 说明
address string 发送消息的 socket 的地址
family string 使用的协议族,为 IPv4 或者 IPv6
port number 端口号
size number message 的大小,单位:字节
localInfo Object 接收端地址信息,2.18.0 起支持
结构属性 类型 说明
address string 接收消息的 socket 的地址
family string 使用的协议族,为 IPv4 或者 IPv6
port number 端口号