Post

Replies

Boosts

Views

Activity

Reply to Unauthorized for Advanced Commerce API Purchase
Yes, the signature payload matches. This is the JWT And this is the decoded payload from the JWT: { "request": "eyJvcGVyYXRpb24iOiJDUkVBVEVfU1VCU0NSSVBUSU9OIiwidmVyc2lvbiI6IjEiLCJyZXF1ZXN0SW5mbyI6eyJhcHBBY2NvdW50VG9rZW4iOiIwMTk3NTU0Ni1hYTAyLTc4NzgtYTY2OS00MGIxMmJkMzk0YzkiLCJyZXF1ZXN0UmVmZXJlbmNlSWQiOiIwODMyNzAyNi01MzM2LTQ4MTYtYWEzOS1iN2U0MDhkNWQwYTYifSwiY3VycmVuY3kiOiJDWksiLCJ0YXhDb2RlIjoiQzAwMy0wMC0xIiwiZGVzY3JpcHRvcnMiOnsiZGlzcGxheU5hbWUiOiJHaWdhY2hhZCIsImRlc2NyaXB0aW9uIjoiQWNjZXNzIHRvIEdpZ2FjaGFkJ3MgZXhjbHVzaXZlIGNvbnRlbnQifSwicGVyaW9kIjoiUDFNIiwic3RvcmVmcm9udCI6IkNaRSIsIml0ZW1zIjpbeyJTS1UiOiJjcmVhdG9yX3N1YnNjcmlwdGlvbl8yMDAwMF8xbV8wdzAiLCJkaXNwbGF5TmFtZSI6IkNyZWF0b3IgU3Vic2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iOiJBY2Nlc3MgdG8gY3JlYXRvcidzIGV4Y2x1c2l2ZSBjb250ZW50IiwicHJpY2UiOjIwMDAwfV19", "bid": "app.tradeforge.tradeforge.staging", "nonce": "8fcc0e15-844b-4cce-bfa4-31f8f4fa3c89", "iat": 1752396360, "aud": "advanced-commerce-api", "iss": "4f338416-010e-40ae-8e30-88d034bd5f40" } This is the code I am using: import {AdvancedCommerceInAppSignatureCreator, Environment} from "@apple/app-store-server-library" import {readFileSync} from "fs" const issuerId = "<REDACTED>" const keyId = "<REDACTED>" const bundleId = "app.tradeforge.tradeforge.staging" const filePath = ".secret/SubscriptionKey_<KEY_ID>.p8" const encodedKey = readFileSync(filePath, "utf8") const environment = Environment.SANDBOX // TODO: Unused, is this correct? AdvancedCommerceInAppSignatureCreator does allow to pass environment. const signatureCreator = new AdvancedCommerceInAppSignatureCreator(encodedKey, keyId, issuerId, bundleId) const signature = signatureCreator.createSignature({ operation: "CREATE_SUBSCRIPTION", version: "1", requestInfo: { appAccountToken: "01975546-aa02-7878-a669-40b12bd394c9", requestReferenceId: "08327026-5336-4816-aa39-b7e408d5d0a6" }, currency: "CZK", taxCode: "C003-00-1", descriptors: { displayName: "Gigachad", description: "Access to Gigachad's exclusive content" }, period: "P1M", storefront: "CZE", items: [{ SKU: "creator_subscription_20000_1m_0w0", displayName: "Creator Subscription", description: "Access to creator's exclusive content", price: 20000 }] }) console.log(signature)
Topic: App & System Services SubTopic: StoreKit Tags:
Jul ’25
Reply to Unauthorized for Advanced Commerce API Purchase
Hello, is there any update, please? We're still facing the issue and it's starting to significantly affect our roadmap.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jul ’25
Reply to Unauthorized for Advanced Commerce API Purchase
Yes, the signature payload matches. This is the JWT And this is the decoded payload from the JWT: { "request": "eyJvcGVyYXRpb24iOiJDUkVBVEVfU1VCU0NSSVBUSU9OIiwidmVyc2lvbiI6IjEiLCJyZXF1ZXN0SW5mbyI6eyJhcHBBY2NvdW50VG9rZW4iOiIwMTk3NTU0Ni1hYTAyLTc4NzgtYTY2OS00MGIxMmJkMzk0YzkiLCJyZXF1ZXN0UmVmZXJlbmNlSWQiOiIwODMyNzAyNi01MzM2LTQ4MTYtYWEzOS1iN2U0MDhkNWQwYTYifSwiY3VycmVuY3kiOiJDWksiLCJ0YXhDb2RlIjoiQzAwMy0wMC0xIiwiZGVzY3JpcHRvcnMiOnsiZGlzcGxheU5hbWUiOiJHaWdhY2hhZCIsImRlc2NyaXB0aW9uIjoiQWNjZXNzIHRvIEdpZ2FjaGFkJ3MgZXhjbHVzaXZlIGNvbnRlbnQifSwicGVyaW9kIjoiUDFNIiwic3RvcmVmcm9udCI6IkNaRSIsIml0ZW1zIjpbeyJTS1UiOiJjcmVhdG9yX3N1YnNjcmlwdGlvbl8yMDAwMF8xbV8wdzAiLCJkaXNwbGF5TmFtZSI6IkNyZWF0b3IgU3Vic2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iOiJBY2Nlc3MgdG8gY3JlYXRvcidzIGV4Y2x1c2l2ZSBjb250ZW50IiwicHJpY2UiOjIwMDAwfV19", "bid": "app.tradeforge.tradeforge.staging", "nonce": "8fcc0e15-844b-4cce-bfa4-31f8f4fa3c89", "iat": 1752396360, "aud": "advanced-commerce-api", "iss": "4f338416-010e-40ae-8e30-88d034bd5f40" } This is the code I am using: import {AdvancedCommerceInAppSignatureCreator, Environment} from "@apple/app-store-server-library" import {readFileSync} from "fs" const issuerId = "<REDACTED>" const keyId = "<REDACTED>" const bundleId = "app.tradeforge.tradeforge.staging" const filePath = ".secret/SubscriptionKey_<KEY_ID>.p8" const encodedKey = readFileSync(filePath, "utf8") const environment = Environment.SANDBOX // TODO: Unused, is this correct? AdvancedCommerceInAppSignatureCreator does allow to pass environment. const signatureCreator = new AdvancedCommerceInAppSignatureCreator(encodedKey, keyId, issuerId, bundleId) const signature = signatureCreator.createSignature({ operation: "CREATE_SUBSCRIPTION", version: "1", requestInfo: { appAccountToken: "01975546-aa02-7878-a669-40b12bd394c9", requestReferenceId: "08327026-5336-4816-aa39-b7e408d5d0a6" }, currency: "CZK", taxCode: "C003-00-1", descriptors: { displayName: "Gigachad", description: "Access to Gigachad's exclusive content" }, period: "P1M", storefront: "CZE", items: [{ SKU: "creator_subscription_20000_1m_0w0", displayName: "Creator Subscription", description: "Access to creator's exclusive content", price: 20000 }] }) console.log(signature)
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jul ’25
Reply to Unauthorized for Advanced Commerce API Purchase
Submitted a Feedback Assistant request. FB18759909 (Receiving Unauthorized for Advanced Commerce API Purchase)
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jul ’25