Невозможно отменить подписку huawei IAP
Я пытался использовать отмененный API-интерфейс IAP на стороне сервера, но не могу отменить подписку с помощью этого API-интерфейса. Каждый раз, когда я нажимаю кнопку "Отмена", я получаю следующую ошибку: responseCode:"6","responseMessage":"900030-формат авторизации недействителен"
и API, который я использую, таков: https://subscr-dra.iap.hicloud.com/sub/applications/v2/purchases/stop
Кто-нибудь может мне помочь с этим, я застрял?
1 ответ
Проверьте формат токена, который вы вводите в заголовок в качестве авторизации.
Код:let oriString = 'APPAT:' + app_level_access_token;
let authorizationToken = new Buffer.from(oriString).toString('base64'); // преобразование токена в Base64.
Теперь этот authorizationToken можно использовать в шапке.
Полученный вами код ошибки - 900030 означает, что ваш формат данных проверки подписи недействителен. Возможные причины: • Маркер в заголовке запроса не зашифрован в режиме Base64. • Символьная строка APPAT не добавляется в начало токена доступа для авторизации. Правильный токен доступа имеет формат APPAT:thisIsAppAtVaule.
Вы можете прочитать об этом коде ошибки здесь
Убедитесь, что ваш запрос соответствует формату, указанному в этом документе.
Если вы по-прежнему получаете ту же ошибку, пожалуйста, опубликуйте свой формат данных запроса здесь.
Расширение файла AT неверно.
Информация для аутентификации указывается на основе заголовка запроса. Подробности таковы: Токен доступа на уровне приложения: Авторизация: Basic Base64(APPAT:atvalue)
- Пример: токен доступа на уровне приложения - thisIsAppAtValue, затем APPAT: atvalue - APPAT:thisIsAppAtValue. Поэтому замените APPAT: atvalue в Base64 (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;
}
HMS In-App Purchases(IAP) Severdemo на Github.