FAQ应用内支付服务无法拉起支付页面常见原因分析和解决方法
Posted 华为移动服务
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FAQ应用内支付服务无法拉起支付页面常见原因分析和解决方法相关的知识,希望对你有一定的参考价值。
华为应用内支付服务(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 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 最新技术资讯~
以上是关于FAQ应用内支付服务无法拉起支付页面常见原因分析和解决方法的主要内容,如果未能解决你的问题,请参考以下文章