HarmonyOS鸿蒙Next中华为支付回调developerPayLoad字段与传入时不一致导致发货异常
HarmonyOS鸿蒙Next中华为支付回调developerPayLoad字段与传入时不一致导致发货异常 问题描述
我们游戏应用接入了华为IAP,在海外支付的时候遇到如下问题:
- 玩家角色A启动游戏,选择一个购买项进行支付
- 在弹起华为支付界面时,杀掉进程
- 玩家角色B(角色A和角色B都关联使用同一个华为帐号)重新启动游戏,继续购买之前的那个购买项,拉起支付时
developerPayLoad
传入的字段是要给玩家B发货。 - 进入华为支付界面,华为会弹出如下提示框,我们选择“继续等待”,支付后的订单回调
developerPayLoad
字段显示需要给A角色发货,而不是B。如果选择“重新支付”,没有问题,developerPayLoad
字段回调给B角色发货。
疑问:我角色A已经杀死进程了,后面其实是B角色想要支付,为啥“继续等待”,华为要给A角色发货呢,不合理。
问题分析
联系华为技术支持(工单联系),技术支持分析后,给出原理:
华为这个弹框设计主要是为了优化海外渠道慢导致的支付超时问题,本质上是为了增加我们的流水。
华为支付和华为帐号强关联,当华为账号拉起某个商品的支付后,玩家直接杀死进程并重启应用继续购买该商品、或者在其他设备上登录该华为帐号继续购买该商品,华为会弹出上述提示框,提示用户是“重新支付”还是“继续等待”,如果“重新支付”,那么华为会直接创建新的支付请求,所有的支付请求参数(包括developerPayLoad
字段等)全部按照最新订单来;如果“继续等待”,那么华为会使用我们之前未完成的支付请求参数。这也是为什么我们选择“继续等待”后,华为返回的developerPayLoad
信息是玩家A角色。
问题解决
针对该情况,华为当前的设计在华为帐号关联多个玩家角色时,确实可能出现我们反馈的情况,设计确实不完善。
华为技术支持反馈,他们当前已经优化该问题,优化后的方案是:
如果在新设备或者重启应用继续购买该商品时,发现新支付请求传入的developerPayLoad
字段与上次未完成支付请求的该字段不一致,则不弹“继续等待”的提示框,直接按照创建新订单完成支付。
修改后,我们测试正常了。
更多关于HarmonyOS鸿蒙Next中华为支付回调developerPayLoad字段与传入时不一致导致发货异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中华为支付回调developerPayLoad字段与传入时不一致导致发货异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,若华为支付回调的developerPayLoad
字段与传入时不一致,可能导致发货异常。建议检查以下步骤:
-
参数传递:确保在发起支付请求时,
developerPayLoad
字段正确传递且未被篡改。 -
签名验证:支付回调时,验证签名以确保数据完整性,防止数据被篡改。
-
日志记录:在支付请求和回调时记录
developerPayLoad
字段,便于对比排查问题。 -
接口调试:使用华为支付提供的调试工具,模拟回调流程,验证
developerPayLoad
字段一致性。 -
联系华为支持:若问题持续,联系华为开发者支持团队,获取进一步的技术协助。