XCode 16.2 日本語化計画
あなたのアプリ内の API 要求を承認するために、あなたのサーバ上に署名済みの JSON Web 署名 (JWS) 文字列を作成します。
JWS は、情報を安全に送信する方法を定義するオープンスタンダード (RFC 7515) です。App Store 機能に固有の情報を使用して、JWS ヘッダとペイロードを作成して下さい。App Store Connect からダウンロードしたプライベート API キーを使用して、あなたのサーバ上で JWS に署名して下さい。
以下の App Store 機能では、StoreKit での呼び出しを承認するために JWS コンパクトシリアルが必要です:
JWS を生成するときに署名するデータは、JSON Web Token (JWT) です。JWT には、使用している機能に固有のクレームを含む、claims と呼ばれる名前と値のペアが含まれています。あなたのサーバは JWS コンパクトシリアル をあなたのアプリに返します。あなたのアプリは、関連する StoreKit API 呼び出しで JWS を使用します。
始めるには、App Store Connect からのキー ID と発行者 ID が必要です。次に、署名済み JWS を生成するために、あなたのサーバ上で以下の手順を実行します:
まず、JWS ヘッダのキー ID と JWS ペイロードの発行者 ID が必要です。これらの値を取得するには、App Store Connect にサインインしてください。
キー ID を取得するには:
API キーが複数ある場合は、JWS の署名に使用する秘密キーのキー ID をコピーします。キーの作成方法については、API 要求を承認するため API キーの作成 を参照してください。
発行者 ID を取得するには:
App Store の機能はすべて同じ JWS のヘッダを使用します。
App Store と通信するための JWS を作成するには、ヘッダで以下のフィールドと値を使用します。
ヘッダフィールド | 値 |
alg - Encryption Algorithm | ES256 ES256 暗号を使用して JWS に署名する必要があります。 |
kid - Key ID | App Store Connect からの秘密鍵 ID (例: 2X9R4HXF34) |
typ - Token Type | JWT |
JWS ヘッダの例を以下に示します。
{ "alg": "ES256", "kid": "2X9R4HXF34", "typ": "JWT" }
JWS ペイロードには、発行者 ID や発行時刻など、App Store に固有の基本クレームが含まれています。また、App Store 機能に固有のカスタムクレームも含まれます。以下の表に基本クレームを示します。次のセクションでは、JWS ペイロードにもあなたが含める機能固有のクレームを示します。
JWS ペイロードには、以下の基本クレームを含めます。
ペイロード フィールド | 値 |
iss - 発行者 | App Store Connect のキーページにあるあなたの発行者 ID(例:"57246542-96fe-1a63-e053-0824d011072a") |
iat - 発行時 | トークンを発行した UNIX 時間 (秒単位)。App Store サーバはこれを使用して有効期限を計算します (例: 1623085200)。 |
aud - 聴取者 | 使用している機能によって異なる値 (下の表を参照) |
bid - バンドル ID | アプリのバンドル ID (例: "com.example.testbundleid") |
nonce - Nonce | この要求を識別する 1 回限りの UUID (例: "368f3888-dcd8-11ef-b3c8-325096b39f47") |
使用している機能に合わせて aud 値を選択します。
機能 | aud 値 |
高度な商取引 API アプリ内要求 | “advanced-commerce-api" |
販売促進提供署名 | “promotional-offer" |
お試し提供の資格 | “introductory-offer-eligibility" |
以下は、機能固有のフィールドのない基本ペイロードの例です。
{ "iss": "57246542-96fe-1a63e053-0824d011072a", "iat": 1741043663, "aud": "promotional-offer", "bid": "com.example.testbundleid", "nonce": "6584bedf-2ed0-4c01-93ed-c0c64a1670cc" }
JWS ペイロードには機能固有のカスタムクレームも必ず含めてください。
Advanced Commerce アプリ内要求のカスタムクレームの場合は、以下の値を使用して下さい。
ペイロードフィールド | 値 |
request | Base64 でコード化された要求データ |
Base64 でコード化された要求データの生成の詳細については、Base64 でコード化された要求データを作成 を参照してください。
Advanced Commerce API アプリ内要求のペイロードの例を以下に示します。
{ "iss": "57246542-96fe-1a63e053-0824d011072a", "iat": 1741043663, "aud": "advanced-commerce-api", "bid": "com.example.testbundleid", "nonce": "df2b8374-95a1-425b-a6a5-77a4d7648333", "request": "<base64-encoded request data>" }
StoreKit で Advanced Commerce API 要求を行う方法の詳細については、あなたのアプリから高度な商業 API 要求を送信する を参照してください。
販売促進提供の署名カスタムクレームの場合は、以下の値を使用して下さい。
ペイロードフィールド | 値 |
productId | 製品の一意の ID (詳細については、id を参照してください) |
offer Identifier | App Store Connect で設定した販売促進提供 ID |
transactionId | 顧客に属するすべての取引の一意の ID。あなたのアプリ内でアプリ内購入を行っていない顧客に対しても、顧客の appTransactionID を使用できます。このフィールドはオプションですが、推奨されます。 |
販売促進提供署名のペイロードの例を以下に示します。
{ "iss": "57246542-96fe-1a63e053-0824d011072a", "iat": 1741043663, "aud": "promotional-offer", "bid": "com.example.testbundleid", "nonce": "368f3088-dcd5-11ef-b3c8-325096b39f46", "productId": "com.example.product", "offerIdentifier": "com.example.product.offer", "transactionId": "1000011859217" }
紹介特典の適格性に関するカスタムクレームの場合は、以下の値を使用します。
ペイロードフィールド | 値 |
productId | 製品の一意の ID (詳細については、id を参照してください) |
allow Introductory Offer | 顧客が紹介特典の対象かどうかを決定するブール値 (true または false) |
transactionId | 顧客に属するすべての取引の一意の ID。あなたのアプリ内でアプリ内購入を行っていない顧客に対しても、顧客の appTransactionID を使用できます。 |
お試し提供の資格に関するペイロードの例を以下に示します。
{ "iss": "57246542-96fe-1a63e053-0824d011072a", "iat": 1741043663, "aud": "introductory-offer-eligibility", "bid": "com.example.testbundleid", "nonce": "cfb43594-4f92-4fe2-8b06-d947a848adaa", "productId": "com.example.product", "allowIntroductoryOffer": false, "transactionId": "1000011859217" }
購入オプションでお試し提供の適格性の署名された値を提供する方法の詳細については、Product.PurchaseOption を参照してください。
あなたのサーバ上で、ヘッダで指定したキー ID に関連した秘密キーを使用して、ES256 暗号を使用して署名を生成します。署名のプロセスでは、JWS ヘッダと JWS ペイロードが 1 つの署名済み文字列に結合されます。
JWT トークンの作成と署名には、オンラインで利用できるさまざまなオープンソースライブラリがあります。詳細については、JWT.io を参照してください。JWS を作成するには、App Store Server Library の使用を検討してください。詳細については、App Store サーバー ライブラリを使用して実装を簡素化する を参照してください。
署名した後は、JWS コンパクトシリアル化形式の文字列が作成されます。その文字列をアプリに送信して下さい。
struct AdvancedCommerceProduct
Advanced Commerce API で使用するために App Store Connect で汎用 SKU として構成された製品。
  Beta  
あなたのサーバ上で生成した JSON Web 署名 (JWS) を使用して承認した Advanced Commerce API (高度な商業 API) 要求をあなたのアプリから送信します。