Paddle 支持在交易中添加非目录产品与价格
Paddle 开发者更新允许在交易中直接添加非目录(custom)产品与价格,无需预先在目录中创建。示例交易中,自定义价格 "Globex annual 2024" 单价 $50000(即 $500/席/年),数量 50,小计 $2,500,000,税率 8.875%,含税总额 $2,721,875,币种 USD。
Paddle 开发者更新允许在交易中直接添加非目录(custom)产品与价格,无需预先在目录中创建。示例交易中,自定义价格 "Globex annual 2024" 单价 $50000(即 $500/席/年),数量 50,小计 $2,500,000,税率 8.875%,含税总额 $2,721,875,币种 USD。
Paddle 在 API v1 新增 on_payment_failure 字段,用于指定自动扣款订阅在支付失败时如何处理变更,默认值为 prevent_change,即返回错误且不应用变更。设为 apply_change 后,变更仍会应用,订阅保持 active,但相关交易变为 past_due。该改动为非破坏性变更,不影响现有集成。
Paddle 更新 API,新增 4 个操作和 2 个 webhook,开发者现在可以通过 API 创建并下载报表,此前只能在 Paddle 后台操作。报表实体以 rep_ 前缀的 Paddle ID 标识,生成完成后可获取 CSV 下载链接,并通过 report.created 和 report.updated webhook 获知创建与可下载状态。
Paddle 在 API v1 中为 products、prices、discounts、customers、addresses、businesses 和 subscriptions 新增 import_meta 对象,用于返回实体的导入信息,未导入的实体该字段为 null。此举是为未来从 Paddle Classic 或其他平台导入数据的工具做准备,属非破坏性变更,不影响现有集成。
Paddle 平台新增交易行项目和调整行项目两份报告,可按行项目查看已收收入、逾期发票、草稿及已开具发票、已取消交易,以及退款、信用额和拒付数据。报告包含每项商品、价格与税务信息,便于按产品统计收入或进行收入确认。该变更已在 Paddle API v1 上线,属非破坏性更新,不影响现有集成。
Paddle 为 Paddle.js 新增 Paddle.Retain.demo() 方法,用于模拟 Paddle Retain 的干预效果,可验证 Retain 是否正确安装并预览客户实际看到的效果。
Paddle 在 Paddle.js 中把 customer.business.name 与 customer.address 解耦,现在可以在没有地址的情况下向结账页传入企业名称并完成预填。此前只传企业名会触发 checkout.warning 并丢弃该名称,因为 Paddle Checkout 需要地址来校验税号和计算税费。该改动已在 Paddle.js 上线,无需手动升级,最新版本自动提供。
Paddle 在 API v1 的 list transactions 操作中新增 origin 查询参数,可按交易创建方式筛选实体,例如传入 web 返回通过 Paddle.js 结账创建的交易。该参数支持逗号分隔多个 origin 值,匹配任一即返回,取值来自 transaction.origin 的合法值。此为向后兼容变更,不影响现有集成。
Paddle 平台为 Paddle Checkout 和 Paddle Billing 订阅邮件新增土耳其语本地化支持,locale 参数新增允许值 tr,可传给 Paddle.Checkout.open() 或 Paddle.Initialize() 设置结账语言。
Paddle 平台更新后,从沙盒账户发出的客户邮件主题开头会带上 [TEST] 前缀,方便与正式环境邮件区分。该改动已生效,API 的端点和字段均无变化,邮件内容也保持不变。Paddle 在客户购买及订阅续费、取消等生命周期事件时会发送这些合规邮件,沙盒邮件与正式邮件原本内容一致。
Paddle 发布面向 Paddle Billing 的 Cancellation Flows,通过问卷向取消订阅的客户提供暂停订阅、切换套餐或折扣等挽留选项,并收集取消原因。
推荐理由:Paddle 官方发布取消挽留流程,并给出测试中最多降低 30% 取消流失的数据,做订阅收款的开发者可据此评估接入方式。
Paddle 在 API v1 中为 price 实体新增 name 字段,用于在结账时向客户展示价格名称,通常描述关联产品的计费周期。该字段会在 overlay checkout 中显示在产品名旁,并通过 Paddle.js 事件的 data.items[].price_name 返回,供 inline checkout 使用。
Clerk 官方博客演示了如何结合 Clerk 的 User Metadata 与 Stripe Webhooks 搭建 SaaS 付费会员体系。Clerk 的 User Metadata 分为 public、private、unsafe 三类,分别对应前后端可读写、仅后端可读、需自行校验的不同访问级别。
Paddle 更新折扣(discount)实体,创建或更新时可写入 custom_data 结构化键值数据,并可在 API 响应和 webhook 中读取。
Paddle 更新平台对零金额订阅的处理:客户完成 $0 循环价格结账后,Paddle 只发送一封明确说明已保存支付方式的邮件,不再发送 $0 交易的收据。邮件中的取消链接改名为移除支付方式链接,取消页面也明确说明客户正在移除支付方式,此类订阅改为立即取消而非等到计费周期结束。API 的端点和字段没有变化,该变更现已生效。
Paddle 为 Paddle.js 新增 Paddle.PricePreview() 方法,可直接获取含折扣、税费和货币换算的本地化定价,无需再向 Paddle API 发起服务端请求。
Paddle 为平台加入客户端令牌(client-side token),可在 Paddle.Initialize() 中通过 token 参数完成认证,取代此前的 seller 参数。
Paddle 在交易实体的 payments[].method_details.card 中新增 cardholder_name 字段,返回客户结账时输入的持卡人姓名。该字段随 card 对象一并返回卡类型、后四位、到期月和年份,适用于账单信息页与更换支付方式流程。此变更已在 Paddle API v1 上线,属非破坏性更新,不影响现有集成。
Paddle 在 API v1 的 list subscriptions 操作中新增 scheduled_change_action 查询参数,用于筛选带有计划变更的订阅,包括计划暂停、计划取消以及已暂停但计划恢复的订阅。该参数支持逗号分隔传入多个变更动作,并可与 status 参数组合,找出已取消或计划取消、已暂停或计划暂停的全部订阅。此为向后兼容变更,不影响现有集成。
Paddle 将 transaction.checkout.url 改为可写字段,创建或更新交易时可传入已批准域名的 URL,用于生成该交易的支付链接。Paddle 返回的链接由传入 URL 或默认支付 URL 加上 _?
Paddle 在 API v1 中新增 effective_from 的 immediately 取值,可立即暂停或取消活跃订阅,此前只能在当前计费周期结束时生效。该字段默认值仍为 next_billing_period,请求体留空或省略该字段时行为不变。此次为非破坏性变更,不影响现有集成。
Paddle 为 Paddle.js 的 Paddle.Checkout.open() 和 Paddle.Initialize() 方法新增 showAddTaxId 参数,并配套 HTML 属性 data-show-add-tax-id,默认值均为 true,用于在结账页隐藏添加税号与公司信息的选项。该改动已在 Paddle.js 上线,无需手动升级即可使用,仍支持在打开结账页时预填公司信息。
Paddle 在 API v1 的 list subscriptions 操作中新增 collection_mode 查询参数,可按 automatic 或 manual 收款模式筛选订阅,例如返回通过发票手动收款的订阅。该参数用法与列出 transactions 时的 collection_mode 一致,属非破坏性变更,不影响现有集成。
Paddle 更新 API,在列出交易时可为 subscription_id 查询参数传入 null,用于筛选与订阅无关的单次购买交易,此前无法这样过滤。该改动在 Paddle API v1 中生效,属非破坏性变更,不影响现有集成。注意未完成结账和草稿发票的交易 subscription_id 同样为 null,可配合 status=completed 使用。
Paddle 发布了一个 wrapper,让开发者可以通过 npm、Yarn 等包管理器把 Paddle.js 作为模块加载,而不再需要手动引入脚本。该包内置 Paddle.js 方法的 TypeScript 类型定义,支持类型检查,初始化改用 initializePaddle 函数。
Paddle 为 Paddle.js 新增 Paddle.Checkout.updateCheckout() 方法,可更新未完成结账的 items、discount 和 customer 信息,并新增 checkout.updated 事件。
Paddle 为 Paddle.js 的 Paddle.Checkout.open() 和 Paddle.Initialize() 新增 showAddDiscounts 参数及 data-show-add-discounts HTML 属性,用于在结账页隐藏"添加折扣"选项,默认值为 true,需先在 Paddle 后台开启"允许买家添加折扣码"。
Paddle 现在支持 Apple Pay 和 Google Pay 的周期性交易,客户可以用这两种数字钱包支付订阅费用。此前它们只能用于 Paddle Checkout 的一次性购买,Paddle 会在首次付款后保存该支付方式并用于后续续费。
推荐理由:Paddle 把 Apple Pay 和 Google Pay 从一次性付款扩展到订阅续费,开发者无需改代码即可在后台开启。
Paddle.js 新增 checkout.warning 事件,当传入的预填数据无效或不完整、结账仍能打开但不会预填信息时触发,可用于获取出错详情。该事件对 inline checkout 集成尤其有用,便于展示自定义错误提示。此变更已在 Paddle.js 上线,无需手动升级,Paddle 会自动提供最新版本。
Paddle 在 API v1 中新增哥伦比亚比索(COP)作为支持的支付货币,开发者可为哥伦比亚客户以本币创建价格和价格覆盖。
Paddle 更新了 customer、address 和 business 实体,现在创建或更新这些实体时可以添加 custom_data 自定义键值数据。此前 custom_data 仅支持 transaction、subscription、product 和 price 实体。
Paddle 在 API v1 中新增 transaction.status 的 paid 值及对应的 transaction.paid 事件,交易在收款成功后先标记为 paid,异步处理完成后再变为 completed。
Paddle API 新增 list credit balances for a customer 操作,可查看客户当前可用余额与已使用余额。余额按币种分别记录,包含 available、reserved(已开票未付部分)和 used 三项,未产生过余额的客户不返回记录。该变更已在 Paddle API v1 上线,属非破坏性更新,不影响现有集成。
Paddle 在 API v1 中新增「激活试用订阅」操作,调用 POST /subscriptions/{subscription_id}/activate 即可立即将试用中的订阅转为付费,无需传入日期,剩余试用期直接截断。
Paddle 平台现已支持更新试用期订阅,可增删项目、修改数量、收取一次性费用以及更改下次账单日期,API 端点和字段无变化,该变更在 Paddle API v1 中为非破坏性更新。
Paddle 在 API v1 中新增 payout.created 和 payout.paid 两个可订阅事件,分别对应打款发起与到账,开发者可据此搭建记账或 Slack 通知等工作流。
Paddle 开发者更新日志显示,现在可订阅折扣通知,通过 discount.created 事件接收折扣创建提醒。示例事件包含折扣码 BF10OFF、10% off、状态 active、支持循环折扣且最多 3 个计费周期,到期时间为 2024-12-03。
Paddle 在 API v1 的「预览订阅变更」和「预览一次性扣费」两个操作的响应中新增 update_summary 对象,直接返回按比例计算的扣费或抵扣总额,开发者无需再自行累加调整项与 immediate_transaction、next_transaction 的金额来判断结果。
Hugging Face Hub 已上线 AWS Marketplace,用户可通过 AWS 账户订阅并直接支付 Hugging Face 的使用费用。订阅后,Inference Endpoints、Spaces 硬件升级和 AutoTrain 等服务的组织用量费用会自动出现在 AWS 账单上,而非由 Hugging Face 向组织绑定的信用卡扣款。
Paddle 面向 2023 年 8 月 8 日前注册的老客户推出 Paddle Billing,这是一套面向现代 SaaS 的计费与经常性收入管理功能,需在 Business Account > Account Settings > Get Paddle Billing 中由管理员手动开启,开启后不产生费用直到实际发生交易。
推荐理由:Paddle 官方说明新旧两套计费体系的数据隔离与共享边界,便于开发者判断是否现在开启。