【问题标题】:Not able to cancel huawei IAP subscription无法取消华为 IAP 订阅
【发布时间】:2020-07-10 16:59:58
【问题描述】:
【问题讨论】:
标签:
android
kotlin
in-app-purchase
huawei-mobile-services
huawei-iap
【解决方案1】:
AT 文件的扩展名不正确。
身份验证信息是根据请求标头指定的。
详情如下: 应用级访问令牌: 授权:
基本 Base64(APPAT:atvalue)
- 示例:应用级访问令牌为 thisIsAppAtValue,则 APPAT:atvalue 为 APPAT:thisIsAppAtValue。因此,更换
APPAT:atvalue in Base64(APPAT:atvalue) with APPAT:thisIsAppAtValue,
得到值QVBQQVQ6dGhpc0lzQXBwQXRWYWx1ZQ==。的价值
请求头中的授权如下: Basic
QVBQQVQ6dGhpc0lzQXBwQXRWYWx1ZQ==
示例代码如下:
/* Build Authorization in Header
*
* @param appAt app AccessToken
* @return headers
*/
public static Map<String, String> buildAuthorization(String appAt) {
String oriString = MessageFormat.format("APPAT:{0}", appAt);
String authorization =
MessageFormat.format("Basic {0}", Base64.encodeBase64String(oriString.getBytes(StandardCharsets.UTF_8)));
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", authorization);
headers.put("Content-Type", "application/json; charset=UTF-8");
return headers;
}
HMS In-App Purchases(IAP) Severdemo on Github.
【解决方案2】:
您收到的错误码——900030表示您的签名验证数据格式无效。可能的原因有:
• 请求标头中的令牌未在 Base64 模式下加密。
• 字符串APPAT 未附加到访问令牌的开头以进行授权。正确的访问令牌格式为 APPAT:thisIsAppAtVaule。
您可以阅读此错误代码here
请确保您的请求遵循document中指定的格式
如果您仍然收到同样的错误,请在此处发布您的请求数据格式。
【解决方案3】:
检查您作为授权放入标头的令牌的格式。
代码:
let oriString = 'APPAT:' + app_level_access_token;
let authorizationToken = new Buffer.from(oriString).toString('base64'); // converting the token into Base64.
现在这个authorizationToken,你可以在标题中使用它。