场景:
1.我司微信小程序“我的”页面有一个绑定手机号的入口。点击后跳转到授权页面,授权页有一个手机号快速验证组件。
2.现在需要在“我的”页面绑定手机号入口处通过服务端调用查询购买资源包用量的接口先判断是否有余额。有的话继续跳转到授权页;没有的话跳到另一个页面
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html(手机号快速验证组件)
https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/charge/api/charge_get_usage_detail.html(查询购买资源包的使用情况)
遇到的问题:
目前手机号快速验证组件有1000条的免费赠送余量,到2023/08/28开始收费,优先消耗赠送余量,再消耗购买的。理论上通过接口返回的effectiveAll > effectiveUse 就表示有余量。但目前未开始收费调用接口返回 effectiveAll 和 effectiveUse 的值都为0。无法通过effectiveAll > effectiveUse判断。
目前接口返回结果如下:
"errcode": 0,
"all": "1000",
"effectiveAll": "0",
"total": 1,
"detailList": [{
"all": "1000",
"used": "0",
"source": 1,
"startTime": 1692979200,
"spuId": "10000077",
"pkgId": "",
"endTime": 4294967295,
"skuId": "20000093",
"status": 2
}],
疑问:
- 在 2023/08/28开始收费前,如果用户购买流量 effectiveAll 是否会变为购买的值,比如用户购买了1000条,effectiveAll 是否会变为 1000?
- 2023/08/28开始收费后,effectiveAll 是否会加上免费赠送的 1000 余量?
- total字段为1时是否就表示用户没有主动购买过流量,只有免费的流量?
- status 字段为 2 时表示“未生效”这个能不能作为初始免费赠额的标记?
我这边想到退而求其次的解决方法是可以用场景中的第一步中的手机号快速验证组件直接代替绑定手机号的入口,这样直接通过组件返回的错误码(1400001)就可以判断了。
在不改变原有逻辑的情况下,是否能通过调用查询购买资源包用量的接口返回的字段来解决这个问题??
2023/08/28
当前剩余可用的资源余量就是 all - effectiveUse
微信收费功能从28号起逐步覆盖
1. 判断 effectiveAll 和 effectiveUse:如果 effectiveAll > effectiveUse,那么表示有余量。如果 effectiveAll 和 effectiveUse 都为 0,那么可能是还在免费期,也可能是没有购买过资源包。这时你可以查看 detailList 中的 source 字段,如果 source 为 1(体验额度),那么表示还在免费期。
2. 判断 status 字段:如果 status 为 2(未生效),那么表示资源包还没有开始使用,可能是还在免费期,也可能是购买的资源包还没有开始使用。这时你可以查看 detailList 中的 source 字段,如果 source 为 1(体验额度),那么表示还在免费期。
3. 判断 total 字段:如果 total 为 1,那么表示只有一个资源包,可能是免费的,也可能是购买的。这时你可以查看 detailList 中的 source 字段,如果 source 为 1(体验额度),那么表示是免费的。
在 2023/08/28 开始收费前,如果用户购买流量,effectiveAll 应该会变为购买的值。在 2023/08/28 开始收费后,effectiveAll 应该会加上免费赠送的 1000 余量。
如果你想在不改变原有逻辑的情况下解决这个问题,你可以考虑在服务器端调用查询购买资源包用量的接口,然后根据返回的字段来判断是否有余量。如果有余量,那么继续跳转到授权页;如果没有余量,那么跳转到另一个页面。
谢谢楼主的贴子,我当前的需求和你目前的场景差不多