华为Order服务验证购买Token返回错误信息“Token is expired or invalid” HarmonyOS鸿蒙Next

华为Order服务验证购买Token返回错误信息“Token is expired or invalid” HarmonyOS鸿蒙Next

关键词

华为应用内支付校验,purchaseToken校验

问题背景

支付成功后做校验,参考华为应用内支付服务端文档,调用Order服务验证购买Token接口{rootUrl}/applications/purchases/tokens/verify,返回错误码{"responseCode":"6","responseMessage":"Token is expired or invalid"}

问题分析

我参考了网上的帖子:

最后我找到华为技术支持(可以提交工单:https://developer.huawei.com/consumer/cn/support/feedback),对方让我把{rootUrl}/applications/purchases/tokens/verify接口的Authorization参数发出来检查一下,我的Authorization参数是"Basic QVBQQVQ6UkVGRlFrRk1URWhoUnl0d0sxVldVRkZ5WVd0**************************VlpCVlRkbmVXOW5SVW8zTkdaVlJVaHphek5QSzFsTlprUkpOa3hVYlU1S1RXdFVaSGRNZDA1U1RHTnZka3BPVmt0M1BUMD0="

对方检查后告诉我,我的参数编码了两次。

Authorization正确传参为:对获取的AT拼接“APPAT:”前缀,然后进行Base64编码,最后对编码后的字串拼接“Basic”前缀。

例:

i. 获取的AT为字符串A

“DAEBALLHaG+p+UVPQrakLw****************O+YMfDI6LTmNJMkTdwLwNRLcovJNVKw==”

ii. 字符串A拼接“APPAT:”前缀后的字符串B

“APPAT: DAEBALLHaG+p+UVPQrakLw****************O+YMfDI6LTmNJMkTdwLwNRLcovJNVKw==”

iii. 对字符串B进行Base64编码后的字符串C:

“QVBQQVQ6REFFQkFMTEhhRyt****************0RvQ0JTSkduR3VYUDVmMmdkSVZBVTdneW9nRUo3NGZVRUhzazNPK1lNZkRJNkxUbU5KTWtUZHdMd05STGNvdkpOVkt3PT0=”

iv. 对字符串C拼接“Basic”前缀后的字符串D:

“Basic QVBQQVQ6REFFQkFMTEhhRyt****************0RvQ0JTSkduR3VYUDVmMmdkSVZBVTdneW9nRUo3NGZVRUhzazNPK1lNZkRJNkxUbU5KTWtUZHdMd05STGNvdkpOVkt3PT0=”

v. 将字符串D作为Authorization的参数进行请求。

而我对获取的AT字串先进行了一次编码,再拼接“APPAT:”前缀,然后又进行了一次Base64编码。

按照对方的指导修改以后,接口请求正常,问题解决。


更多关于华为Order服务验证购买Token返回错误信息“Token is expired or invalid” HarmonyOS鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于华为Order服务验证购买Token返回错误信息“Token is expired or invalid” HarmonyOS鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


当华为Order服务验证购买Token时返回“Token is expired or invalid”错误信息,通常表示提供的Token已过期或无效。建议您检查以下几点:

  • Token有效期:确保Token在有效期内使用,过期后需重新获取。
  • Token生成方式:确认Token生成过程正确无误,符合华为Order服务的规范。
  • 网络请求:检查网络请求是否完整,包括Token的传递和格式。
  • 服务端配置:确保服务端配置正确,尤其是与华为Order服务对接的部分。

如问题持续,建议联系华为技术支持获取进一步帮助。

回到顶部