在 QQ 小程序中使用 qq.requestWxPayment 唤起微信支付(iOS 设备问题)

在 QQ 小程序中使用 qq.requestWxPayment 唤起微信支付(iOS 设备)

背景

按照官方文档写在 安卓 打开是没有问题的。可以正常支付。IOS会报错。走的是fail

由于现在小程序无法唤出浏览器等其他应用。只能开接口能力。web-view方案直接否定。。

QQ文档

属性类型默认值必填说明
urlstring微信支付跳转链接,使用 服务端-统一下单请求 获取
refererstring商户申请 H5 支付时提交的授权域名(例如 http://q.qq.com ),参考 微信H5支付文档申请规则说明
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
qq.requestWxPayment({
  url: "",
  referer: "",
  success(res) { },
  fail(res) { }
})


解决方案

在 iOS 设备上,qq.requestWxPayment 需要正确传递 refererReferer 参数,以确保微信支付能够识别请求来源并正常唤起。

在 QQ 小程序中,使用 qq.requestWxPayment 接口唤起微信支付时,发现 Android 设备可以正常唤起,但 iOS 设备无法唤起。经过调试,发现关键在于正确传递 refererReferer 参数。

关键点

  1. refererReferer 参数

    • 这两个参数的作用是告诉微信支付请求的来源(即 QQ 小程序的域名或 URL)。
    • 在 iOS 设备上,微信支付需要验证请求的来源,因此必须正确传递这两个参数。
    • 注意:refererReferer 都需要传递,可能是因为微信支付在不同环境下对参数的大小写敏感。
      QQ文档是没有大写的Referer的,多传这个参数便可解决问题。。。
  2. url 参数

    • url 是微信支付的 H5 链接,通常由后端生成。
    • redirect_url 是支付完成后跳转的 URL,通常是小程序的某个页面。
  3. 回调函数

    • success:支付成功后的逻辑。
    • fail:支付失败后的逻辑。
    • complete:支付完成后的逻辑(无论成功或失败)。

官方例子改成

qq.requestWxPayment({
  url: "",
  referer: "",
  Referer: "",
  success(res) { },
  fail(res) { }
})

代码示例

以下是一个完整的代码示例,展示了如何在 QQ 小程序中使用 qq.requestWxPayment 唤起微信支付,并处理支付结果。

qq.requestWxPayment({
  url: `${h5_url}`,
  referer: HTTP_REQUEST_URL, // 来源域名
  Referer: HTTP_REQUEST_URL, // 来源域名(大小写敏感)
  success: () => {
  },
  fail: (err) => {
    // 支付失败后的逻辑
    console.log('调起支付失败的原因', err);
  },
  complete: (res) => {
    // 支付完成后的逻辑(无论成功或失败)
  }
});

参数说明

  • h5_url:微信支付的 H5 链接,由后端生成。
  • HTTP_REQUEST_URL:QQ 小程序的域名或 URL。

注意事项

  1. refererReferer 参数

    • 确保它们的值与微信支付配置中的来源域名一致。
    • 确保它们的大小写正确。
  2. url 参数

    • 确保 url 是有效的微信支付 H5 链接。
    • 确保 redirect_url 是有效的 URL,并且已正确编码。
  3. 调试与排查

    • failcomplete 回调中打印日志,检查是否有错误信息。
    • 如果问题无法解决,可以联系微信支付的技术支持团队,提供详细的日志和复现步骤。

总结

通过正确传递 refererReferer 参数,可以在 iOS 设备上成功唤起微信支付。本文提供了完整的代码示例和注意事项,帮助开发者快速实现 QQ 小程序中的微信支付功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值