华为应用内支付服务(In-App Purchases,IAP)为开发者提供便捷的应用内支付体验和简便的接入流程。开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用内支付。在集成过程中,开发者可能会遇到报错的问题,这时我们可以通过查找日志中的tag的方法对问题快速进行排查和定位,以下我们会结合两个实际问题来看如何使用这个方法。

问题一:某开发者调用华为应用内支付SDK,拉起收银台页面,提示“当前支付服务不可用,请稍后再试”。具体参考下图:

问题分析

1.首先我们确认调用的是IAP哪个接口。

通过查看开发者给的日志我们发现调用的是非PMS接口(通过过滤IapClientImpl,我们可以查询调用的接口名)

2.如果是pms,那么调用的收银台接口名为createPurchaseIntent,如果是非pms接口,则调用的接口名为createPurchaseIntentWithPrice。

3.根据对话框提示支付服务不可用,可能是支付服务api开关未打开或者某些地区不支持支付。按照这个思路我们进行定位,在日志中搜索tag: “hms_pay”:

日志显示当前的服务地是法国,但目前应用内支付服务购买非PMS商品只支持中国大陆,所以会提示支付不可用。

解决方法

在应用市场将服务地切换回国内,具体操作如下:应用市场 -> 设置 –> 国家/地区 –> 中国。

问题总结

开发者在调试过程中,如果出现接口不通,或者提示错误时,可以使用以下tag来进行问题定位:

HMSSDK: 可以通过此tag查询到HMS Core SDK框架侧是否异常,如6003,6004,90713XXXX等错误码,当然也会包含IAP SDK侧错误码。如60002,60050等

hms_pay: 如果出现60002,60050等IAP SDK侧错误码,可以通过IAP APK侧来分析可能出现的问题,即可以用该tag进行后续APK侧日志的定位分析。

Network-Request:这个tag其实也属于hms_pay下面的,属于服务测返回的错误码,我们可以根据服务侧返回的错误码以及错误描述,对照服务测文档进行初步排查和定位。如8、9、11、12等错误码。

问题二:某位开发者在调用“isEnvReady“方法时报错,提示“本应用未在当前国家/地区发布”具体参考下图:

问题分析

首先我们在日志上查找Tag 为HMSSDK 和 hms_pay, 发现60007错误码,对比业务错误码,提示商品配置的地区没有分发到该国家。

我们根据错误码提示去AGC网站上查询发布国家和地区,发现目前应用发布地设置在欧洲,但当前登录的帐号在中国大陆,所以会提示该错误。

解决方法

打开AGC网站,在应用上架 –>准备提交页面,将发布国家或地区勾选上中国大陆(如果想在某个国家或地区上架,需要勾选上对应国家或地区),勾选后点击保存,变更后一般在几个小时内会生效。

问题总结

和问题一的定位思路基本一致。根据错误码来进行初步定位。首先要根据客户端错误码判断可能存在的问题,如果我们已经拿到对应的客户端错误码,那么根据官网的错误码含义和解决方案处理即可。

了解更多详情>>

访问华为开发者联盟官网

获取开发指导文档

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

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

【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析的更多相关文章

  1. 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法

    华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种 ...

  2. C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案

    有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用.但在PL/SQL中正常调用返回. 于是动手一试: 1.准备函数(Oralce 11g.2.0.0.4) CREATE OR R ...

  3. matlab调用自己写的函数时报错: reference to a cleared variable

    原因是在自己写的函数中加了clear. 解决办法:自己定义的函数中不能加clear,可以加clc;

  4. unittest中的方法调用时报错ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTest

    调用unittest中的方法时报错: ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTest ...

  5. unittest 中的方法调用时报错 ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTest

    1.调用unittest中的方法时报错: ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTe ...

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

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

  7. 接入华为应用内支付,验证购买Token接口,返回“rights invalid”

    有海外开发者向我们提问:我在应用中集成了华为应用内支付SDK(测试购买订阅型商品),按照文档说明,在服务器去请求验证购买Token接口的时候返回了{"responseCode":& ...

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

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

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

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

  10. SDK接入(2)之Android Google Play内支付(in-app Billing)接入

    SDK接入(2)之Android Google Play内支付(in-app Billing)接入 继上篇SDK接入(1)之Android Facebook SDK接入整理完Facebook接入流程之 ...

随机推荐

  1. require和import的区别以及相互使用的方式

    Node.js 里可分为 CommonJS 模块和 ECMAScript 模块(ESM)两种不同的模块系统. CommonJS 模块是 Node.js 最初支持的模块系统,它使用 require() ...

  2. Java 包装类的使用 + 小练习

    1 package com.bytezreo.ut; 2 3 import org.junit.Test; 4 5 /** 6 * 7 * @Description 包装类的使用 8 * @autho ...

  3. DDD笔记

    笔记来源于b站视频 1.系统"老化" 需求难:程序员和产品经理沟通困难,更改需求难 开发难:对于上前行代码的类,更改很难,只能用if-else 创新难:对于之前老的技术笔试SSH想 ...

  4. Java中枚举配合switch语句用法-2022新项目

    一.业务场景 项目开发中经常会遇到多条件判断的情况,如果判断条件少的话使用if/elseif/else还比较好处理,如果判断条件多的话,则在使用这种语句就不太合适. 如果是自定义的一些内容,比如不同的 ...

  5. xp 下对 pdfjs-dist 库的支持 49的chrome xp壳

    公司下壳的版本非常低,不支持es6 chromium Version = 49.0.2623.87 早先是 require('pdfjs-dist'),但是这里面都是es6的代码,xp下直接就崩溃了, ...

  6. Set-Alias navi ./navi.bat - 设置别名 - powershell入门 (后期改方案了,换npm script)

    需求 开机要启动好几个服务,原先都用vscode启动,觉得可能比较占内存,所以改成命令行 发现直接运行bat,需要输入./batName.bat 一次还行,天天输入就麻烦了 命令 Set-Alias ...

  7. a++和++a的运算区别是?

       a++和++a 都属于自增运算符, 区别是对变量a的值进行自增的时机不同.   a++是先进行取值,后进行自增.++a是先进行自增,后进行取值.  

  8. Java/Kotlin 密码复杂规则校验

    原文地址: Java/Kotlin 密码复杂度校验 | Stars-One的杂货小窝 每次有那个密码复杂校验,不会写正则表达式,每次都去搜,但有时候校验的条件又是奇奇怪怪的,百度都搜不到 找到了个代码 ...

  9. Spring Boot学习日记5

    启动器 spring-boot-starter 启动器:说白了就是SpringBoot的启动场景 比如spring-boot-starter-web,会帮我们自动导入web环境所有的依赖 spring ...

  10. 【LeetCode刷题】239.滑动窗口最大值

    239.滑动窗口最大值(点击跳转LeetCode) 给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的k个数字.滑动窗口每次只向右移动一位. ...