> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# v1.99.0 (2026年5月25日)

> 叠加折扣代码（每次结账、付款或订阅最多 20 个）、新增七封用于退款和订阅生命周期事件的客户通知电子邮件、结账付款页面全面改版使成功率提升 2–3%、产品表单重构并支持实时预览和自动保存，以及 Business Settings 重新设计

## 新功能

### 1. **叠加折扣码**

现在，结账会话、支付、订阅和计划更改可以通过 `discount_codes` 数组在单个请求中接受**最多20个折扣码**。码按照**数组顺序**应用——第一个符合条件的代码降低基础价格，第二个则降低已打折的价格，以此类推——这样可以叠加活动，而不需要创建定制的组合代码。

![确认计划更改对话框，包含多个叠加折扣码](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/stacked-discounts.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=7a2606d7027de6e662cf9be6b7df8213)

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_abc', quantity: 1 }],
  discount_codes: ['WELCOME10', 'BLACKFRIDAY20'], // applied in this order
  customer: { email: 'user@example.com' },
  return_url: 'https://yoursite.com/return'
});
```

**适用范围**

| 界面 | 字段 | 最大代码数量 |
| - | - | - |
| 结账会话 | `discount_codes` | 20 |
| 支付 | `discount_codes` | 20 |
| 订阅 | `discount_codes` | 20 |
| 计划更改 | `discount_codes` | 20 |

**计划更改行为**

| `discount_codes` 值 | 效果 |
| - | - |
| 未提供 | 如果适用于新产品，保留现有的`preserve_on_plan_change=true` 折扣 |
| `[]` (空数组) | 从订阅中移除所有现有折扣 |
| `['CODE_A', 'CODE_B', ...]` | 用这个叠加集合替换任何现有折扣，以数组顺序应用 |

**响应格式**

完整的应用折扣集合在付款和订阅的 `discounts` 数组下返回——每个条目包括 `discount_id`、`position` 和 `cycles_remaining` （用于订阅）。遗留的单一字段 `discount_id` 已弃用但仍保留用于向后兼容。

> [!NOTE]
>
> 单一字段 `discount_code` 已**弃用**但仍完全支持——现有集成可以不作修改继续工作。不能与 `discount_codes` 在同一请求中组合。我们建议在方便时迁移到 `discount_codes`，即使对于单个代码，也能利用叠加和更丰富的响应格式。

了解更多：[折扣码](/features/discount-codes.md) | [结账会话](/developer-resources/checkout-session.md) | [计划更改](/developer-resources/subscription-upgrade-downgrade.md)

### 2. **七种新的客户通知邮件**

现在，您的客户会自动收到七种新的交易邮件，涵盖退款确认、订阅生命周期里程碑和支付失败。每封邮件可以在 **设置 → 通信** 下的 **客户邮件** 部分单独启用或禁用。

![带有每个通知邮件开关的客户邮件设置面板](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/customer-notification-emails.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=44cad42723269d9728a9dae2a061613b)

**选择加入（默认启用）**

| 邮件 | 触发时机 |
| - | - |
| **退款成功** | 退款成功处理，资金返还至客户的过程中 |
| **订阅试用即将结束** | 试用到期前约2天，首次计费将发生 |
| **订阅立即取消** | 订阅立即取消 |
| **订阅设定为下次账单日期取消** | 订阅计划在当前账单期结束时取消 |

**选择退出（默认禁用）**

| 邮件 | 触发时机 |
| - | - |
| **支付失败** | 支付尝试失败——如果希望Dodo Payments直接通知客户而不是自己处理，启用此选项 |
| **订阅续订失败** | 订阅续订支付失败，特定触发；而不是附加于常规支付失败邮件的续订支付失败 |
| **即将到来的续订提醒** | 续订前约2天 |

> [!TIP]
>
> 如果您通过网络钩子自行管理客户沟通，请保持选择退出邮件禁用，以避免给客户发送重复的事件通知。

> [!NOTE]
>
> 客户邮件与发送给您团队的通知邮件是分开的。禁用客户邮件不会影响您团队对相同事件的通知。

了解更多：[通信偏好](/features/communication-preferences.md)

## 改进

### 3. **结账付款页面全面改版**

结账中的付款页面经过了端到端的大幅重构——布局更加紧凑、感知加载速度更快、验证状态更加清晰，并优化了卡片输入体验。总体而言，这些改动使全球流量中的**观测结账成功率提升了约 2–3%**。

![之前的结账支付页面](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/checkout-payment-before.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=cd86eb287a4688e14bb01e836382744f)

Before

![重新设计的结账支付页面](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/checkout-payment-after.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=4eb10926ab5a1a1c97ab4cbf16e78fb2)

After

改动内容：

* **更流畅的字段交互** — 卡片表单支持自动聚焦、更智能的 Tab 顺序以及更完善的键盘导航
* **更清晰的错误和加载状态** — 内联验证会准确显示在客户需要操作的位置，取代之前的整张表单错误横幅模式
* **更快的渲染** — 骨架屏和渐进式 hydration 消除了慢速网络下短暂的空白状态闪烁
* **移动端体验优化** — 专门针对移动端结账场景优化了点击区域、滚动行为和键盘处理；目前大多数流量都来自移动端

> [!TIP]
>
> 无需进行任何集成改动。现有结账会话会自动使用新的付款页面。

### 4. **产品表单重构**

产品的**创建**、**编辑**和**复制**流程已经围绕统一一致的表单体验进行了全面重建。

![Unified product form with Basic Details, Media & Description, Pricing, and a live checkout preview side-by-side](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/product-form.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=12693e04457400a4aa33063ef0d73221)

主要亮点：

* **实时预览** — 编辑产品时，可以在表单旁并排查看产品在结账页面和 Customer Portal 中的显示效果
* **自动保存** — 草稿会自动持久化，因此离开页面或丢失标签页不再意味着丢失工作内容
* **Markdown 编辑器** — 产品描述现在支持完整的 Markdown 编辑器，提供实时渲染、链接预览和内联格式控制
* **复制流程一致性** — 复制产品时会打开预先填充内容的同一统一表单，而不是精简对话框，因此你可以在保存副本前调整每个字段

> [!TIP]
>
> 使用 **Duplicate**，无需重新输入描述、元数据或履行配置，即可基于现有产品快速创建区域或定价层级变体。

### 5. **Business Settings 页面重新设计**

**Settings → Business** 页面经过重新设计，使配置更易于浏览和更快速地更新。现在，设置按更清晰的部分进行分组，并配有说明性文本，在你切换每个选项之前解释其影响。

现有设置的**行为没有任何变化**——只有布局、分组方式及周围的说明得到了改进。

![Redesigned Business Settings page with grouped sections for Business Info, Brands, currency, security, and tracking](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/business-settings.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=7603e02f67bb05a590681400f1e3f4b5)

## 改进

* **`credits_amount` override 现在会正确传递到 GET checkout session 和 payment link 路由** — 当创建结账会话或 payment link 时使用了按结账设置的 `credit_entitlements` override，通过 GET 获取该会话或链接时，之前返回的是产品级默认 `credits_amount`，而不是被覆盖的值。现已修复。
* **已全额退款的付款将禁用退款操作** — 付款完成全额退款后，该付款上的 Refund 按钮现在会被禁用，并显示解释原因的工具提示。之前该按钮仍处于启用状态，只有提交后才会返回错误。
* 修复了平台各处的小问题并提升了稳定性


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.