wx.miniapp.requestPayment

App 调起微信支付

接入前注意事项

在接入支付前需详细阅读下方说明:

  • 该能力依赖「微信 Open SDK」,因此需按照文档前往微信开放平台申请移动应用账号、前往微信商户平台创建商户号,并且将两者进行绑定等操作,详情可查看open in new window
  • 完成上述账号操作后,需将移动应用账号与多端应用账号进行绑定,详情可查看open in new window
  • 最后,由于该能力依赖「微信 Open SDK」,因此在 project.miniapp.json 中需勾选 Open SDK;注意, iOS 版的 Open SDK 需要勾选含支付的版本;
  • 补充:该能力需要使用微信支付商户号,需配置 Api key 配置商户号证书等内容,详情可查看APP支付接入前准备open in new window

关于微信支付签名的注意事项

  • 微信支付的 Api 和签名有 V2 和 V3 两个版本,开发者需使用正确版本的 Api 和对应的签名才可以正常调用,否则会出现「签名不一致」的报错
  • wx.miniapp.requestPaymentsign 仅支持 V3 的签名,即开发者需使用 V3 的下单接口配合使用

API_V2

API_V3

参数

属性类型默认值必填说明
mchIdstring商户号
prepayIdstring预支付交易会话ID
nonceStrstring随机字符串
packagestring随机字符串,暂填写固定值Sign=WXPay
timeStampstring时间戳
signstring签名;注意:签名方式一定要与统一下单接口使用的一致,仅支持 V3 的签名

代码例子

    wx.miniapp.requestPayment({
      timeStamp: '1667792176',
      mchId: '1800009365',
      prepayId: 'wx07113616363804b19dde94884922030000',
      package: 'Sign=WXPay',
      nonceStr: '8ne443gjxxg',
      sign: '4FF5900870B5C5BCB089789BC004156426C46512CE566DB17C131747E09ADEBA',
      success: (res) => {
        console.warn('wx.miniapp.requestPayment success:', res)
      },
      fail: (res) => {
        console.error('wx.miniapp.requestPayment res:', res)
      },
      complete: (res) => {
        console.error('wx.miniapp.requestPayment res:', res)
      }
    })

一些常见的问题

商户传入的appid参数不正确

  • 如果出现下方的报错,请按照下方思路自行排查
  • 首先,截图中的 appid 指的是「移动应用的appid」,不是指「多端应用的id」;而在多端应用中,移动应用 appid 在本接口中不需要开发者传递,基础库会自动将该多端应用所绑定的移动应用 appid 传递给支付侧
  • 所以,开发者需先自行确认「多端应用 - 移动应用 - 商户号」这三者的绑定关系是否正确
  • 可以在「微信开发者工具-多端应用模式-详情」那里看多端应用 id 和移动应用 appid 信息
  • 可以在「微信开放平台 - 移动应用 - 详情」那里看下绑定的商户号信息(或者在微信支付商户平台那里看下绑定的移动应用账号信息)
  • 最后注意事项则是:必须构建安装包装到手机上测试,不可以使用移动应用助手测试。
tips
  • 如果向微信支付寻求「技术支持」,可将支付侧对应的下单接口和签名文档发给他们,不要将本接口文档地址发给支付侧
  • 通常,向微信支付寻求「技术支持」,他们需获取你的移动应用 appid ,以及该移动应用账号上配置的包名、签名、bundleid 等信息,以及你的商户号信息,便于帮助定位问题
  • 此外,他们还会询问相关的接口文档地址,你可以将微信支付 - APP调起支付open in new window文档发给他们,以及对应的 v2 和 V3 的下单接口和签名文档链接发给他们即可