无法取消华为IAP订阅

时间:2020-07-10 16:59:58

标签: in-app-purchase huawei-iap

我正在尝试使用IAP的服务器端已取消api,但无法使用此api取消订阅。每次我单击取消时,我都会收到此错误: responseCode:“ 6”,“ responseMessage”:“ 900030-授权格式无效”

和我正在使用的API是这样的: https://subscr-dra.iap.hicloud.com/sub/applications/v2/purchases/stop

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

检查作为授权添加到标头中的令牌的格式

代码: let oriString ='APPAT:'+ app_level_access_token;

letauthorizationToken = new Buffer.from(oriString).toString('base64'); //将令牌转换为Base64。

现在,此 authorizationToken 可以在标头中使用。

答案 1 :(得分:0)

AT文件的扩展名不正确。

根据请求头指定认证信息。 详细信息如下:应用程序级访问令牌:授权: 基本Base64(APPAT:atvalue)

  • 示例:应用程序级别的访问令牌是thisIsAppAtValue,然后APPAT:atvalue是APPAT:thisIsAppAtValue。因此,请更换 Base64(APPAT:atvalue)中的APPAT:atvalue与APPAT:thisIsAppAtValue, 并获得值QVBQQVQ6dGhpc0lzQXBwQXRWYWx1ZQ ==。的价值 请求标头中的授权如下:基本 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;
}

Github上的HMS应用内购买(IAP)Severdemo。

答案 2 :(得分:0)

您收到的错误代码– 900030表示您的签名验证数据格式无效。可能的原因是: •请求标头中的令牌在Base64模式下未加密。 •字符串APPAT不会附加到访问令牌的开头以进行授权。正确的访问令牌的格式为APPAT:thisIsAppAtVaule。

您可以了解有关此错误代码here

请确保您的请求遵循此document

中指定的格式

如果仍然收到相同的错误,请在此处发布您的请求数据格式。