接入华为应用内支付,验证购买Token接口,返回“rights invalid”
有海外开发者向我们提问:我在应用中集成了华为应用内支付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
解决方案
- 根据开发者提供的代码显示他的接口用错了,他使用的是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" }
- 订阅商品的验证如下:
参数:subscriptionId;purchaseToken
接口Url: /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过程中遇到的各种编程问题。
欲了解更多详情,请参阅:
关注我们,第一时间了解 HMS Core 最新技术资讯~
- 接入华为推送用API给iOS应用发消息时如何获取access_token?
- 微信公众平台接口开发-接入验证测试token
- 支付宝接口手机网站支付验证返回字符串以及签名验证不通过的原因总结
- 接入华为推送用API给iOS应用发消息时,如何获取access_token?
- 苹果客户端支付后,服务器端对数据进行二次验证接口开发
- 8266接入华为hilink Demo之APP验证(三)
- php 接口token生成验证
- C语言学习7 :二级指针定义,强制转换,多级指针初步,6级指针构造,错误应用*p=&a,错误应用 二级p2,void型指针的兼容性,malloc函数基本用法,malloc分配空间和堆栈空间的区别,验证malloc函数内存的分配,验证malloc函数的越界,内存泄漏,指针不能返回局部变量地址,内存分配
- 微信统一支付接口返回“签名错误”的可能原因
- 客户端自行连苹果服务器验证购买完成返回的receipt
- PHP支付接口RSA验证
- 华为、中兴、烽火I2接口接入
- AOP拦截+权限验证+返回默认接口对象
- 接口测试框架开发(一):rest-Assured_接口返回数据验证
- 微信开发者模式之网址接入TOKEN验证
- 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)
- ChinaPay 支付接口接入 案例
- [由于远程方关闭传输流,身份验证失败]一次处理支付接口bug记录
- 微信服务器在填写服务器的配置返回token验证失败
- 升级社交立减金接口,微信沙箱提示“被扫支付金额(XXX)无效,请检查需要验证的case”