payin商户操作手册

最新文章

Stripe Checkout 自定义字段:收集业务选项,读取最终答案

判断哪些业务问题适合结账自定义字段,设计稳定标识并保存已提交答案,避免混淆预填值、库存与付款条件。

发布日期及来源核查日期:

托管 Checkout 自定义字段的类型、限制、必填性、多语言、最终值读取及更正快照;不展开元数据传播、库存实现、地址或发票定制。

先判断是业务提问,还是商品配置

一位销售服装的开发者询问:能否用 Checkout 自定义字段让顾客选择尺码,并为每个选项限制库存?这证明存在具体集成需求,也提醒我们不要把商品选择推迟到付款页面才处理。[3] 本文讨论少量业务选项的收集与最终答案读取,不讨论元数据在对象之间的传播。

建议先划定边界:不影响价格、不占用稀缺库存、也不包含敏感信息的简单指示,可以考虑自定义字段。尺码对应库存、付费升级等选择,应先在应用内确定商品和价格,再创建结账会话。不要把下拉答案当作库存预留凭证,也不要因为顾客选了一个选项就推断系统会追加扣款。

先分配字段,再设计表单

Stripe 最多允许三个自定义字段,不支持在 setup 模式使用;支持文本、纯数字和下拉类型。文本最多支持二百五十五个字符,数字字段最多二百五十五位,下拉最多二百个选项。官方明确警告,不要用它收集个人、受保护、敏感或法律限制的信息。[1]

为每个问题写清业务用途和答案接收人。答案能枚举时优先使用下拉框,确实无法枚举时再考虑文本。字段默认必填;订单不依赖该答案时,才主动设置 optional=true[1] 同时定义空答案的含义:采用标准处理,还是交给人工确认?不要等付款后才决定。

把业务标识和显示文案分开

每个字段都需要唯一的 key。接口规定字段键只使用字母和数字,最长二百个字符;下拉选项的显示标签与机器值分开,选项值必须唯一、只含字母和数字,最长一百个字符。[2] 修改文案时应保留这些稳定标识,不要让仓库程序依赖顾客看到的句子。

示例设计:整张订单选择包装方式,设置 key=packingtype=dropdown,两个同价选项分别使用 standardminimal。中文显示“标准包装”“简约包装”,英文页面使用对应英文标签。Stripe 不会自动翻译自定义字段标签,可以设置会话语言与标签一致。[1] 这是设计示例,不是已执行的接口请求。

读取提交值,而非预填值

顾客完成会话后,Stripe 会在 checkout.session.completed 事件中发送已填写的字段;默认值只是付款页预填内容。[1] 在事件携带的会话中按 key 找字段,核对 type,然后读取 dropdown.valuetext.valuenumeric.value。纯数字答案仍是仅含数字的字符串,不是金额型数值。[2]

  1. 把已完成会话对应到正确的内部订单。
  2. 按字段键建立答案映射,不依赖数组里的第几个位置。
  3. 核对类型与允许的下拉值,区分可选字段未填和不认识的答案。
  4. 保存答案快照、会话标识及本地问题版本,供后续处理复核。

以上是建议的应用控制。答案收集与发货授权必须分开:会话处于完成状态时,付款仍可能正在处理。[4] 看到了包装方式,不代表已经满足放行条件。

允许更正,但不要静默改写历史

官方文档说明,可以在管理后台查看、编辑和导出自定义字段值;对于订阅,也可以通过订阅筛选条件查找创建它的结账会话。[1] 因此,稍后在后台看到的值,不一定与完成时保存的答案相同。

建议保留原始快照,把获授权的更正另行记录。变更包装工单前,确认仓库是否已经开始操作;不要假设后台编辑会同步更新本地数据库。遇到陌生字段键或已经停止提供的选项,应进入异常处理,而不是悄悄替换成默认答案。

上线前检查清单

  • 修改预填包装选项,确认下游读取提交后的值。
  • 留空可选字段,核对约定的默认处理。
  • 调整字段顺序、翻译标签、重复接收事件,确认不会重复修改订单。
  • 检查未知选项、业务必需答案缺失,以及付款后的更正流程。
  • 即使答案齐全,也让尚未满足付款条件的订单继续等待。

这些检查尚未执行。本文是面向托管结账页的公开文档研究,不代表真实账户测试,也不构成 PayIn 功能承诺。

来源、日期与局限

检索日期为二〇二六年九月二十三日。官方页面未注明发布日期及更新日期;检索日期不等于发布日期。所读材料未建立各国家或地区的账户资格,不能据此声称全球可用。社区问题仅证明定性需求,不代表当前产品行为或搜索量。

更多指南