I am trying to call App store server API: GET https://api.storekit-sandbox.itunes.apple.com/inApps/v1/subscriptions/100
from spring boot application. I used jjwt:0.9.1 library to generate JWT token as below:
Map<String, Object> singHeaders = new HashMap<>(); singHeaders.put("alg", "ES256"); singHeaders.put("kid", appleKeyId); singHeaders.put("typ", "JWT");
Map<String, Object> payload = new HashMap<>();
payload.put("iss", appleIssuerId);
payload.put("aud", "appstoreconnect-v1");
payload.put("bid ", appleBundleId);
payload.put("iat", OffsetDateTime.now().toEpochSecond());
payload.put("exp", OffsetDateTime.now().plusMinutes(60l).toEpochSecond());
payload.put("nonce", UUID.randomUUID());
JwtBuilder jwtBuilder = Jwts.builder()
.setHeader(singHeaders)
.setClaims(payload);
try {
PemReader pemReader1 = new PemReader(new StringReader(applePrivateKey));
final PemObject pemKeyPair = pemReader1.readPemObject();
final byte[] encoded = pemKeyPair.getContent();
final KeyFactory keyPairGenerator = KeyFactory.getInstance("EC");
PrivateKey EC_PRIVATE_KEY = keyPairGenerator.generatePrivate(new PKCS8EncodedKeySpec(encoded));
jwtBuilder.signWith(SignatureAlgorithm.ES256, EC_PRIVATE_KEY);
return jwtBuilder;
} catch (Exception e) {
//throw exception
}
when i call the api with the token generated by above code is giving 400 error::
[{"errorCode":4000002,"errorMessage":"Invalid request app identifier."}]
I have tried with keyId and private key taken from store connect keys as well as purchase keys but no use.
could someone help on what is missing in the request