如何预填充Stripe结账页面shipping address?参数报错求助
解决Stripe结账页面收货地址预填充失败的问题
你遇到的“未知参数”错误,根源是预填充收货地址的参数名不符合Stripe API规范,而且当前代码里完全没加入预填充收货地址的相关配置。
正确的预填充配置方式
Stripe Checkout Session支持通过shipping字段预填充收货地址,参数名必须严格遵循API要求,以下是修正后的关键代码:
$checkout_session = \Stripe\Checkout\Session::create([ "mode" => "payment", "locale" => "auto", "customer_email" => $email, "line_items" => $line_items, "billing_address_collection" => "required", "shipping_address_collection" => [ "allowed_countries" => ["IN"], ], // 新增收货地址预填充配置 "shipping" => [ "name" => $name, "phone" => $number, "address" => [ "line1" => $addressl1, "line2" => $addressl2, "city" => $city, "state" => $state, "postal_code" => $postalcode, "country" => $country ] ], "metadata" => [ "name" => $name, "email" => $user_email, "phone" => $number, ] ]);
重要注意点
- 确保
$country的值是ISO 3166-1 alpha-2格式的两位代码(比如印度是IN),不能用国家全称或其他格式。 - 确认
$_SESSION['billing_details']里的各个字段都有有效值,避免传递空值导致预填充失效。 shipping字段仅在shipping_address_collection配置为required或auto时生效,你当前的配置符合要求。
内容的提问来源于stack exchange,提问作者6454_Hassan Khan
相关产品推荐
相关产品推荐

