【FAQ】接入HMS Core应用内支付服务过程中一些常见问题总结
HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程。开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用内支付。通过应用内支付服务,用户可以在应用内购买各种类型的虚拟商品,包括一次性商品(包括消耗型商品和非消耗型商品)和订阅型商品。应用内支付服务支持客户端和服务端两种开发形式,具体可以参考以下官方文档:
在日常工作中,我们会收到开发者们留言的有关IAP集成的常见问题,这里进行一些分享和总结,希望为其他遇到类似问题的开发者提供参考——
- com.huawei.hmf.tasks.Task的使用问题。
Task是HMS Core SDK 底层框架的一个基础抽象类,通过实现Task类里面的相关抽象方法。比如添加一个或者多个监听器,当任务成功完成时该监听器被调用,当添加多个监听时,按照添加时的顺序调用,该调用在主线程中执行。
因为它已经集成在工程gradle包当中,所以直接用就可以,不需要重新创建声明。我们可以在Project工程中导入的 gradle文件中找到:

开发者也可以参考以下文档解决问题:
- InAppPurchaseData 参数中没有accountFlag是否正常?
InAppPurchaseData 参数中没有accountFlag的问题,根据应用内支付服务官方文档关于InAppPurchaseData的参考API:
InAppPurchaseData JSON类型用于保存用户购买信息,包括消耗型商品、非消耗型商品以及订阅型商品。其中的参数accountFlag 是非必选参数、可选字段,非固定返回,满足使用AppTouch应用才会有这个返回值。
- 文档 createPurchaseIntentWithPrice 的 onFailure 中 参数(Exception e)的判断(e instanceof IapApiException) 不成立。
首先需要确认设备和集成环境信息(最好更新到最新版本):HMS Core版本号、集成的SDK的版本号、设备是手机还是智慧屏。
然后根据官方文档60055错误码的注释,一般表示用户没有同意支付协议,开发者可以从请求接口中返回的IapApiException中获取到一个Status对象,Status中包含IAP协议页面,应用可使用Status的startResolutionForResult方法来启动协议页面。
导致该问题的原因可能还有以下几个方面:
(1)网络问题,网络异常导致接口获取失败。
(2)是否正确引用了 IapApiException。

(3)支付时是否有弹窗,如果没有弹窗需要开启设备 “后台弹出界面”权限,设置如下:找到 HMS Core 应用详情页-- 权限管理--“后台弹出界面”--选择“始终允许”,重新测试。
(4)如果是代码问题,请详细参考开发者联盟官方Demo实现和测试。Demo下载地址:

- 应用服务器验证,验证购买token 失败。
首先,出现“验证购买token 失败”提示,请详细参照 “获取应用级AT”文档的每一个步骤,检查获取的AT是否是应用级AT。获取应用级别AT地址文档:
然后再将获取的应用级AT封装,在请求头header中重新构建 authorization,具体可以参考公共说明的部分文档:

欲了解更多应用内支付服务详情,请参阅:
https://developer.huawei.com/consumer/cn/hms/huawei-iap/?ha_source=hms1
华为开发者联盟官网
获取开发指导文档
参与开发者讨论请到Reddit社区
下载demo和示例代码请到Github
解决集成问题请到Stack Overflow
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
【FAQ】接入HMS Core应用内支付服务过程中一些常见问题总结的更多相关文章
- 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦
HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...
- 【FAQ】接入HMS Core推送服务过程中一些常见问题总结
HMS Core 推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道.开发者通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活 ...
- 【FAQ】接入华为应用内支付服务常见问题解答
HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...
- 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法
华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种 ...
- SDK接入(3)之iOS内支付(In-App Purchase)接入
SDK接入(3)之iOS内支付(In-App Purchase)接入 继整理了Android平台的SDK接入过程.再来分享下iOS平台的内支付(In-App Purchase)接入,作为笔者在游戏开发 ...
- 别再问WiFi密码了,HMS Core统一扫码服务让手机一键联网
现代生活离不开网络.在餐厅.商场等公共场所,手机连接WiFi一直是高频使用场景.虽然公共场所的免费WiFi越来越多,但网络连接过程却很麻烦.有的需要打开网页注册或点击广告链接才能上网,还有的要求下载特 ...
- 【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法
HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端,可以从服务器发送下行消息给终端设备.这篇文章汇总了服务端下发消息最常见的6个错误码,并提供了原因分析和解决方法,有遇到类似问题的 ...
- 【FAQ】接入HMS Core地图服务过程中常见问题总结
HMS Core地图服务(Map Kit)给开发者提供一套地图开发调用的SDK,助力全球开发者实现个性化地图呈现与交互,方便轻松地在应用中集成地图相关的功能,全方位提升用户体验. 在日常工作中,我们会 ...
- 【FAQ】HMS Core推送服务与本地创建通知消息如何相互覆盖?
我们知道,单独使用HMS Core推送服务或本地创建通知消息,都可以实现通知消息的覆盖,方式分别为: 1.本地创建通知消息(简称本地通知消息) 通过notificationManager.notify ...
随机推荐
- day7 对字母数字的编排
1.函数fun()的功能:在s数组内寻找并且统计t数组在s数组中出现的次数 输入字符串:函数scanf()函数不好用,会出现很多bug,因此不使用scanf() 效果理想: 2.函数fun()功能:将 ...
- linux + opencv + cuvid中使用cv::cuda::GpuMat类的一些坑
1.我最终成功实现了opencv中利用cuvid实现GPU视频解码:核心代码是: 1 cv::cuda::GpuMat d_frame; 2 cv::Ptr<cv::cudacodec::Vid ...
- golang中sha256、md5加密,base64encode、base64decode
package tool import ( "crypto/md5" "crypto/sha256" "encoding/base64" & ...
- go生成随机数字验证码
一行代码搞定 code := fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n( ...
- gin框架的热加载方法
gin是用于实时重新加载Go Web应用程序的简单命令行实用程序.只需gin在您的应用程序目录中运行,您的网络应用程序将 gin作为代理提供.gin检测到更改后,将自动重新编译您的代码.您的应用在下次 ...
- Tomcat-默认访问的工程和默认访问的资源
Tomcat(默认访问的工程和默认访问的资源) ROOT的工程的访问,以及默认index.html页面的访问 当我们在浏览器地址栏中输入访问地址如下: http://ip:port/ ====== ...
- IoC容器-Bean管理XML方式(注入外部bean)
注入属性-外部bean (1)创建两个类service类和dao类 (2)在service调用dao里面的方法 (3)在spring配置文件中进行配置
- super之mro列表牵引出c3算法
目录 一:super的使用 二:super之mro列表牵引出c3算法 三:mro列表总结使用 一:super的使用 class Person(object): def __init__(self, n ...
- python input函数
函数 input() 让程序暂停运行,等待用户输入值,之后再把值赋给变量,输出.
- Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询
创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...