# 对网上商店进行故障排除

> 解决创建、主题化、发布和集成 Unity 网上商店的常见问题。

本页面收集了管理员和游戏开发者在使用 Unity Webshop 时遇到的最常见问题（按症状分组）。每个条目都列出了最可能的原因以及修复此问题的后台或代码更改。

## 创建网上商店##creating-webshops

### 已拒绝 Slug，因为已在使用##slug-rejected-as-already-in-use

#### 原因##cause

蛞蝓在工作室中是唯一的。组织中的另一个网上商店已经使用该 slug。

#### 解决方案##resolution

选择其他插件，或者如果您打算更改 URL 的用途，请先更改现有网上商店的插件。有关完整的 slug 规则，请参阅 [Webshop limits 参考](./limits.md)。

### Studio 名称在创建期间被拒绝##studio-name-rejected-during-create

#### 原因##cause

Studio 名称在整个 Unity 中具有全局唯一性。另一个组织已声称拥有该名称。对话框显示以下内联错误消息：

```text
Studio 名称已采用。如果您拥有此商标，请联系 trademarks@unity3d.com 进行索赔。
```

#### 解决方案##resolution

选择其他名称。组织之间没有自动转账流程。如果您拥有所取名称的注册商标，请发送电子邮件至 `trademarks@unity3d.com` 请求释放该名称；团队会审查商标声明并在适当时释放该名称。如果要重命名已拥有的现有工作室，请从 **Organization Settings（组织设置**）而不是从 Create webshop（创建网上商店）对话框中进行重命名。

### 在 Create webshop 对话框中禁用 Studio 字段##studio-field-is-disabled-in-the-create-webshop-dialog

#### 原因##cause

您的组织已经至少有一个网上商店，因此会设置并重用工作室名称。Create 对话框仅在组织中尚不存在任何网上商店时才接受新的工作室名称。

#### 解决方案##resolution

要重命名工作室，请关闭 Create 对话框，导航到 **Unity Ads Monetization** > **Settings** > **Organization**，然后编辑 **Studio name** 字段。重命名会运行相同的唯一性检查并更改组织中每个网上商店的 URL，因此会相应更新外部链接。

> **Note:**
>
> 如果您使用的是旧版 Unity Dashboard，请打开 Account 菜单并选择 **Manage organization**。

### 无法为同一项目创建第二个网上商店##cannot-create-a-second-webshop-for-the-same-project

#### 原因##cause

每个 Unity Cloud 项目只能有一个网上商店。

#### 解决方案##resolution

编辑现有网上商店或为第二个商店创建新的 Unity Cloud 项目。

## 发布##publishing

### Publish 按钮缺失或禁用##publish-button-is-missing-or-disabled

#### 原因##cause

您正在编辑非生产环境。只有生产环境才能发布；非生产环境仅限草案，并显示 **Save draft** 以代替 **Publish**。

#### 解决方案##resolution

将 **Edit** 视图顶部的环境选择器切换到生产并从那里发布，或者在非生产环境的 **Customize 主题**部分使用 **Apply to production** 将草案复制到生产中，然后切换到生产并发布。

有关发布模型，请参阅[网上商店简介](./introduction-to-webshops.md)。

### Shop URL 返回未找到的响应##shop-url-returns-a-not-found-response

#### 原因##cause

可能从未发布过该 Webshop、未发布过该 Webshop、URL 中的工作室名称错误或 slug 错误。

#### 解决方案##resolution

确认 Studio 和 slug 与 Dashboard 匹配。然后检查生产环境的发布状态。如果商店未发布，请从生产环境中发布。如果最近重命名了工作室，则旧 URL 不再有效，请使用 Dashboard（后台）中显示的新 URL。

### Live Store 在发布后仍然显示旧品牌##live-shop-still-shows-old-branding-after-publishing

#### 原因##cause

内容交付网络已缓存先前的版本，或者在传播完成之前，后台报告成功。

#### 解决方案##resolution

请稍等片刻，然后重试。如果 Live Shop 在几分钟后仍然显示旧版本，请在 Dashboard（后台）中确认发布操作成功完成（**Webshop** 列表中的行在 **View logs（查看日志**）下显示最近的发布时间戳），然后重试。

## 品牌和媒体##branding-and-media

### 已拒绝品牌上传##branding-upload-rejected

#### 原因##cause

上传超过文件大小限制或不符合接受的格式。

#### 解决方案##resolution

在 [Webshop limits reference](./limits.md) 中的限制范围内重新导出资源并重试。源上传可以是 PNG、JPEG 或 WebP；服务器会转换为无损 WebP 进行交付。

### 英雄横幅看起来在直播商店上被裁剪##hero-banner-looks-cropped-on-the-live-shop

#### 原因##cause

上传的源的宽高比与渲染的横幅不同。英雄横幅在服务器端缩放和裁剪为 1920 × 384 px，因此任何更宽或更高的横幅都会裁剪以适应。

#### 解决方案##resolution

以渲染宽高比 (32:10) 或更高分辨率重新上传，具有相同宽高比。请参阅[网上商店限制参考](./limits.md)。

## 主题##theming

### AI 主题生成失败##ai-theme-generation-failed

#### 原因##cause

Dashboard 无法访问应用商店 URL，搜刮未返回任何可用资源，或者生成步骤失败。

#### 解决方案##resolution

确认应用商店 URL 可公开访问。重试生成 — 大多数瞬态故障会在下一次尝试时解决。如果生成仍然失败，请在 **Customize theme** 部分中手动编辑主题。

有关生成过程，请参阅[使用 AI 生成网上](./generate-a-webshop-theme-with-ai.md)商店主题。

### 在非生产环境中生成的主题不是实时主题##theme-generated-in-a-non-production-environment-isn't-live

#### 原因##cause

非生产环境无法自行发布。保存在非生产环境中的主题仅存在于该环境的草案中。

#### 解决方案##resolution

在 **Customize theme** 部分中选择 **Apply to production** 可将主题复制到生产的草案中。然后将环境选择器切换到生产模式，然后选择 **Publish**。

## 目录和付款##catalog-and-payments

### 商店渲染没有商品卡##shop-renders-without-product-cards

#### 原因##cause

父项目的 IAP 目录为空或没有已发布的商品。当 **Mock 目录**关闭且未连接真实目录时，**Preview** 面板也会渲染为空。

#### 解决方案##resolution

在 Dashboard（后台）的 IAP 部分中，确认项目目录中至少有一个商品。请参阅[在 Editor 中创建目录](/iap/create-catalog-in-editor.md)。如果只想预览主题而不连接真实目录，请在 Catalog & payment provider 部分中打开 **Mock catalog** 开关。

### 模拟目录物品会显示在玩家的商店中##mock-catalog-items-appear-in-the-player's-shop

#### 原因##cause

这是不可能的 — 模拟商品仅在 Dashboard 的 **Preview** 面板中渲染。如果玩家报告看到他们，他们看到的是 Dashboard 预览，而不是公共 URL。

#### 解决方案##resolution

确认玩家正在打开公共`shop.unity.com/{studio}/game/{slug}` URL，而不是开发者预览 URL。

### Dev 预览中的测试购买收取了真实卡的费用##a-test-purchase-in-the-dev-preview-charged-a-real-card

#### 原因##cause

开发预览 URL 根据真实目录和真实 IAP 付款提供商渲染草案。在 Webshop 层没有沙盒边界，测试模式由 IAP 支付提供商控制。

#### 解决方案##resolution

使用付款提供商的沙盒帐户或测试卡进行端到端购买测试。请参阅 [Catalog and payments in webshops](./catalog-and-payments.md) 了解预览与测试行为，并参阅 [Payment providers](/iap/payment-providers.md) 中的相关提供商文档了解沙盒设置。

### 商品价格与游戏不匹配##product-prices-don't-match-the-game

#### 原因##cause

打开商店时不会传递货币或区域设置参数，因此商店会回退到浏览器区域设置和默认货币。

#### 解决方案##resolution

从游戏中开店时将`locale`和`currency`作为 URL 参数传递。请参阅将[网上商店集成到 Unity 游戏](./integrate-into-game.md)中。

## 深层链接和返回流程##deep-links-and-the-return-flow

### 返回游戏按钮不会出现在成功对话框中##return-to-game-button-doesn't-appear-on-the-success-dialog

#### 原因##cause

未满足以下先决条件之一：会话是直接打开的（不是通过游戏的深度链接打开的）、玩家在桌面端，或者未配置返回深度链接。

#### 解决方案##resolution

确认玩家从游戏中的深层链接开了店铺（不是通过输入 URL），并且玩家在移动设备上。然后，检查 Dashboard（后台）的 **Catalog & payment provider**（目录和付款提供程序）部分中是否设置了 **Deeplink URL**（深度链接 URL）。有关全套先决条件，请参阅[深度链接和返回流程](./deep-links.md#post-purchase-return-to-the-game)。

### 来自共享链接的玩家会看到登录页面而不是商店##players-from-a-shared-link-see-a-landing-page-instead-of-the-shop

#### 原因##cause

这是预料之中的。当玩家到达时，商店会渲染一个未经身份验证的着陆页面，但没有身份验证上下文，这种情况发生在直接在浏览器中打开的任何 URL，而不是通过游戏的深层链接打开的任何 URL。登录页面显示一个 **Connect to game** 按钮，该按钮使用配置的深层链接方案反向启动游戏。

#### 解决方案##resolution

如果**连接到游戏**有效，则无需进行修复；往返过程会验证玩家身份并将玩家登陆商店。如果按钮显示一条消息，告诉玩家从游戏中启动商店，而不是启动游戏，则不会配置返回深层链接。在 **Edit** 视图的 **Catalog & payment provider** 部分中设置 **Deeplink URL**。有关完整流程，请参阅[未验证登录页面](./deep-links.md#handle-the-unauthenticated-landing-page)。

### Connect to game 打开游戏，但商店在重新进入后仍然显示登录页面##connect-to-game-opens-the-game-but-the-shop-still-shows-the-landing-page-after-re-entry

#### 原因##cause

游戏收到了入站`{scheme}://`深层链接，但没有使用身份验证参数重新打开商店。`Application.deepLinkActivated`处理程序可能忽略链接（没有 `status` 参数）或在调用 `OpenShop` 之前遇到错误。

#### 解决方案##resolution

在缺少 `status` 时确认处理程序分发，并使用当前 `sessionToken`、`projectId` 和 `environment` 参数调用 `OpenShop` 方法。请参阅 [Integrate a webshop into a Unity game](./integrate-into-game.md#handle-inbound-deep-links) 中的分发逻辑。

### 玩家点击 返回游戏，但游戏不会重新打开##player-taps-return-to-game-but-the-game-doesn't-reopen

#### 原因##cause

深层链接方案未在设备上注册，或者 Dashboard 配置的方案与游戏监听的方案不匹配。

#### 解决方案##resolution

确认在 Android 清单或 iOS `Info.plist`中声明了深层链接方案，并且 Dashboard 的方案使用相同的字符串。更改清单后重新安装游戏，以便操作系统选择新方案。

有关集成代码，请参阅将[网上商店集成到 Unity 游戏](./integrate-into-game.md#handle-inbound-deep-links)中。

### 游戏打开但未看到购买结果##game-opens-but-doesn't-see-the-purchase-result

#### 原因##cause

`Application.deepLinkActivated` 处理程序未解析 `status` 查询参数，或者该处理程序订阅得太晚而无法进行冷启动。

#### 解决方案##resolution

确认处理程序读取了 `status` 查询参数（商店发送的唯一值是 `success`），并在启动时处理`Application.absoluteURL`以处理冷启动案例。请参阅将[网上商店集成到 Unity 游戏](./integrate-into-game.md#handle-inbound-deep-links)中。

### 在 Unity Editor 中进行测试时，返回深层链接不执行任何操作##return-deep-link-does-nothing-when-testing-in-the-unity-editor

#### 原因##cause

自定义 URL 方案深度链接由操作系统传递给已安装的应用程序。Unity Editor 不是注册的处理程序，因此从浏览器打开的链接永远不会进入运行模式。WebGL 构建也不使用自定义方案。

#### 解决方案##resolution

针对构建的播放器测试返回流程：设备构建（iOS 或 Android）或独立构建，并在 **Player > Other Settings > Supported URL schemes** 中注册了方案。请参阅[处理入站深度链](./integrate-into-game.md#handle-inbound-deep-links)接。

### Studio 名称在删除一个网上商店后消失##studio-name-disappeared-after-deleting-a-webshop

#### 原因##cause

删除组织中最后一个网上商店会将工作室名称释放回全局池。下次尝试在该组织中创建网上商店时，Create 对话框会将其视为新的工作室声明，并会接受您以前的名称（如果名称仍然可用）或拒绝该名称。

#### 解决方案##resolution

如果名称仍然可用，请从 Create webshop 对话框中将其收回。如果其他组织已经声明了此名称，请选择其他名称。下一步，在组织中保留至少一个网上商店（未发布即可）以保存工作室名称。有关更广泛的 Studio 模型，请参阅[网上商店简介](./introduction-to-webshops.md#studios)；有关行操作菜单，请参阅[网上商店列表操作参考](./webshop-list-actions-reference.md)。
