华为应用内支付服务(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个必要条件。

  1. 当前登录的华为帐号属于沙盒帐号

  2. VersionCode大于应用市场线上版本(该APK暂未发布应用市场,所以应用市场返回的版本号为0)

很明显从结果来看理论上应该进入了沙盒测试环境。那么有没有其他方法来确认?

解决方法:是否成功进入沙盒环境,可以通过以下几种方法排查

a) 查看返回的购买数据,参考下图:

如果华为订单号payOrderId以SandBox开头,那么表面该笔订单属于沙盒测试产生的订单。

b)查看支付报表

可以查看支付报表,如果支付报表没有该笔订单,说明该订单来自于沙盒测试产生的。(注:支付报表数据不是实时更新的,如果当天购买的订单,为了判断准确性,可以次日再刷新该报表验证)

c)清除HMS Core 缓存

可以尝试清除HMSCore缓存,端侧弹框是根据相应字段标识进行判断的,可能是缓存原因导致该值未及时刷新。可通过设置 –>应用和服务->应用管理->HMS Core 进行缓存清理。

了解更多详情>>

访问华为开发者联盟官网

获取开发指导文档

华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法的更多相关文章

  1. 【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法

    HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端,可以从服务器发送下行消息给终端设备.这篇文章汇总了服务端下发消息最常见的6个错误码,并提供了原因分析和解决方法,有遇到类似问题的 ...

  2. 【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法

    很多开发者在接入华为帐号服务时,经常会出现907135701的报错.根据官网文档说明,错误码907135701表示: 这个错误码在安卓和鸿蒙上都会出现,导致该报错的原因有很多,开发者可以按照下面几点进 ...

  3. iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法

    问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...

  4. 【集群实战】NFS服务常见故障排查和解决方法

    NFS,全名叫Network File System,中文叫网络文件系统,是Linux.UNIX系统的分布式文件系统的一个组成部分,可实现在不同网络上共享远程文件系统. NFS由Sun公司开发,目前已 ...

  5. 启动weblogic服务时,还需要输入用户名和密码的解决方法

    当启动weblogic服务时,还需要输入用户名和密码,相当繁琐,如下: 而在生产环境中,一般会要求不要在每次启动时都输入用户名密码, 因此可以通过一些简单的配置达到此目的,通常的做法有两种: 1.修改 ...

  6. bootstrap下使用模态框,在模态框内输入框中回车时,模态框自动关闭的问题及解决方法

    使用bootstrap下模态框,构建表单提交页面,但是输入框中直接回车,本来是想执行一下验证,但是却导致模态框自动关闭了. 遇到这样的问题,只需要先禁止回车触发表单提交            $(do ...

  7. 【FAQ】接入HMS Core应用内支付服务过程中一些常见问题总结

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

  8. 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...

  9. 【FAQ】接入华为应用内支付服务常见问题解答

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

随机推荐

  1. 【转】WinForm窗体刻度尺

    `using System; using System.Drawing; using System.Windows.Forms; using System.Drawing.Drawing2D; nam ...

  2. redo log 和 binlog 的一些总结

    1 redo log 和 binlog 的区别 redo log 是 InnoDB 引擎特有的:binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用. redo log 是物理 ...

  3. 基于DEM的坡度坡向分析

    坡度坡向分析方法 坡度(slope)是地面特定区域高度变化比率的量度.坡度的表示方法有百分比法.度数法.密位法和分数法四种,其中以百分比法和度数法较为常用.本文计算的为坡度百分比数据.如当角度为45度 ...

  4. Redis 的数据过期了就会马上删除么?

    码哥,当 key 达到过期时间,Redis 就会马上删除么? 先说结论,并不会立马删除,Redis 有两种删除过期数据的策略: 定期选取部分数据删除: 惰性删除: 该命令在 Redis 2.4 版本, ...

  5. 没错,就是Access-Control-Allow-Origin,跨域

    服务端添加: <add name="Access-Control-Allow-Origin" value="*" /><add name=&q ...

  6. 题解 P1276 校门外的树(增强版)

    前言 本蒟蒻重学线段树,发现了这道题可以用线段树做. 虽然数据范围很小可以直接暴力,但由于在练习线段树所以打算用线段树写这道题. 本题解针对已经有线段树基础的巨佬,不懂线段树原理的话可以学习线段树后再 ...

  7. CF1485E Move and Swap

    题意:Move and Swap 很好的题呢 n个节点的树,根为1,所有叶子的深度都是D,一开始根节点上有两个颜色分别微R,B的球,你执行下列操作D-1次: 1.R点跳到子树内 2.B点跳到下一层的任 ...

  8. 直接将A类库复制到vs中的B类库,但是解决方案菜单中不显示

    1.将要复制的文件夹复制粘贴到你要用的vs项目中 2.右键 添加   现有项目  选中xxxxx.csproj文件   点击  打开   就可以了

  9. ExtJS 布局-Fit布局(Fit Layout)

    更新记录: 2022年5月31日 第一稿. 1.说明 Fit布局只会显示一个子组件,子项组件的尺寸会拉伸到容器的尺寸.当容器进行调整大小(resized),子组件会自动调整去拉伸到付容器的大小. 注意 ...

  10. Python基础学习笔记_01

    Python的介绍 1989年圣诞节创造,1991年正真出生,目前更新到3.0版本 具有最庞大的"代码库",人称"胶水语言",无所不能 一种跨平台的计算机程序设 ...