AppleおよびGoogleの外部購入要件への準拠
AppleとGoogleでの外部購入に関するコンプライアンス責任と、それらを満たすためにUnityが提供するSDKとWebhookツールについて説明します。
読み終わるまでの所要時間 4 分最終更新 1ヶ月前
外部購入では、Apple や Google のアプリケーション内課金ではなく、独自のウェブアウト (支払いプロバイダーなど) を通じてデジタルコンテンツを販売します。AppleとGoogleは、一部の地域でのみ、また外部購入プログラム(Apple)や外部提供プログラム(google play)など、独自のプログラムルールの下でのみ、これを許可しています。適格性、手数料、開示、トランザクション レポートは、プラットフォーム、地域、アプリケーションによって異なります。地域によっては、これらの購入要件がほとんど必要ない場合もあります。
独自のコンプライアンスフローのビルドをヘルプするために、Unity は SDK フックと Webhook データを提供します。このページでは、責任の分担、コンプライアンス ステップのビルド順序モデル、実行できる具体的なアクションについて説明します。
このページは、D2C(Integrate Direct-to-コンシューマー)支払いプロバイダー ワークフローの一部です。ここで説明するコンプライアンス処理を追加する前に、支払いプロバイダーと購入フローを設定します。
責任分担
Unity は技術的な支援のみを提供します。支払いプロバイダーは、支払い処理、税務、紛争に関する記録商として機能しますが、AppleやGoogleプラットフォームのレポートはハンドルしません。プラットフォーム コンプライアンスはお客様の責任であり、Unity がお客様をプラットフォーム プログラムに登録することはありません。
Unityの技術的な促進
支払いプロバイダーによる購入が完了すると、Unity がユーザーに代わってチェックアウト URL を開きます。デフォルトでは、デバイスの外部ブラウザーで開きます。アプリケーション内プレゼンテーション () を選択すると、Unity は代わりにそれをアプリケーション ブラウザーで開きます。Unity が注文を処理する仕組みの詳細については、Unity が注文を作成し開く方法を参照してください。
CheckoutPresentationMode.WebViewUnity は Apple の外部購入通知や Google の外部リンク API を呼び出しません。また、Unity がユーザーの適格性を判断することはありません。これらのプラットフォーム API は、役割の説明に従って自分で呼び出します。
お客様の責任
Unity は技術的な支援のみを提供します。以下のタスクを担当します。
- アプリケーションと地域が各プラットフォームの外部購入プログラムの対象となるかどうかを決定します。
- AppleのとGoogleの
ExternalPurchaseClientにより、購入の開始前に独自の適格性チェックと開示チェックを実行できます。ExternalBillingProgramClient - AppleまたはGoogleが必要とするトランザクション トークンを、各プラットフォーム独自のAPIでAcquireおよびレポートします。
Unity が注文を作成および開始する方法
通常、支払いプロバイダーの購入は という 1 回の呼び出しで開始します。 はリモートカタログでオファーを示します。購入には 2 つの基本的なステップがあり、最初のステップは自分で実行できます。
PurchaseProduct(catalogListingId)catalogListingId- はオーダーを作成し、チェックアウト URL をオープンせずに返します。
GenerateURL(catalogListingId, tokens) - によってチェックアウトが開きます。同じリストについてすでに
PurchaseProduct(catalogListingId)を呼び出している場合は、その順序が再利用されます。そうでない場合は、トークンなしで注文自体を作成し、それを開きます。GenerateURL
GenerateURLPurchaseProductコンプライアンスフローに必要なものを決定する
残りのセクションは独立しています。以下の表に、アプリケーションとプラットフォームに適用する手順を示します。
必要な場合は | これを行います。 | セクション |
|---|---|---|
| アプリケーション内での独自の適格性ルールの適用 | 各購入の前に実行されるコンプライアンスコールバックの登録 | コンプライアンスチェックで購入をゲートする |
| 購入が開く前にチェックアウト URL を表示または開示する | | チェックアウト URL を表示または描画する |
| AppleまたはGoogleに外部トランザクションをレポート | | トランザクショントークンのアタッチ、設定、添付、レポート |
コンプライアンスチェックによる購入のゲート
このステップは任意です。アプリケーション内で独自の適格性ルールを適用する場合にのみ追加します。
購入に進む前に、コンプライアンスコールコールバックを登録して独自の適格性ルールを適用します。 (または ) を呼び出すと、Unity はまずコールバックを実行し、購入するを公開するを渡します。コールバックがを返す (またはスローする) と、購入はで失敗し、注文は作成されません。
PurchaseProductPurchaseCartPaymentProviderComplianceContextfalsePurchasingUnavailable-
プレイヤーがコンプライアンス チェックに合格したかどうかを示すを返す関数を定義します。
Task<bool>Task<bool> RunComplianceCheckAsync(PaymentProviderComplianceContext context){ const ブーリアン allow = true; return Task.FromResult(allow);} -
Payment Providers 購入サービスに機能を登録し、購入が開始されたときに Unity が機能を呼び出すようにします。m_PurchasingService.PaymentProviders?.SetComplianceCheck(RunComplianceCheckAsync);
-
チェック内のプラットフォーム クライアントを使用して、各プラットフォームが準拠するために必要な API を呼び出します。
- Apple: を使用してAppleの外部購入APIにアクセスします。
ExternalPurchaseClient - Google: を使用して Google の外部課金 API にアクセスします。
ExternalBillingProgramClient
- Apple:
チェックアウト URL を表示または描画する
プラットフォームによっては、プレイヤーが先に進む前に外部購入 URL をディスプレイまたは開示する必要がある場合や、独自のウェブビューでチェックアウトを描画する場合があります。いずれの場合も、 を呼び出して URL を開かずに取得します。
GenerateURLstring url = await m_PurchasingService.PaymentProviders.GenerateURL(catalogListingId);// Display or disclose the URL, then call PurchaseProduct to open the checkout.
その後、は複製を作成する代わりに、すでに作成済みの注文を再利用します。
PurchaseProduct(catalogListingId)GenerateURLトランザクショントークンのアタッチ、設定、添付とレポート
このステップは、Apple または Google が外部トランザクションのレポートを要求している場合に必要です(これはプログラムと地域によって異なります)。
Apple と Google では、各外部トランザクションをサーバ API を通じてレポートする必要があります。プラットプラットフォームから不透明な透明なトランザクショントークンを取得し、Unity の注文にアタッチ、設定、添付し、ウェブフックで受け取り、レポートを提出できます。トークンは自分で生成します。Appleトークンはから取得され、Googleトークンはから取得されます。
ExternalPurchaseClientExternalBillingProgramClientPurchaseProductGenerateURL(catalogListingId, tokens)PurchaseProductawait m_PurchasingService.PaymentProviders.GenerateURL(catalogListingId, tokenList);m_PurchasingService.PurchaseProduct(catalogListingId);
Unity はトークンを検査や検証を行わずに順序とともに保存し、Webhook の順序でトークンを表示します。Order API 反応では返されません。
Webhook ペイロードのトークン
注文 Webhook には、 の下に 配列が含まれます。各エントリーには、トークンと、それがターゲットとするストアが含まれます。
dataexternalTransactionTokens{ "eventType": "order.paid", "data": { "id": "...", "playerId": "...", "status": "paid", "externalTransactionTokens": [ { "store": "apple", "token": "opaque-apple-transaction-token", "type": "acquisition" }, { "store": "google", "token": "opaque-google-transaction-token" } ] }}
これらのトークンを使用して、各プログラムで必要に応じてAppleの外部Purchase Server APIまたはGoogleの APIを通じてトランザクションを自己レポートします。
externalTransactions次のステップ
このページは、IAPでD2C支払いプロバイダーを設定するワークフローの一部です。このワークフローを続行するには、以下のオプションのいずれかを選択します。