我正在尝试IAP的服务器端Canceled api,但无法使用此api取消订阅。每次单击"取消"时,我都会收到以下错误:响应代码:";6〃"responseMessage":"900030授权格式无效";
我使用的API是这样的:https://subscr-dra.iap.hicloud.com/sub/applications/v2/purchases/stop
有人能帮我吗?我被卡住了?
AT文件的扩展名不正确。
身份验证信息是根据请求标头指定的。具体如下:应用级访问令牌:授权:基本Base64(APPAT:at值(
- 示例:应用级访问令牌为thisIsAppAtValue,则APPAT:at值为APPAT:thisIsAppAtValue。因此,更换APPAT:在Base64中的atvalue(APPAT:atvalue(,APPAT:thisIsAppAtValue,并且获得值QVBQVQ6dGhpc0lzQXBwQXRWYWx1ZQ==。的值请求标头中的授权如下:基本QVBQQVQ6dGhpc0lzQXBwQXRWWx1ZQ==
示例代码如下:
/* 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应用内购买(IAP(在Github上的Severdemo。
您收到的错误代码–900030表示您的签名验证数据格式无效。可能的原因有:•请求标头中的令牌未在Base64模式下加密。•字符串APPAT没有附加到用于授权的访问令牌的开头。正确的访问令牌的格式为APPAT:thisIsAppAtVaule。
你可以在这里阅读关于这个错误代码
请确保您的请求遵循本文件中指定的格式
如果您仍然收到相同的错误,请在此处张贴您的请求数据格式。
检查您作为授权放入标头中的令牌的格式。
代码:
let oriString = 'APPAT:' + app_level_access_token;
let authorizationToken = new Buffer.from(oriString).toString('base64'); // converting the token into Base64.
现在这个authorizationToken
,您可以在标头中使用它。