有海外开发者向我们提问:我在应用中集成了华为应用内支付SDK(测试购买订阅型商品),按照文档说明,在服务器去请求验证购买Token接口的时候返回了{"responseCode":"6","responseMessage":"rights invalid"}。此错误在文档FAQ中有提到:建议优先检查获取AccessToken时的appid和实际请求参数purchaseToken关联的appid是否同一个。我只有一组项目,一组客户端ID及客户端秘钥,因此按理说appid应该是相同的。我不知道是哪里有问题? 我该怎么配置。

问题详情见链接:https://stackoverflow.com/questions/64613379/huawei-in-app-purchase-token-verification-unexpected-error-rights-invalid

解决方案

  1. 根据开发者提供的代码显示他的接口用错了,他使用的是Order服务购买Token校验,应该使用Subscription服务验证购买Token

Order服务购买Token校验只针对非订阅型商品,包括消耗型商品和非消耗型商品。应用可以调用本接口向华为支付服务器校验支付结果中的购买令牌,确认支付结果的准确性。

Subscription服务验证购买Token只针对订阅型商品。此接口用于校验购买的商品,判断商品是否已经成功购买,是否在有效期内。

Order服务验证购买Token请求示例如下:

POST /applications/purchases/tokens/verify
Content-Type: application/json; charset=UTF-8
Authorization: Basic QVQ6Q1YzQ1NPbVlBaGwrZUtRWExtMTBVV2pyWXZHTVF4MmYvcVMya1B0ZElLY3UwaFJrdFNTMmxwdk1FQkIyYldXWGt0REVaR3I4UjFUTTRLMVlmNXdwWU80RG04THdXQWxjaFhEYjBMUjBNTUJtWnFYcGFtazc3THN3UnFJbkhHK28xekdqRzNSMg==
Accept: application/json
Content-Length: 143
{
"purchaseToken": "00000173741056a37eef310dff9c6a86fec57efafe318ae478e52d9c4261994d64c8f6fc8ea1abbdx5347.5.3089",
"productId": "prd1"
}

Subscription服务验证购买Token请求示例如下:

POST /sub/applications/v2/purchases/get
Content-Type: application/json; charset=UTF-8
Authorization: Basic QVQ6Q1YzQ1NPbVlBaGwrZUtRWExtMTBVV2pyWXZHTVF4MmYvcVMya1B0ZElLY3UwaFJrdFNTMmxwdk1FQkIyYldXWGt0REVaR3I4UjFUTTRLMVlmNXdwWU80RG04THdXQWxjaFhEYjBMUjBNTUJtWnFYcGFtazc3THN3UnFJbkhHK28xekdqRzNSMg==
Accept: application/json
Content-Length: 171
{
"purchaseToken": "00000173741056a37eef310dff9c6a86fec57efafe318ae478e52d9c4261994d64c8f6fc8ea1abbdx5347.5.3089",
"subscriptionId": "1581789719266.D40972AC.3089"
}
  1. 订阅商品的验证如下:

参数:subscriptionId;purchaseToken

接口Url: {rootUrl}/sub/applications/v2/purchases/get

rootURL

中国站点: https://subscr-drcn.iap.hicloud.com

德国站点: https://subscr-dre.iap.hicloud.com

新加坡站点: https://subscr-dra.iap.hicloud.com

俄罗斯站点: https://subscr-drru.iap.hicloud.com

AppTouch 德国站点: https://subscr-at-dre.iap.dbankcloud.com

AppTouch新加坡站点: https://subscr-at-dra.iap.dbankcloud.com

上述介绍了App集成应用内支付SDK后验证购买Token接口时返回“rights invalid”的解决方案,那么有人可能要问了,华为应用内支付究竟是什么呢?有什么功能?

关于HMS IAP Kit

华为应用内支付服务(In-App Purchases,IAP)为APP提供便捷的应用内支付体验和简便的接入流程。App通过集成IAP SDK,再调用IAP SDK接口启动IAP收银台,即可实现应用内支付。聚合多种支付通道,支持全球支付,为应用提供便捷的应用内支付体验,通过应用内支付服务,用户可以在应用内购买各种类型的商品或服务,包括普通虚拟商品和订阅商品服务,助力开发者的商业变现。

快速体验华为应用内支付服务教程和开发实例请参见快速入门指南

Stack Overflow 与HMS

作为全球最大的编程问答社区,Stack Overflow上每天都会有来自全球各地不同国家的开发者在上面提问各种编程问题。我们也在Stack Overflow上开了专栏:Stack Overflow 欢迎大家在上面提问在集成HMS Core过程中遇到的各种编程问题。

欲了解更多详情,请参阅:

华为应用内支付服务官网

应用内支付开发指南

示例代码

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

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

接入华为应用内支付,验证购买Token接口,返回“rights invalid”的更多相关文章

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

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

  2. iOS- 给App添加内购& 验证购买iOS7新特性

    1.内购——应用内购买 我所说的内购——也可以说是应用内购买 大家都知道通过苹果应用程序商店有三种主要赚钱的方式: 1.直接收费(与国内大部分用户的消费习惯相悖,如果要收费,直接收高的,别收6块钱) ...

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

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

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

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

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

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

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

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

  7. SDK接入(3)之iOS内支付(In-App Purchase)接入

    SDK接入(3)之iOS内支付(In-App Purchase)接入 继整理了Android平台的SDK接入过程.再来分享下iOS平台的内支付(In-App Purchase)接入,作为笔者在游戏开发 ...

  8. Google play billing(Google play 内支付) 上篇

    写在前面: 最近Google貌似又被全面封杀了,幸好在此之前,把Google play billing弄完了,现在写篇 博客来做下记录.这篇博客一是自己做个记录,二是帮助其他有需要的人.因为现在基本登 ...

  9. Google play billing(Google play 内支付)

    准备工作 1. 通过Android SDK Manager下载extras中的Google Play services和Google Play Billing Library两个包. 2. 把下载的. ...

随机推荐

  1. 查找----python

    class Solution: #顺序查找 def seq_search(self,list,num): for i in(range(len(list))): if list[i] == num: ...

  2. 关于kong | API Gateway

    目录 为什么需要 API 网关(more) kong的概念 为什么使用Kong Kong 的管理方式 高可扩展性的背后-插件机制 [前言]: Kong是一个云原生,高效,可扩展的分布式 API 网关. ...

  3. Vue数据双向绑定不起作用、Vue如何正确的手动添加json数据、Vue视图层不刷新、手动刷新视图层

    Vue.set(obj,"key","value") 如果接收到来自服务器的消息时,我们需要对其进性进一步处理 我们想当然的会直接将数据添加进json 像这样: ...

  4. nmcli device and nmcli connection

    NetworkManager是RHEL 7之后推出的有效管理网络的服务 NetworkManager通过工具nmcli来管理网卡 网卡属于物理硬件,NetworkManager属于软件层面,如何通过软 ...

  5. C语言:scanf()

    #include <stdio.h> int main() { int a;float b; scanf("a=%d,b=%f",&a,&b); pri ...

  6. python基础之多线程的操作

    # 多线程实例# 例1.单线程from time import sleep,ctimedef task1(taskName): for i in range(2): print("正在执行 ...

  7. tomcat禁用PUT,DELETE等一些不必要的HTTP方法

    一.背景 公司进行安全整改, 技术要求:系统软件所需支撑的WEB容器环境应禁止除GET和POST外其他HTTP(S)方法. 提供凭证:建议在不影响业务的前提下,禁用PUT.DELETE.HEAD.OP ...

  8. nodejs 文本逐行读写功能的实现

    利用nodejs实现:逐行读写(从一个文件逐行复制到另外一个文件):逐行读取.处理和写入(读取一行,处理后,写入另一个文件) 1.所需要的模块: fs,os,readline 2.具体实现: a. 功 ...

  9. vue-- 利用过滤-实现搜索框的姓名的搜索

    <div class="fl w-200 m-l-30"> <el-input placeholder="输入用户名" v-model=&qu ...

  10. css问题记录

    1.flex:1元素被子元素撑开,将该元素overflow不为visible,构造BFC,或子元素脱离文档流