HarmonyOS 同一华为账号存在多个应用账号相互切换购买同一个订阅商品,可能存在权益发放错乱的现象说明

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

【问题背景】:

订阅进入账户保留期,设置里面的订阅列表就没有该订阅了,进入账户保留期。在沙箱环境有半小时的账户保留时长,文档上写的线上是180天。我们这边发现,先用华为账号给应用账号A来购买,然后进入账户保留期,有2个场景:

  1. 用同一个应用账号在app内给A购买,此时server会收到咱们的restore的通知, app也会收到支付结果给server进行上报。我们目前是如果server先收到restore的通知,我们会根据subGroupGenerationId 去找这个订阅下之前的订单,判定这个订阅之前属于A,就会给用户A增加订单,同时下发权益。那么app上报过来,我们会发现这个订单已经被我们出货了,就会判断本次app的单子是失败的。 用户A会觉得奇怪,我只下了一单,为什么冒出2单来。

反之:如果是app先向server发起支付结果上报,用户A的订单支付成功,给用户下发权益。待server收到restore通知时,因为订单已经在系统处理了,无需再次处理。

  1. 用同一个浩辰账号在app内给B购买,此时server会收到咱们的restore的通知, app也会收到支付结果给server进行上报。我们目前是如果server先收到restore的通知,我们会根据subGroupGenerationId 去找这个订阅下之前的订单,判定这个订阅之前属于A,就会给用户A增加订单,同时下发权益。那么app上报过来,我们会发现这个订单已经被我们出货了,就会判断本次B从app过来的单子是失败的,不给B发权益。会导致用户B说,我付钱了,但是我没有权益。反之,如果是app先向server发起支付结果上报,用户B的订单支付成功,给用户B下发权益。待server收到restore通知时,因为订单已经在系统处理了,无需再次处理。上述场景中当服务器先收到restore通知时,容易给用户造成困惑。

【解决方案】:

关于多角色应用接入订阅专项说明:用户购买订阅型商品时使用的帐号是华为帐号,一个华为帐号在同一订阅商品上只能同时存在一笔订阅。如果您的应用存在多角色即对于一个华为账号存在多个应用账号相互切换购买同一个订阅商品,可能会存在权益发放错乱的现象。针对这个场景建议的处理方案如下:

  1. 当用户为角色A购买订阅型商品后,该用户的其他角色只允许购买普通包周期商品服务(您可以通过华为消耗型商品自行实现);

  2. 当用户为角色A购买订阅型商品后,再为角色B购买订阅型商品时,您可以自行设计将角色A的剩余权益转移给角色B;

  3. 建议您配置多个订阅型商品。如游戏不同区服对应不同角色,每个区服创建独立的订阅商品;详情请参考官方文档:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/subscription-functions-0000001050130264#section19732215518;不建议根据subGroupGenerationId 去找这个订阅下之前的订单来判定这个订阅之前属于应用账号A还是属于应用账号B,并发放权益;因为在进入账号保留期内不同应用账号恢复订阅此逻辑在IAP侧是无法感知到的 ,所以此方案无法解决这个问题;华为帐号在同一订阅商品上只能同时存在一笔订阅 ,同一个华为账号下, 如果应用账号A创建订阅,到期后进入账号保留期,切换到应用账号B在app内购买,相当于恢复订阅A,但是应用账号B这边,就会出现我付钱了,但是我没有权益的问题; 此时建议在为角色B购买订阅型商品时,您可以自行设计将角色A(即应用账号A)的剩余权益转移并发放给角色B(即浩辰账号B)。

分享
微博
QQ
微信
回复
5天前
相关问题
HarmonyOS 多module同时依赖同一个har
966浏览 • 1回复 待解决
同一个HSP中,router.pushUrl中url问题
537浏览 • 1回复 待解决