В журналах я получаю следующие ошибки:
- SKErrorDomain Code=12 "(null)"
- ASDServerErrorDomain Code=3903 "Невозможно совершить покупку"
Вот примеры значений параметров, которые я передаю в объединенную строку appBundleId + '\u2063' + keyIdentifier + '\u2063' + productIdentifier + ' \u2063' + OfferIdentifier + '\u2063' + appAccountToken + '\u2063' + nonce + '\u2063' + временная метка - appBundleId: com.app.myapp
- keyIdentifier: скопирован идентификатор ключа из App Store Connect
< li>productIdentifier: Product_identifier - offerIdentifier: Offer_identifier
- appAccountTokenproductIdentifier: product_identifier
- offerIdentifier: Offer_identifier
- appAccountToken: попробовал и UUID, и пустую строку.
- nonce: UUID в нижнем регистре.
- метка времени. : временная метка UNIX
Код: Выделить всё
/* promotionalOfferKey = value between "-----BEGIN PRIVATE KEY-----" and "-----END PRIVATE KEY-----" from the downloaded p8 file from App Store Connect associated with the keyIdentifier parameter above */
// stringToSign = the combined string above
byte[] encoded = Base64.getDecoder().decode(promotionalOfferKey);
KeyFactory keyFactory = KeyFactory.getInstance("EC");
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded);
Signature ecdsaSign = Signature.getInstance("SHA256withECDSA");
ecdsaSign.initSign(keyFactory.generatePrivate(keySpec));
ecdsaSign.update(stringToSign.getBytes(StandardCharsets.UTF_8));
byte[] signature = ecdsaSign.sign();
signatureToReturn = Base64.getEncoder().encodeToString(signature);
Подробнее здесь: https://stackoverflow.com/questions/762 ... fer-errors