PHP创建Stripe支付链接指定metadata时报400错误如何解决
Stripe支付链接传metadata报400 Invalid array错误修复方案
你写的价格创建、支付链接创建的参数结构本身没有语法错误,报错核心是版本不匹配,按以下顺序排查修复:
- 第一优先级检查stripe-php SDK版本:Payment Links接口的metadata参数是在v7.111.0版本的SDK中才适配支持的,如果你当前用的SDK版本低于这个值,SDK内部序列化请求参数时会把metadata数组处理成错误格式,直接触发接口侧的参数校验失败,返回400错误。
直接升级SDK即可解决,根据自己的PHP版本选对应命令执行:- PHP8.0及以上环境装最新稳定版:
composer require stripe/stripe-php:^v13 - 还在跑PHP7.4的老项目选兼容长期支持版:
composer require stripe/stripe-php:^v10
升级完不需要改现有代码,你原来写的'metadata' => ["key"=>"value"]传参格式完全符合要求。
- PHP8.0及以上环境装最新稳定版:
- 如果升级SDK后还是报错,检查Stripe客户端初始化配置:如果你初始化$stripe实例的时候硬编码了低于2022-11-15的API版本(比如固定写死
'api_version' => '2020-08-27'这类旧版本号),哪怕SDK是新的,接口侧也不识别这个版本下不存在的metadata参数,同样会报参数非法。修复方法很简单,要么去掉初始化时硬编码的api_version配置,用SDK默认匹配的稳定版API,要么把写死的版本号改成2022-11-15及之后的正式版本即可。
快速验证方法:调用create方法前打印下SDK实际组装的请求体,确认metadata字段是标准的键值对结构,没有出现错误嵌套、空值的情况,就可以正常发起请求了。
内容的提问来源于stack exchange,提问作者hotips
相关产品推荐
相关产品推荐

