# 服务器到服务器回调设置

> 在 app 中设置服务器到服务器回调以便在广告完成时接收通知，从而允许您通过后端服务器向用户授予奖励。

LevelPlay 基于奖励的广告单位支持服务器端事件，以通知您在广告成功完成事件后必须授予用户的奖励。

> **Note:**
>
> 您还可以使用客户端事件在广告完成事件成功后向用户授予奖励。

## 先决条件##prerequisites

确保已在代码中实现了[服务器到服务器](/grow/levelplay/platform/settings/event-handlers.md)回调处理程序。

您可以使用服务器到服务器回调来接收广告完成通知。如果要使用后端服务器管理应用程序数据，建议使用此方法。我们将在每个广告完成后发送回调，通知您的服务器您必须授予最终用户的奖励类型和金额。

## 启用服务器到服务器回调##enable-server-to-server-callbacks

1. 登录 Unity LevelPlay 帐户。
2. 在左侧导航菜单中，转到 **Apps** 部分。
3. 从应用程序列表中选择要为其启用服务器到服务器回调的应用程序旁边的操作按钮，然后选择 **Set S2S callback**。
4. 在 Create S2S reward callback 页面上，输入启用服务器到服务器回调所需的信息。
5. 在 **Callback URL** 字段中，构建 LevelPlay 的回调，以便在用户执行广告单元完成后向您发送。例如：`http://www.mysite.com/granting.php?userid=\\\[USER\\_ID]\\\&rewards=\\\[REWARDS]\\\&eventId=\\\[EVENT\\_ID)`
6. 可选：添加私有变量密钥。私有变量密钥是只有您和 LevelPlay 知道的字符串，可增加额外的保护层。
7. 在参数部分中，选择下拉菜单，然后选择要包含在回调中的可选参数。选择可选参数后，它们将自动显示在回调网址中。
8. 在 Callback test（回调测试）部分中，输入 User ID（用户 ID）和 Reward amount（奖励金额）以测试回调。您还可以填写可选字段（Auction ID、Ad Network、App Key、Item Name 和放置/位置名称），但测试回调时不需要这些字段。
   > **Note:**
   >
   > 要激活 S2S 回调，服务器必须接收回调并确认收据。
9. 选择 **Save（保存）**。
   > **Note:**
   >
   > 建议的最佳做法是在保存之前测试回调。

您的回调将立即激活。您可以在 **Apps 页面**上确认回调的状态。

## 强制参数##mandatory-parameters

以下列表详细说明了回调字符串中必须包含的强制参数：

* USER\_ID：应用程序用户的唯一标识符。系统使用此属性可知道在广告成功完成时奖励哪个用户。
* 奖励：奖励给用户的信用单位数。
* EVENT\_ID：已完成事件的唯一标识符，由 ironSource 生成，因此您可以验证尚未奖励该事件的用户。

## 可选参数##optional-parameters

以下列表详细介绍了可根据需要在内部使用的可选参数：

* \[AUCTION\_ID]：拍卖的唯一标识符。
* \[AD\_NETWORK]:指定提供程序的名称（例如：Vungle）。
* \[APP\_KEY]:在 LevelPlay 页面上看到的 app Key。
* \ITEM\_NAME：虚拟物品名称（如果奖励是虚拟物品而不是游戏货币）。
* \[PLACEMENT\_NAME]：放置/位置名称。

> **Note:**
>
> 还可以使用自定义参数。您无需为它们添加占位符；它们将以 **custom\_** 为前缀出现在回调网址中。

## 使用私有变量进行签名验证##signature-validation-with-private-key

您的签名代表以下 MD5：

```text
md5(\[TIMESTAMP\]\[EVENTID\]\[USER\_ID\]\[REWARDS\]\[PRIVATE\_KEY\]).
```

私有变量密钥是只有您和 ironSource 知道的字符串，而所有其他签名组件都是网址的一部分。添加私有变量密钥是为了增加安全性，因为它使签名更难再现。

* 每当生成佣金事件时，IronSource 服务器都会调用您的回调网址，并为您提供必要的信息以向相关用户充值。
  * 系统将针对每个委托定期调用此网址，直到收到状态为 200 (OK) 的有效 HTTP 响应，并在 HTTP 响应中的某个位置显示“**\[事件\_ID]:OK**”字符串。
  * 以下是典型响应的示例：`<status> dae8e6cf42b1357f8652ad6ecb5b24f1:OK</status>`
  * ironSource 管理重试和超时策略，因此通信暂时失败不会导致佣金事件丢失。
  * 必须在 400 毫秒内发送响应，否则，回调上将发生超时，从而初始化重试机制。
  * 超时将显示在“慢速回调队列”上，在该队列中，每个回调都可以在 20 秒内得到响应。
  * 在原始回调后的 24 小时内将发送 20 个退出，然后在接下来的 7 天内每天重试 1 次。
