【FAQ】HarmonyOS鸿蒙Next应用内支付服务无法拉起支付页面常见原因分析和解决方法
【FAQ】HarmonyOS鸿蒙Next应用内支付服务无法拉起支付页面常见原因分析和解决方法 华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种情形,并给出解决方案,希望给遇到类似问题的开发者提供参考。
情形1:AGC控制台上API管理中的支付API已打开,创建的商品也生效了,但查看日志发现报错60002
原因分析:对IAP的请求结果验签时需要使用支付公钥,进行SHA256WithRSA签名校验,此公钥开发者未配置。
解决方法:请仔细检查以下三点是否设置:
- (1)API管理中支付API已打开(注意:用户在开通IAP服务,半个小时左右才起效)
- 详情可参考官方文档
情形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
接口打印出的相关数据
解决方法:是否成功进入沙盒环境,可以通过以下几种方法排查
-
a) 查看返回的购买数据,参考下图:
-
b)查看支付报表
- 可以查看支付报表,如果支付报表没有该笔订单,说明该订单来自于沙盒测试产生的。(注:支付报表数据不是实时更新的,如果当天购买的订单,为了判断准确性,可以次日再刷新该报表验证)
-
c)清除HMS Core 缓存
- 可以尝试清除HMSCore缓存,端侧弹框是根据相应字段标识进行判断的,可能是缓存原因导致该值未及时刷新。可通过设置 ->应用和服务->应用管理->HMS Core 进行缓存清理。
了解更多详情>>
更多关于【FAQ】HarmonyOS鸿蒙Next应用内支付服务无法拉起支付页面常见原因分析和解决方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
学习了
更多关于【FAQ】HarmonyOS鸿蒙Next应用内支付服务无法拉起支付页面常见原因分析和解决方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
原因分析:
- 配置问题:未正确配置支付SDK或缺少必要参数。
- 网络问题:网络连接不稳定或中断。
- 权限问题:应用未获取必要的支付权限。
- 版本兼容性:SDK版本与系统不兼容。
- 支付环境问题:设备未安装支付应用或支付服务未启用。
解决方法:
- 检查并确保支付SDK配置正确,所有参数完整。
- 确认网络连接正常,尝试切换网络环境。
- 在应用权限设置中,确保支付权限已开启。
- 更新支付SDK至最新版本,确保与系统兼容。
- 检查设备是否安装支付应用,并启用支付服务。
如问题仍未解决,建议联系开发者支持团队获取进一步帮助。