記事


あなたのアプリから高度な商業 API 要求を送信する


あなたのサーバ上で生成した JSON Web 署名 (JWS) を使用して承認した Advanced Commerce API (高度な商業 API) 要求をあなたのアプリから送信します。





概観


あなたのアプリ内で StoreKit を介して特定の Advanced Commerce API 要求を行うことができますが、その他の要求はあなたのサーバから直接行うことができます。どちらの場合も、あなたのサーバ上で生成した署名を使用して呼び出しを承認します。


以下の Advanced Commerce API 要求は、StoreKit API を使用してあなたのアプリで利用できます。


  • OneTimeChargeCreateRequest

  • SubscriptionCreateRequest

  • SubscriptionModifyInAppRequest

  • SubscriptionReactivateInAppRequest

  • あなたのアプリから Advanced Commerce 要求を行うには、以下の手順に従います。


    1. 呼び出す API に応じて要求データを収集します。あなたのサーバ上で、要求データを UTF-8 JSON 文字列に結合し、その文字列を base64 にコード化して、base64 にコード化された要求データ を作成します。

    2. あなたのサーバで、JWS ペイロードに base64 でコード化された要求データを含む JWS コンパクトシリアルを作成します (Advanced Commerce API アプリ内要求にカスタムクレームを含める を参照)。詳細については、App Store 要求に署名するための JWS の生成 を参照してください。

    3. JWS を JSON オブジェクトに包み込み、それを Data バッファに変換して、Advanced Commerce 要求データオブジェクト advancedCommerceRequestData を作成します。

    4. あなたのアプリでは、製品購入呼び出しで購入オプションの値として advancedCommerceRequestData を使用します。

    サーバベースの呼び出しの承認の詳細については、あなたのサーバからの API 要求の承認 (Authorizing API requests from your server) を参照してください。



    Base64 でコード化された要求データを作成


    Advanced Commerce 要求データを UTF-8 JSON 文字列に配置し、要求を base64 でコード化します。


    たとえば、以下の JSON は、1 回限りの課金製品の購入に対する OneTimeChargeCreateRequest を表します。


    {
        "operation": "CREATE_ONE_TIME_CHARGE",
        "version": "1",
        "requestInfo": {
            "appAccountToken": "3152947d-8f63-41c2-9a91-e92e45f145e9",
            "requestReferenceId": "f55df048-4cd8-4261-b404-b6f813ff70e5"
        },
        "currency": "USD",
        "taxCode": "C003-00-2",
        "storefront": "USA",
        "item": {
            "SKU": "BOOK_SHERLOCK_HOMLES",
            "displayName": "Sherlock Holmes",
            "description": "The Sherlock Holmes, 5th Edition",
            "price": 4990
        }
    }

    例の JSON 要求を base64 でコード化した結果は以下のようになります。


    ewogICJvcGVyYXRpb24iOiAiQ1JFQVRFX09ORV9USU1FX0NIQVJHRSIsCiAgInZlcnNpb24iOiAiMSIsCiAgIn JlcXVlc3RJbmZvIjogewogICAgImFwcEFjY291bnRUb2tlbiI6ICIzMTUyOTQ3ZC04ZjYzLTQxYzItOWE5MS1l OTJlNDVmMTQ1ZTkiLAogICAgInJlcXVlc3RSZWZlcmVuY2VJZCI6ICJmNTVkZjA0OC00Y2Q4LTQyNjEtYjQw NC1iNmY4MTNmZjcwZTUiCiAgfSwKICAiY3VycmVuY3kiOiAiVVNEIiwKICAidGF4Q29kZSI6ICJDMDAzLTAw LTIiLAogICJzdG9yZWZyb250IjogIlVTQSIsCiAgIml0ZW0iOiB7CiAgICAiU0tVIjogIkJPT0tfU0hFUkx PQ0tfSE9NTEVTIiwKICAgICJkaXNwbGF5TmFtZSI6ICJTaGVybG9jayBIb2xtZXMiLAogICAgImRlc2NyaXB0a W9uIjogIlRoZSBTaGVybG9jayBIb2xtZXMsIDV0aCBFZGl0aW9uIiwKICAgICJwcmljZSI6IDQ5OTAKICB9Cn0K

    この値は、あなた独自のデータを使用して計算され、base64 でコード化されたあなたの要求データ です。



    あなたの要求データを使用して JWS を生成


    App Store 要求に署名するための JWS の生成 の Advanced Commerce API のアプリ内要求の署名手順に従ってください。Advanced Commerce API には、カスタムクレーム、request が必要です。前の手順の base64 でコード化された要求データを、JWS ペイロードの request クレームの値として提供して下さい。


    指示に従った結果は、JWS コンパクト シリアル です。



    JWS を包み込んでデータに変換


    JWS を包み込んで、token キーを含む signatureInfo JSON 文字列を作成します。この手順は、あなたのサーバまたはあなたのアプリで実行できます。以下に示すように、signatureInfo JSON 文字列を作成します。


    {
        "signatureInfo": {
            "token": "<your JWS compact serialization>"
        }
    }
    

    token キーの値を JWS コンパクト シリアル に設定します。


    次に、以下に示すように、signatureInfo JSON 文字列を Data バッファに変換します。


    1. let jsonString ="<# your signatureInfo UTF-8 JSON string>"
    2. let advancedCommerceRequestData = Data(jsonString.utf8)

    結果は、コードスニペットで advancedCommerceRequestData と呼ばれる Advanced Commerce 要求データオブジェクトです。


    advancedCommerceRequestData をあなたのアプリに安全に送信します。



    署名された要求データを使用して StoreKit 購入 API を呼び出す


    アプリで Advanced Commerce 要求を完了するには、StoreKit 購入メソッドを呼び出し、署名された要求を Advanced Commerce 要求データ形式で、購入オプションとして提供します。


    以下のコード例で、購入要求を設定します。


    1. let purchaseResult = try await product.purchase(
    2. options: [
    3. Product.PurchaseOption.custom(
    4. key: “advancedCommerceData”,
    5. value: advancedCommerceRequestData
    6. )
    7. ]
    8. )

    この例では、以下のようになります:


  • すべての Advanced Commerce アプリ内要求にカスタム キー "advancedCommerceData" を使用します。カスタム購入オプションの詳細については、custom(key:value:) を参照してください。

  • value 属性には、JWS コンパクトシリアル を使用して作成した Advanced Commerce 要求データを提供します

  • 製品購入メソッドの詳細については、purchase(options:) を参照してください。




  • 以下も見よ


    高度な商業 API 操作


    struct AdvancedCommerceProduct

    Advanced Commerce API で使用するために App Store Connect で汎用 SKU として構成された製品。

      Beta  


    App Store の要求に署名するための JWS の生成

    あなたのアプリ内の API 要求を承認するために、あなたのサーバ上に署名済みの JSON Web 署名 (JWS) 文字列を作成します。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ