GlobalPayment.requestGlobalPayment(Object object)

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

微信小程序插件:不支持

功能描述

开发者调用 openMethodPicker 并在返回值 methodKey 中接受到用户选择了TPG的支付方式后,可调用此接口接入TPG的支付流程。 当用户已成功完成当前订单支付后,再次调用该对象的 requestGlobalPayment 会失败。即每次支付都需创建新的 globalPayment 对象重走流程。 仅在 methodKey 为TPG支付类型才能进入全球收银的支付流程,其他情况会失败。 建议在接口返回后,不论成功或失败,均通过 TPG 接口 inquiry-payment 对订单状态进行查询。

参数

Object object

属性 类型 默认值 必填 说明
prepayInfo string 是 预支付信息
paymentId string 是 ISO4217标准中的最小货币单位进行表达,该值为整数,没有小数点。

返回值

Promise

object { errno: number, errMsg: string // 3.11.0起, errno !=0, errMsg 后会带上具体原因,如cancel、fail , requestId: string // 每个payment对象唯一 }

Promise GlobalPayment.openMethodPicker(Object object)

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

微信小程序插件:不支持

功能描述

拉起全球收银的支付方式选择面板。当用户选择支付方式或者关闭选择面板后,返回相应结果。 当用户选定支付方式后,globalPayment上的属性 methodKey 也会更新,后续该对象再次调用将直接失败,不再拉起选择面板。 若用户选择微信支付,请开发者按原微信支付接口 wx.requestPayment 调用完成后续支付流程。 若用户选择TPG的支付方式,流程会等待开发者前往TPG完成预下单后,携带预支付信息和交易单号调用 requestGlobalPayment,若开发者超时未调用,则会提示用户加载超时(超时时间暂定为30s)。 当用户关闭选择面板,即未选择支付方式,开发者后续仍可继续调用接口拉起支付方式选择面板。

参数

Object object

属性 类型 默认值 必填 说明
amount Object 是 交易金额对象
结构属性 类型 默认值 必填 说明
total number 是 交易金额,采用ISO4217标准中的最小货币单位进行表达,该值为整数,没有小数点。
currency string 是 交易币种,货币的符号采用ISO4217,3位大写字符进行表达。
outTradeNo string 否 商户单号,用于区分不同交易订单
priceRules Array.<Object> 否 商户加价规则信息,按支付方式维度的数组;不使用加价策略则无需传入

返回值

Promise

object { errno: number, errMsg: string, requestId: string // 每个payment 对象唯一 , methodKey: string // 用户选中的支付方式}

Promise GlobalPayment.abort()

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

微信小程序插件:不支持

功能描述

用户选择TPG的支付方式后,界面会进入加载的Toast,等待开发者前往TPG完成预下单,然后携带预支付信息和交易单号调用 requestGlobalPayment。若开发者在TPG预下单未成功或出现异常情况,可调用该接口主动终止TPG支付流程,界面加载的Toast将会隐藏,并提示用户下单失败。

返回值

Promise

object { errno: number, errMsg: string, requestId: string // 每个payment对象唯一 }

GlobalPayment

全球收银对象 GlobalPayment

属性

string methodKey

初始值为null。当开发者调用 openMethodPicker 用户选中具体支付方式后确定,后续不再改变。


const goods = {
  goods_id: `goods_1`,
  goods_name: `拿铁`,
  goods_unit_price: {
    currency: 'SGD',
    total: 10,
  },
  goods_quantity: '1',
  goods_category: '1',
}

const globalPay = async () => {
  if (typeof wx.createGlobalPayment !== 'function') {
    // 基础库版本不支持
    // 方案一、微信支付做兜底
    wx.requestPayment({
      timeStamp: '',
      nonceStr: '',
      package: '',
      signType: '',
      paySign: '',
    })
    // 方案二、引导用户更新
    // 方案三、mp后台设置最低基础库版本 3.7.3
    return
  }

  const payment = wx.createGlobalPayment({ mchRegion: 'SG', isSandbox: true })

  try {
    const pickerResp = await payment.openMethodPicker({
      amount: goods.goods_unit_price,
    })

    console.log(`openMethodPicker resp: `, pickerResp)

    if (pickerResp.methodKey === 'WECHAT_PAY') {
      // 发起微信支付
    } else {
      // 后台接口发起预下单
      const preOrderResp = await preOrder(
        goods.goods_unit_price,
        [goods],
        pickerResp.methodKey
      )

      console.log(`preOrder resp: `, preOrderResp)

      const { payment_id, prepay_info } = preOrderResp

      const requestPaymentResp = await payment.requestGlobalPayment({
        paymentId: payment_id,
        prepayInfo: prepay_info,
      })

      console.log(`requestGlobalPayment resp: `, requestPaymentResp)
    }
  } catch (error) {
    console.log(error)
  }
}

方法

Promise GlobalPayment.openMethodPicker(Object object)

拉起全球收银的支付方式选择面板。当用户选择支付方式或者关闭选择面板后,返回相应结果。 当用户选定支付方式后,globalPayment上的属性 methodKey 也会更新,后续该对象再次调用将直接失败,不再拉起选择面板。 若用户选择微信支付,请开发者按原微信支付接口 wx.requestPayment 调用完成后续支付流程。 若用户选择TPG的支付方式,流程会等待开发者前往TPG完成预下单后,携带预支付信息和交易单号调用 requestGlobalPayment,若开发者超时未调用,则会提示用户加载超时(超时时间暂定为30s)。 当用户关闭选择面板,即未选择支付方式,开发者后续仍可继续调用接口拉起支付方式选择面板。

Promise GlobalPayment.requestGlobalPayment(Object object)

开发者调用 openMethodPicker 并在返回值 methodKey 中接受到用户选择了TPG的支付方式后,可调用此接口接入TPG的支付流程。 当用户已成功完成当前订单支付后,再次调用该对象的 requestGlobalPayment 会失败。即每次支付都需创建新的 globalPayment 对象重走流程。 仅在 methodKey 为TPG支付类型才能进入全球收银的支付流程,其他情况会失败。 建议在接口返回后,不论成功或失败,均通过 TPG 接口 inquiry-payment 对订单状态进行查询。

Promise GlobalPayment.abort()

用户选择TPG的支付方式,界面会进入加载的Toast,等待开发者前往TPG完成预下单后携带预支付信息和交易单号调用 requestGlobalPayment,若开发者在 TPG预下单未成功或出现异常情况,可调用该接口主动终止TPG支付流程,界面加载的Toast将会隐藏,提示用户下单失败。

GlobalPaymentwx.createGlobalPayment(Object object)

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

微信小程序插件:不支持

功能描述

创建全球支付方式的对象。一旦用户选定支付方式后,不可更改。如需重新选择支付方式,需创建新对象。

参数

Object object

属性 类型 默认值 必填 说明
mchRegion string 是 根据每笔订单实际的交易地区,提供地区编码,不同地区可能匹配不同的支付方式,参考 ISO3166二位字母代码标准,大写。
isSandbox string false 否 true为开发环境,false为生产环境。不传入该参数,则默认为false,即生产环境。

返回值

GlobalPayment

wx.jumpToOfflinePay(Object object)

以 Promise 风格 调用:不支持

微信小程序插件:不支持

功能描述

跳转到线下支付页面。

请求参数说明:

  1. 商户需注册具有支付权限的公众号,获取 appId
  2. 签名方式目前仅支持 SHA1,签名规则与公众号支付一致
  3. queryStr 为 JSON 格式字符串(需 urlencode),包含 biz_scene、recommend_bank_type、recommend_bind_serial 等字段

参数

Object object

属性 类型 默认值 必填 说明
appId string 是 公众号 ID,商户注册具有支付权限的公众号成功后即可获得
timeStamp string 是 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间
nonceStr string 是 随机字符串,长度为 32 个字符以下
package string 是 扩展字符串,需要带入商户号信息,例如:mch_id=123456789
signType string 是 签名方式,目前仅支持 SHA1
paySign string 是 签名,具体签名方案参照微信公众号支付帮助文档
queryStr string 是 JSON 格式字符串(需 urlencode),包含 biz_scene、recommend_bank_type、recommend_bind_serial
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

wx.openHKOfflinePayView(Object object)

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

以 Promise 风格 调用:不支持

微信小程序插件:不支持

微信 鸿蒙 OS 版:支持

功能描述

拉起WeChat Pay HK付款码。

接入步骤:

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

wx.requestAppleSubscribeSign(Object object)

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

微信小程序插件:不支持

功能描述

发起苹果订阅签约

参数

Object object

属性 类型 默认值 必填 说明
signData Object 是 具体支付参数见signData, 该参数需以string形式传递, 例如signData: ‘{“offerId”:”123″,”productId”:”testproductId”,”goodsPrice”:10,”attach”:”testdata”}’
结构属性 类型 默认值 必填 说明
offerId string 是 mp-支付基础配置中的offerid
productId string 是 订阅道具 ID(需已配置为双端可用)
goodsPrice number 是 道具单价(分), 用来校验价格与后台道具价格是否一致, 避免用户在业务商城页看到的价格与实际价格不一致导致投诉
activitySellingPrice number 否 首开优惠价格(分)。不填=原价签约;填大于0=优惠价签约(首开此价格,续费恢复原价);填0=免费试用签约(首开 0 元,续费恢复原价)
attach string 是 透传数据, 签约成功通知/发货通知时透传给开发者
paySig string 是 支付签名, 详见《签名详解》
signature string 是 用户态签名, 详见《签名详解》

错误

错误码 错误信息 说明
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 微信小程序被限频交易

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) { }
})