欢迎光临散文网 会员登陆 & 注册

关于开通“商家红包”的后续遗留问题

2023-09-21 11:36 作者:电脑不爱好者  | 我要投稿

在微信商户的"现金红包"和"小程序红包"开通规则变更后,可以无需30天正常交易,无需入驻90天限制,通过开通合并后的“商家红包”来实现功能。

前面两篇文章介绍了如何开通的“暂时”有效的方法,但是实际在开发中,出现了一个不大不小的问题,就是无法设置场景值,这会导致无法发送低于1元,高于200元的红包。接口会返回:

小程序红包文档:
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon_xcx.php?chapter=18_2&index=3

现金红包文档:
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon_sl.php?chapter=13_4&index=3

按照提示去访问“现金红包”或“小程序红包”,会如下图所示,

这就矛盾了,“商家红包”的配置里没有场景开通功能,如下图:

看来是因为官方还未完全将“现金红包”或“小程序红包”的功能移植升级到“商家红包”里,目前想发低于一元的红包只能不带场景值。

小程序发放红包,只能通过摄像头扫码的方式打开小程序后,才能正常触发 wx.sendBizRedPacket,如果按照文档的做法获取场景值,再和发放红包接口结合使用,会有一个 BUG,

https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html

文档提议在 onLaunch 和 onShow 里获取场景值,因为在 app.js 里有写了 onLaunch 的逻辑,页面里的 onLaunch 就不能触发执行,所以我把获取场景值逻辑写在了页面的 onShow 里。

在 onShow 获取到场景值后,直接说结果:是不能在 onShow 里去直接写 wx.sendBizRedPacket 逻辑的,因为这个逻辑会调用原生的“正在加载”画面,导致小程序变成非 onShow 状态,加载成功或失败后,小程序又恢复到 onShow 状态,这样会造成 wx.sendBizRedPacket 变成死循环,一直闪屏,重复触发 wx.sendBizRedPacket,加载-关闭-加载-关闭……(onShow - 非 onShow - onShow - 非 onShow……)

所以,获取场景值 wx.getLaunchOptionsSync().scene 完全可以写在 onLoad 内,当扫小程序码后,直接判断场景值是否符合,符合就去请求发红包逻辑,展示出领红包图片,在图片上做事件处理。

以下界面是开发完成的截图,欢迎使用微信摄像头扫码来体验领取红包过程,目前每用户可领取一元,哪天“商家红包”里的场景值功能移植完善可以配置了,会改为 0.3 元。发 1 元的代价有点高呀。

小程序扫码后的系统界面红包
小程序红包领取后画面
欢迎使用微信摄像头扫码领红包

领红包只支持摄像头扫码,长按扫码的场景不支持调用红包接口

关于开通“商家红包”的后续遗留问题的评论 (共 条)

分享到微博请遵守国家法律