华为应用内支付服务(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. 团队Arpha4

    队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 **过去两天完成了哪些任务 ** 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 服务器网络 ...

  2. BGP路由协议详解(完整版)

    (免责声明:来源于网络,版权原作者所有,转载仅为了传播.学习交流使用,如需删除请私信联系,严禁其他用途.) END 关注「开源Linux」加星标,提升IT技能 好文章,分享.点赞.在看三连哦️↓↓↓

  3. java_简单学习笔记

    java_study笔记 前言: 所有笔记均总结自狂神的java基础视频 https://www.bilibili.com/video/BV12J41137hu?p=1 idea小技巧 psvm+回车 ...

  4. Arthas常用功能及一次线上问题排查

    一.Arthas简介 Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程.主要通过交互式来完成功能. https://arthas.aliy ...

  5. 【算法】插入排序(Insertion Sort)(三)

    插入排序(Insertion Sort) 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相 ...

  6. nginx 源码安装配置详解(./configure)

    在"./configure"配置中,"--with"表示启用模块,也就是说这些模块在编译时不会自动构建,"--without"表示禁用模块, ...

  7. 【单片机】使用 sscanf 提取AT命令返回结果中的有效数据

    摘要:1. sscanf函数 sscanf是C标准库函数,用于从字符串中读取格式化输入. 头文件: #include <stdio.h>函数原型如下: int sscanf(const c ...

  8. 【物联网天线选择攻略】2.4GHz 频段增益天线模块设备选择

     天线模块设备(antenna)是一种能量变换器,它把传输线上传播的导行波,变换成在无界媒介中传播的电磁波,或者进行相反的变换.对于设计一个应用于射频系统中的小功率.短距离的2.4GHz无线收发设备, ...

  9. Nginx安装及支持https代理配置和禁用TSLv1.0、TSLv1.1配置

    Linux安装Nginx Nginx安装及支持https代理配置和禁用TSLv1.0.TSLv1.1配置. 下载安装包 [root@localhost ~]# wget http://nginx.or ...

  10. Apache Shiro反序列化漏洞(Shiro550)

    1.漏洞原理: Shiro 是 Java 的一个安全框架,执行身份验证.授权.密码.会话管理 shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rem ...