You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cfhttp调用Stripe API向Payment_Method传id参数报错问题

报错原因

Stripe 各对象创建接口的参数支持规则不统一,并非所有对象都允许创建时手动传入id字段。

  • 创建Customer的POST /v1/customers接口原生支持自定义ID入参,因此传id表单字段可以正常生效。
  • 创建PaymentMethod的POST /v1/payment_methods接口不接收id入参,PaymentMethod的ID由Stripe服务端创建成功后自动生成,强行将id作为FormField传递就会触发parameter_unknown - id报错。
  • 将id放到Header里传递不报错,是因为Stripe会直接忽略所有不识别的自定义Header,根本不会解析处理这个参数,自然也无法成功传值。
解决方法
  • 不要在创建PaymentMethod的请求中传递id参数,先正常发起创建请求,拿到Stripe返回的自动生成的pm_开头的正式PaymentMethod ID即可。
  • 如果需要关联自有业务系统的自定义ID,在PaymentMethod创建成功后,调用对应PaymentMethod的更新接口,将自定义业务ID存入metadata自定义字段即可,参考代码:
<cfhttp method="POST" url="https://api.stripe.com/v1/payment_methods/替换为Stripe返回的pm_开头ID">
    <cfhttpparam type="header" name="Authorization" value="Bearer sk_test_.....">
    <cfhttpparam type="FormField" name="metadata[biz_pm_id]" value="你自定义的pm_123">
</cfhttp>
  • 如果需求不是新建PaymentMethod,而是操作已存在的指定ID的PaymentMethod,不要走创建接口:将目标PaymentMethod的ID直接拼在请求URL路径中,查询用GET方法、更新操作用POST方法传递对应字段即可,不要把ID放在表单参数里传递。
  • 补充说明:目前Stripe仅开放Customer、Product、Price、Plan、Coupon这几类对象的创建接口自定义ID权限,PaymentIntent、Charge、PaymentMethod等交易链路相关对象均不支持创建时手动指定ID。

内容的提问来源于stack exchange,提问作者Gnosis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:27:28