华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next

华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next 问题描述

集成华为应用内支付服务SDK,应用内创建的都是消耗型商品。测试支付功能,发现某个商品无法购买,但是其他商品都没问题,且我换了个华为帐号后去购买该商品,是可以拉起支付的。

问题分析

联系华为技术支持(可提交工单),他说一般无法购买一个商品,换其他商品或者换个华为帐号支付都没问题的,基本上是这个帐号之前购买过该商品,且未做消耗。

怎么验证呢?可以复现问题,取全量日志,搜索关键词“hmssdk”或者“hms_pay”,分别可以获取到报错信息:

getBuyResultInfoFromIntent:60051

createOrder onResponse responseCode:7,responseMessage:ITEM_ALREADY_OWNED

这两个错误都表示(当前华为帐号)已经拥有了该商品(未做消耗,不得再次购买)。

问题解决

那么要如何解决呢?

华为提供了客户端的补单查询逻辑:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/redelivering-consumables-0000001051356573

按照文档要求,在这些场景下触发补单机制,调用查询接口obtainOwnedPurchases,可以获取到未消耗的订单,然后做校验、发货、消耗即可。消耗之后,下次就可以再次购买那个商品了。

我把补单逻辑修改完善后,问题解决。

PS:如果有玩家反馈掉单问题,同理,可以引导玩家再次点击购买这个商品,此时支付会报错60051,触发补单机制,走客户端补单流程进行补单。

补充重要的一点

当前华为已经提供了服务端支付回调通知,强化补单能力,减少掉单几率,有需求的可以参考接入:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/notifications-about-subscription-events-0000001050035037

为了防止服务器出现一些特殊问题或者有的开发者没有服务器的,客户端补单机制还是要接入的哦,作为一个兜底保障。


更多关于华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于华为应用内仅个别商品无法购买(支付报错60051)HarmonyOS鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


华为应用内个别商品无法购买并显示支付报错60051,可能是以下原因导致:

  1. 商品状态异常:商品可能已下架或库存不足,建议联系应用开发者确认商品状态。

  2. 支付渠道问题:支付渠道临时故障或维护,可尝试更换支付方式或稍后再试。

  3. 账户异常:检查华为账户是否存在异常,如余额不足或支付限制。

  4. 系统兼容性:HarmonyOS Next可能存在兼容性问题,建议更新系统或应用版本。

建议先检查网络连接,确保支付环境正常;若问题持续,联系华为客服或应用开发者寻求进一步帮助。

回到顶部