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

CFML调用Stripe API时传递address等嵌套子参数报错求助

错误原因

Stripe 官方的 form-encoded 格式接口不支持将序列化后的 JSON 字符串作为嵌套对象参数传入。你把地址对象序列化成JSON后整体赋值给address字段,接口无法解析该值为合法的地址对象,因此返回Invalid object报错。

Stripe 传递嵌套参数的标准规则是使用方括号层级语法拼接参数名,无需提前做JSON序列化。

正确传参方式

将嵌套对象的每个子属性拆分为独立的表单字段,参数名按照外层字段名[子属性名]的格式编写即可,对应ColdFusion代码如下:

<cfhttp method="POST" url="https://api.stripe.com/v1/customers">
    <cfhttpparam type="header" name="Authorization" value="Bearer sk_test_.......................">
    <cfhttpparam type="FormField" name="id" value="cust_14">
    <cfhttpparam type="FormField" name="name" value=#Customer_Name_1#>
    
    <!--- 地址嵌套参数按方括号语法拆分传递,不需要序列化JSON --->
    <cfhttpparam type="FormField" name="address[city]" value=#Town_1#>
    <cfhttpparam type="FormField" name="address[line1]" value=#Street_1#>
    <cfhttpparam type="FormField" name="address[line2]" value=#Street_2#>
    <!--- 其余地址字段(邮编、省份、国家码等)按相同格式追加即可
    <cfhttpparam type="FormField" name="address[postal_code]" value=#PostCode_1#>
    <cfhttpparam type="FormField" name="address[state]" value=#Province_1#>
    <cfhttpparam type="FormField" name="address[country]" value="CN">
    --->
</cfhttp>
补充说明

所有Stripe的嵌套类型参数都遵循该传参规则,例如自定义元数据metadata字段,传递自定义键值对时参数名写为metadata[你的自定义键]即可,无需做JSON序列化处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:33:11