Skip to main content

新功能

1. Discount Codes:Amount 折扣、排期和资格规则

Discount codes 不再仅支持百分比折扣。现在,代码可以扣除固定金额、按排期开始生效、针对不同货币设置不同价格,并限制允许兑换的客户。 Amount 折扣 设置 typeflat,即可扣除固定金额,而不是按百分比折扣。扣除金额会在整个购物车范围内合并计算,而不是按行项目分别应用。
Discount code editor with the Amount type selected, showing a flat 500 INR deduction
按货币配置选项 currency_options 让同一个代码能够在你销售的每种货币中正常运行。每个条目针对一种货币设置最大折扣(Amount 代码为实际扣除金额,Percentage 代码为上限)和最低购物车金额。Amount 折扣至少需要一个可解析默认值的货币选项;Percentage 折扣的货币选项仍然是可选的。 客户资格 customer_eligibility 控制哪些客户可以兑换代码:
Customer eligibility dropdown showing Any, First-time, Existing, and Specific customer options
你可以从 dashboard 管理允许列表,也可以使用新的 endpoints:GET /discounts/{discount_id}/customers 用于列出已关联的客户,POST /discounts/{discount_id}/customers 用于关联客户,DELETE /discounts/{discount_id}/customers/{customer_id} 用于解除一个客户的关联。
一个 specific 代码初始没有任何符合资格的客户。在你为其关联客户之前,所有兑换请求都会被拒绝。
排期和单个客户的兑换次数限制 设置 starts_at,可将代码安排在未来生效;不设置则代码会立即生效,并且该时间必须严格早于 expires_at。使用 per_customer_usage_limit 限制单个客户兑换代码的次数。该限制独立于整体 usage_limit,且不能超过后者。
最低购物车金额始终根据购物车的原始价格计算,而不是根据叠加过程中某一时刻的累计金额计算。因此,叠加顺序不会改变最低金额是否满足。
了解更多:Discounts | Create Discount

2. 全新重建的 Webhooks 体验

dashboard 的 Webhooks 部分已重建为原生体验,取代原先嵌入式 portal。现在所有功能都位于 dashboard 内,拥有统一的表格、筛选器和导航,并且能够在移动设备上正常使用。
  • Endpoints — 在侧边面板中创建和编辑 endpoints,从可搜索的树状结构中选择事件类型,并一眼查看过去 24 小时的错误率。
  • Activity and logs — 在 Delivery activity 图表中查看一段时间内的投递尝试,浏览已投递的消息,并打开 message detail 页面查看 payload 以及每次投递的响应代码和耗时。每次尝试都可以从该页面重新播放。
  • Event catalog — 浏览 Dodo Payments 发送的所有事件类型,以及对应的 schema 和示例 payload。
  • Endpoint overview — 查看过去 24 小时的投递统计、签名密钥(可查看或轮换)以及 Replay history
  • Testing — 向 endpoint 发送示例事件,在正式上线前验证接收器。
  • Advanced — 限制投递速率,管理发送到该 endpoint 的每个请求所带的自定义 headers,并编辑其转换规则。
  • Bulk replay — 在 endpoint 上恢复失败的消息、重新播放从未分发的消息,或重新播放经过筛选的范围。
  • Email alerting — 新增 Settings 标签页,可列出在发送到某个 endpoint 的投递开始失败时应接收邮件的地址。使用逗号分隔多个地址,留空即可关闭提醒。
这只是 dashboard 层面的变更。你现有的 endpoints、签名密钥、签名验证、事件名称和 payload 均未改变,无需进行集成调整。
了解更多:Webhooks | Webhook Events

3. Cash App Pay 支持订阅

Cash App Pay 现在不仅支持一次性支付,也可以用于持续性订阅。它适用于以 USD 计费的美国结账流程,并与现有卡支付选项并列提供。 了解更多:Digital Wallets

4. SEPA Direct Debit

SEPA Direct Debit 现已在整个欧元区提供,让客户可以直接从银行账户付款,而无需使用卡。它适用于一次性支付的 EUR 结账流程。
SEPA Direct Debit 不是即时支付。支付需要 6 个工作日才能确认,因此不要将授权视为结算;只有当支付进入 succeeded 状态后,才能履行订单。
了解更多:European Payment Methods

5. 更清晰的支付失败消息

支付失败时,你和客户现在看到的是专门编写的文案,而不是原始处理器文本。每次失败都会通过包含 46 个统一错误代码的分类体系进行处理,每个代码都针对两类受众:
  • 会在支付记录上看到标题和建议操作,从而了解应要求客户重试、联系银行,还是使用另一张卡。Payment 对象上的 error_message 现在会在 error_code 为已识别的统一代码时携带这段文案。
  • 你的客户会在结账失败页面、Customer Portal 和催缴邮件中看到通俗易懂的说明,例如:“你的卡片安全码(CVC)似乎不正确。请重新输入后再试。”
对于涉及欺诈风险的拒付——FRAUDULENTLOST_CARDSTOLEN_CARDPICKUP_CARD——客户始终会看到通用消息,因此不会泄露真实原因。你仍然可以看到真实原因,但系统会标记警告,提示不要将其分享给客户。
了解更多:Transaction Failures | Payments | Get Payment Detail

6. 允许客户取消自己的订阅

Allow Subscription Cancellation 现在已成为 dashboard 设置中 Subscriptions 标签页下的一项正式设置,并且会在端到端流程中强制执行。关闭该设置后,Customer Portal 会禁用取消按钮,API 也会通过 403 拒绝客户发起的取消请求,包括立即取消和“在下一计费日期取消”流程。此前,该设置仅会隐藏按钮,因此客户仍可能通过 API 取消订阅。 该设置默认启用。你通过 merchant API 和 dashboard 发起的取消操作不受影响,客户也始终可以撤销已经安排的取消操作。 了解更多:Customer Portal | Subscriptions

7. Payout Webhooks

现在,你可以接收关于自身 payouts 的 Webhooks,从而无需轮询即可在会计系统中完成对账。
payout.created 之前会以 payout.not_initiated 的名称发送。如果现有 endpoint 根据 payout.not_initiated 进行筛选,请将筛选条件更新为 payout.created,以确保继续匹配。此阶段 payload 上的 status 字段仍会报告 not_initiated
了解更多:Payout Webhooks | Payouts Process

8. 从 dashboard 更改登录邮箱

现在,你无需联系支持团队即可更改登录时使用的邮箱地址。Account 标签页已重新设计,其中包含新的 Change Email 部分,以及用于启动流程的 Change email 按钮。 验证分两步进行:我们会先向你的当前地址发送代码,以确认是你本人;然后向你的地址发送第二个代码,以确认你拥有该地址。两者验证完成后:
  • 此后使用新地址登录。旧地址将不再适用于密码、magic links 和通过邮件发送的代码。
  • 任何已关联的身份提供商(例如 Google 或 GitHub 登录)都会解除关联,必须重新连接。
  • 你的密码、businesses、团队访问权限和验证状态均不会改变。
  • 系统会向旧地址发送通知,因此意外的更改不会悄无声息地发生。
了解更多:My Account

9. Analytics:新增小组件和改进

在 Analytics v3 重建的基础上,本次发布新增了可视化图表,并进一步优化了现有图表。
  • 按国家/地区查看收入现在使用全宽度分级设色地图,旁边显示按排名排列的国家/地区列表,该卡片也可以像其他卡片一样分享。
  • 重新绘制的趋势图表支持十字线悬停、x 轴上的滚动日期标签和紧凑型 tooltip。
  • 新增日期预设——Last 30 days 取代 Last 4 weeks,并新增 Last 6 months
  • **你的筛选条件会保留。**日期预设和比较模式现在会按 business 持久保存,并在不同设备间同步,而不是每次会话都重置为默认值。
  • Top customers 现在按姓名识别,没有姓名时使用邮箱。
  • 按国家/地区查看收入现在最多返回排名前 150 的国家/地区。
了解更多:Dashboard Analytics

改进和 Bug 修复

10. 按货币筛选支付

GET /payments 接受可选的 currency query parameter,因此你可以只列出以指定货币结算的支付,例如 GET /payments?currency=EUR。dashboard 的 Payments 表格也支持相同的筛选条件。 了解更多:List Payments

11. 争议响应期限延长至 10 天

现在,争议创建后你有 10 天时间进行响应,之前为 4 天。dashboard 中争议的倒计时以及 API 返回的响应截止时间都会反映这一更长的期限。 了解更多:Disputes

12. 更清晰的 payout 银行账户表单

添加 payout 银行账户时更加明确。字段标签、描述和 tooltip 现在会根据你的 business 类型进行调整,因此对于个体经营者来说,账户持有人姓名和受益人姓名不再看起来重复。选择 Other 作为银行后,你可以自由输入名称;中国境内银行代码标记为 CNAPS;payouts 页面在测试模式下也会保持显示,因此你可以从任一模式访问已关联的账户。 了解更多:Payouts Process

其他修复和改进

  • **支付失败时会撤销套餐变更产生的抵扣额。**订阅套餐变更期间发放的按比例分摊抵扣额,如果最终支付未成功,将不再被保留。
  • 付费试用发票会显示试用费用,而不是常规的周期性价格。
  • Percentage 折扣会遵守最低购物车金额,该金额根据基础价格而非累计金额计算;Discount lock 超时现在会返回独立的错误代码,而不是通用的 503
  • 删除已经移除的支付方式现在会成功,而不是返回错误,使该调用能够安全地保持幂等性。
  • 更新订阅支付方式时,修正了印度 mandate 最低金额所使用的货币。
  • 超出允许范围的 Credit ledger 条目现在会被带类型的 400 拒绝,而不是延迟到之后才失败。
  • Pay-what-you-want 产品在共享 checkout links 中支持固定金额,并且 entitlement IDs 会显示在 entitlement 详情面板中。
  • Analytics 修复:生命周期价值序列、计入 MRR 的 add-ons、所有时间范围不再进行周期比较、在当前 bucket 处停止的序列,以及更清晰的范围和比较标签。
  • 修复平台各处的小问题并提升稳定性。
最后修改于 2026年8月8日