华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next
华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next 问题描述
集成华为应用内支付服务SDK,应用内创建的都是消耗型商品。测试支付功能,发现某个商品无法购买,但是其他商品都没问题,且我换了个华为帐号后去购买该商品,是可以拉起支付的。
问题分析
联系华为技术支持(可提交工单),他说一般无法购买一个商品,换其他商品或者换个华为帐号支付都没问题的,基本上是这个帐号之前购买过该商品,且未做消耗。
怎么验证呢?可以复现问题,取全量日志,搜索关键词“hmssdk”或者“hms_pay”,分别可以获取到报错信息:
getBuyResultInfoFromIntent:60051
createOrder onResponse responseCode:7,responseMessage:ITEM_ALREADY_OWNED
这两个错误都表示(当前华为帐号)已经拥有了该商品(未做消耗,不得再次购买)。
问题解决
那么要如何解决呢?
华为提供了客户端的补单查询逻辑:
按照文档要求,在这些场景下触发补单机制,调用查询接口obtainOwnedPurchases
,可以获取到未消耗的订单,然后做校验、发货、消耗即可。消耗之后,下次就可以再次购买那个商品了。
我把补单逻辑修改完善后,问题解决。
PS:如果有玩家反馈掉单问题,同理,可以引导玩家再次点击购买这个商品,此时支付会报错60051,触发补单机制,走客户端补单流程进行补单。
补充重要的一点
当前华为已经提供了服务端支付回调通知,强化补单能力,减少掉单几率,有需求的可以参考接入:
为了防止服务器出现一些特殊问题或者有的开发者没有服务器的,客户端补单机制还是要接入的哦,作为一个兜底保障。
更多关于华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
华为应用内个别商品无法购买并显示支付报错60051,可能是以下原因导致:
-
商品状态异常:商品可能已下架或库存不足,建议联系应用开发者确认商品状态。
-
支付渠道问题:支付渠道临时故障或维护,可尝试更换支付方式或稍后再试。
-
账户异常:检查华为账户是否存在异常,如余额不足或支付限制。
-
系统兼容性:HarmonyOS Next可能存在兼容性问题,建议更新系统或应用版本。
建议先检查网络连接,确保支付环境正常;若问题持续,联系华为客服或应用开发者寻求进一步帮助。