华为利用内领取服务(In-App Purchases)通过简便的接入流程为用户提供良好的利用内领取体验,然而在理论接入过程中,有一些开发者反馈测试时会无奈失常拉起领取页面,下文将详细分析问题呈现的 5 种情景,并给出解决方案,心愿给遇到相似问题的开发者提供参考。
情景 1:AGC 管制台上 API 治理中的领取 API 已关上,创立的商品也失效了,但查看日志发现报错 60002
起因剖析:对 IAP 的申请后果验签时须要应用领取公钥,进行 SHA256WithRSA 签名校验,此公钥开发者未配置。
解决办法:请仔细检查以下三点是否设置:
(1)API 治理中领取 API 已关上(留神:用户在开明 IAP 服务,半个小时左右才起效)
详情可参考官网文档
(2)确保公钥开关激活关上,且公钥应用正确
(3)在 AGC 后盾 PMS(商品管理系统)上配置了相应类型的商品,并激活胜利
情景 2:开发者进入会员中心编辑订阅页面,显示异样,报错 60051
查看官网文档,错误码 60051 示意已购买型商品或者订阅型商品,不能再次购买;
起因剖析:
复现问题时咱们发现,订阅实现返回会员中心有个刷新动作,在刷新前点击订阅会异样,刷新后点击就是失常的。这是因为如果没有刷新或者刷新不及时,会存在上一次的缓存数据。在点击一个订阅商品之后,立刻再点击订阅另一个商品的时候,会把首次订阅的商品 id 带入,但该 id 并不是最新购买的订阅商品 id,从而造成数据的不匹配,最终导致报错,无奈显示编辑页面。
解决办法:
倡议开发者对页面成果刷新机会进行优化解决,防止未刷新就去续费。
情景 3:应用华为手机进行领取调试的时候报错 60003,但 PMS 零碎中商品 ID 配置未发现问题。
起因剖析:首先报错 60003 个别是在 PMS 零碎中的商品信息配置有问题,能够到 AGC 网站后盾,在我的利用 -> 经营 -> 商品治理 -> 商品列表,查看对应商品是否存在或者必填的信息是否正确残缺(例如商品名称,商品 ID,价格,商品类型,是否激活)。
另外能够查看商品 ID 是否在客户端代码中填写正确,是否与 AGC 后盾的商品 ID 保持一致,请重点查看客户端代码中传入的字段是否有问题。
还有一点须要留神的是在设施上登录的华为账号的服务地点是否在 IAP 笼罩的范畴内。能够通过调用 Task<IsEnvReadyResult> isEnvReady()接口判断以后设施登录的帐号所在的服务国家 / 地区是否在华为 IAP 领取服务反对结算的国家 / 地区中。
解决方案:
通过 CP 排查发现是客户端端代码传入的商品 ID 和 AGC 后盾配置的商品 ID 不统一,批改后问题已解决。
情景 4:调用领取拉起收银台接口,第一次胜利拉起胜利领取页面,而后点击勾销返回,第二次再持续调用该接口为什么无奈拉起领取页面?
起因剖析:购买消耗性商品后,必须要先实现商品耗费,之后能力再次购买,否则会报错 60051 等错误码。
解决办法:对于消耗性商品进行补单操作
开发者须要在以下这四种场景下触发补单机制:
· 利用启动时
· 购买申请返回 -1(OrderStatusCode.ORDER_STATE_FAILED)时
· 购买申请返回 60051(OrderStatusCode.ORDER_PRODUCT_OWNED)时
· 购买申请返回 1(OrderStatusCode.ORDER_STATE_DEFAULT_CODE)时
如果 IAP 后盾配置的退款回调地址谬误,须要重新配置。具体可参考文档
除了无奈拉起领取页面的问题以外,如何确认是否进入沙盒环境也是一个常见的问题。
情景 5:应用沙盒帐号测试,没有弹出沙盒环境端侧提醒弹框,如何确认是否进入沙盒环境?
起因剖析:首先进入沙盒测试环境,失常状况下会提醒以下弹框
然而在满足了沙盒环境的 2 个必要条件后,依然无奈提醒该对话框,是否示意没有进入沙盒测试?
以下是开发者通过 isSandboxActivated 接口打印出的相干数据
从打印的日志来看:满足了沙盒环境 2 个必要条件。
- 以后登录的华为帐号属于沙盒帐号
- VersionCode 大于利用市场线上版本(该 APK 暂未公布利用市场,所以利用市场返回的版本号为 0)
很显著从后果来看实践上应该进入了沙盒测试环境。那么有没有其余办法来确认?
解决办法:是否胜利进入沙盒环境,能够通过以下几种办法排查
a) 查看返回的购买数据,参考下图:
如果华为订单号 payOrderId 以 SandBox 结尾,那么外表该笔订单属于沙盒测试产生的订单。
b)查看领取报表
能够查看领取报表,如果领取报表没有该笔订单,阐明该订单来自于沙盒测试产生的。(注:领取报表数据不是实时更新的,如果当天购买的订单,为了判断准确性,能够次日再刷新该报表验证)
c)革除 HMS Core 缓存
能够尝试革除 HMSCore 缓存,端侧弹框是依据相应字段标识进行判断的,可能是缓存起因导致该值未及时刷新。可通过设置 –> 利用和服务 -> 利用治理 ->HMS Core 进行缓存清理。
理解更多详情 >>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~