# 添加路由规则

> 定义提供商路由规则以控制您为玩家服务的付款提供商以及顺序。

要激活付款提供商，您需要定义提供商路由规则。路由规则可用于控制向每个玩家提供的付款提供商。您可以按平台或国家/地区定向投放玩家，并定义提供商的显示顺序。还可以使用[推广百分比](#rollout-functionality)在全面推广之前逐步向玩家子集引入新的提供商。

> **Note:**
>
> 路由规则在运行时评估，因此无需客户端更新或新应用发布版本即可更改提供商路由。

在创建路由规则之前，必须首先[连接至少一个](./configure-payment-provider.md)配置了成功重定向 URL 的付款提供商。

> **Important:**
>
> 保存路由规则时，该规则会立即生效，并激活已配置的付款提供商。准备就绪之前，不要添加规则。

要在 Unity Dashboard（Unity 后台）中添加路由规则，请执行以下步骤：

1. 打开 **In App Purchases** > **Payment Providers**（付款提供商）。
2. 在 **Provider routing**（提供商路由）下，选择 **Add routing rule（添加路由规则**）。
3. 输入规则的名称。
4. 为规则选择一**个优先级**编号，用于定义规则应用于玩家的顺序。请参阅[规则优先级](#rule-priority)以了解更多信息。
5. 输入以下配置选项：
   \| **Configuration 选项** | **描述** |

   \| **平台属性** | 选择要将此规则应用于的每个平台。|
   \| **国家/地区属性** | 选择要应用此规则的每个国家/地区。|
   \| **Apply to webshops** | 如果希望规则应用于[网上商店](../webshop/_index)，请选择此选项。|
   \| **提供商顺序** | 如果您有多个连接的支付提供商，请将要作为主要提供商的支付提供商拖到列表顶部。选择 **Disabled** on a payment provider（付款提供商）以确保不会向符合此规则的任何玩家提供该提供商。|
   \| **Rollout** | 定义符合此规则的玩家中希望规则应用于的玩家的百分比。有关更多信息，请参阅 [Rollout 功能](#rollout-functionality)。|
6. 选择 **Save**（保存）以使规则激活。

## 规则优先级##rule-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 Store）完成购买取决于您，并受玩家所在地区的外部购买计划条款的约束。

对于网上商店购买，如果没有与玩家匹配的规则，Unity IAP 默认为正常失败，购买将被阻止。有关如何配置特定回退提供商的信息，请参阅[设置回退付款提供](../webshop/set-a-fallback-payment-provider)商。

## 重写代码中的路由##override-routing-in-code

默认情况下，路由决策是根据您在 Dashboard（后台）中配置的规则在服务器端做出的。无需客户端更改即可使路由正常工作。

如果您需要更多的控制，Unity IAP 提供了两个可选 API：

* `IPaymentProvidersExtendedService.GetEligiblePaymentProviders()`：返回当前玩家有资格使用的付款提供商列表（按优先级顺序（最高者优先））。空列表表示没有提供商符合资格，并且外部付款不可用。
* `IPaymentProvidersExtendedPurchaseService.SetPaymentProviderOverride(string)`：覆盖服务器端路由决策，并强制特定支付提供商进行后续购买。覆盖仍会考虑哪些提供商可供玩家使用。

## 后续步骤##next-steps

本页面是使用 IAP 设置直接到消费者 (D2C) 付款提供商的工作流程的一部分。要继续此工作流程，请选择以下选项之一：

[Integrate D2C payment providers](./workflow.md#configure-your-routing-rules): 返回到 Integration D2C payment providers with IAP workflow（将 D2C 支付提供商与 IAP 工作流程集成）页面。
[Fulfill purchases](./workflow.md#fulfill-purchases): 继续工作流程中的下一步以设置 D2C 支付提供商。
