# ルーティングルールの追加

> プロバイダー ルーティング ルールを定義して、プレイヤーに提供する支払いプロバイダーとその順序をコントロールします。

支払いプロバイダーをアクティベートするには、プロバイダーのルーティング ルールを定義する必要があります。ルーティングルールにより、各プレイヤーに提供する支払いプロバイダーをコントロールできます。プラットフォームまたは国ごとにプレイヤーをターゲットとし、プロバイダーの表示順を定義できます。[ロールアウトパーセンテージ](#rollout-functionality)を使用して、完全なロールアウトの前に新しいプロバイダーをプレイヤーのサブセットに徐々に導入することもできます。

> **Note:**
>
> ルーティング ルールはランタイムに評価されるため、クライアントの更新や新しいアプリケーション リリースの要件なしでプロバイダー ルーティングを変更できます。

ルーティングルールを作成する前に、成功リダイレクト URL が設定された[支払いプロバイダーを 1](./configure-payment-provider.md) つ以上接続する必要があります。

> **Important:**
>
> ルーティングルールを保存すると、そのルールは即座にアクティブになり、設定された支払いプロバイダーがアクティブになります。準備が整うまでルールを追加しないでください。

Unity Dashboard でルーティング ルールを追加するには、次の手順を実行します。

1. Open **In App Purchases (アプリケーション**購入)> **Payment Providers (支払い**プロバイダー)。
2. **プロバイダー ルーティング**で、**Add routing rule** を選択します。
3. ルールの名前を入力します。
4. ルールがプレイヤーに適用される順序を定義するルールの**優先度**番号を選択します。詳細については、[ルールの優先順位](#rule-priority) を参照してください。
5. 以下の設定オプションを入力します。
   \| **設定オプション** | **説明** |

   \| **プラットフォーム属性** | このルールを適用する各プラットフォームを選択します。 |
   \| **Country attributes** | このルールを適用する国を選択します。 |
   \| **Webshop に適用** | ルールを [Webshop](../webshop/_index) に適用するには、このオプションを選択します。 |
   \| **プロバイダー順** | 複数の支払いプロバイダーが接続している場合は、プライマリプロバイダーにする支払いプロバイダーをリストの一番上にドラッグします。支払いプロバイダーで**Disabled**を選択し、このルールに一致するプレイヤーにそのプロバイダーを提供しないようにします。 |
   \| **Rollout** | このルールに一致するプレイヤーのうち、ルールを適用するプレイヤーの割合を定義します。詳細については、[ロールアウト機能](#rollout-functionality)を参照してください。 |
6. **Save (保存**) を選択して、ルールをアクティブにします。

## ルールの優先順位##rule-priority

各ルールに優先順位番号を割り当てます。番号が小さいほど優先順位が高くなります。複数のルールがプレイヤーに一致する場合は、そのすべてのルールが適用されます。プレイヤーは、一致するすべてのルールのすべてのプロバイダーに対して適格です。コードでプロバイダーを明示的に指定しない場合、Priority (優先度) によって Unity Iap がデフォルトで選択するプロバイダーが決まります。優先順位が最も高いマッチングルールが優先されます。

### 明確な優先順位の使用##use-distinct-priorities

各ルールに個別の優先順位を割り当てることをお勧めします。優先順位を完全にコントロールできるため、同順位の動作に依存する必要がなく、優先順位を明確にすることでルーティングを予測できます。

## ロールアウト機能##rollout-functionality

ロールアウト設定を使用して、ルールの条件に一致するプレイヤーのうち、ルールが実際に適用されるプレイヤーの割合をコントロールします。割り当てはプレイヤーごとに決定論的です。つまり、同じプレイヤーがセッション全体で一貫して含まれる/除外されます。

ロールアウトパーセンテージの範囲外のプレイヤーは、ルールが一致しないものとして扱われます。その後、IAP は残りのルールを優先順位で評価して適用し、適用がない場合はデフォルトの[フォールバック動作](#fallbacks-if-no-rule-matches-a-player)を適用します。

> **Note:**
>
> ローンチ後にロールアウトパーセンテージを変更すると、その変更は、次にターゲットが再計算されたときにプレイヤーごとに効果になります。これは通常、アプリケーションの再起動起動時、またはゲームに特に設定したタイミングで発生します。

## プレイヤーに一致するルールがない場合のフォールバック##fallbacks-if-no-rule-matches-a-player

支払いプロバイダーは、独立したストアです。プレイヤーに一致するルールがないか、ルールに一致するが、設定されている支払いプロバイダーがいずれも利用できない場合、プレイヤーは外部支払いによる購入を完了できません。

プレイヤーが代わりにネイティブ (Apple App Store または Google Play ストア) での購入を完了できるかどうかは、プレイヤー次第であり、プレイヤーの地域の外部購入プログラムの規約に従います。

Webshop での購入の場合、プレイヤーに一致するルールがない場合、Unity Iap はデフォルトで正常な失敗となり、購入がブロックされます。特定のフォールバック プロバイダーを設定する方法については、「[フォールバック支払いプロバイダーの設定](../webshop/set-a-fallback-payment-provider)」を参照してください。

## コードでのオーバーライドルーティング##override-routing-in-code

デフォルトでは、ルーティングの決定はダッシュボードボードで設定したルールに基づいてサーバー側で行われます。ルーティングを機能させるためにクライアント側を変更する必要はありません。

さらにコントロールが必要な場合は、Unity Iap に 2 つの任意 API が用意されています。

* `IPaymentProvidersExtendedService.GetEligiblePaymentProviders()`: 現在のプレイヤーが使用できる支払いプロバイダーのリストを、優先順位 (高い順) で返します。リストが空の場合は、適格なプロバイダーがなく、外部支払いが使用できないことを意味します。
* `IPaymentProvidersExtendedPurchaseService.SetPaymentProviderOverride(string)`: サーバー側のルーティングの決定をオーバーライドし、後続の購入に対して特定の支払いプロバイダーを強制します。オーバーライドでは、プレイヤーが使用可能なプロバイダーが引き続き尊重されます。

## 次のステップ##next-steps

このページは、IAPによるD2C(ダイレクト ツー コンシューマー)支払いプロバイダーを設定するワークフローの一部です。このワークフローを続行するには、以下のオプションのいずれかを選択します。

[Integrate D2C payment providers](./workflow.md#configure-your-routing-rules): Integrate D2C payment provider with IAP ワークフロー (D2C 支払いプロバイダーと IAP ワークフローの統合) ページに戻ります。
[Fulfill purchases](./workflow.md#fulfill-purchases): ワークフローの次のステップに進み、D2C支払いプロバイダーを設定します。
