如何通过Stripe支付网关向银行账单传递正确的交易描述?
解决Stripe支付银行账单显示订单号的问题
要让银行账单显示可识别的交易描述(比如订单号),你需要在创建Stripe Checkout Session时配置账单描述字段,核心是使用statement_descriptor和statement_descriptor_suffix参数:
1. 关键参数说明
statement_descriptor:账单上显示的主描述,最多22个字符,支持字母、数字和部分符号(-,_,',.,&,)。statement_descriptor_suffix:附加在主描述后的后缀,最多10个字符,同样受字符限制。
2. 修改你的代码
在Checkout Session的创建参数中直接添加这两个字段之一(或结合使用),把订单号$reference_no嵌入进去:
$session = $stripe->checkout->sessions->create([ "success_url" => "payment-success.php?session_id={CHECKOUT_SESSION_ID}", "cancel_url" => "payment-cancel.php", "payment_method_types" => ['card'], "mode" => 'payment', // 添加账单主描述,截取订单号适配长度限制 "statement_descriptor" => "MYSTORE #" . substr($reference_no, 0, 15), // 若主描述固定,也可只用后缀添加订单号 // "statement_descriptor_suffix" => substr($reference_no, 0, 10), "line_items" => [ [ "price_data" =>[ "currency" =>"usd", "product_data" =>[ "name"=> "Subscription (" . $reference_no . ")", "description" => $order_desc ], "unit_amount" => $total_price ], "quantity" => 1 ] ], ]); echo json_encode($session);
3. 注意事项
- 必须严格遵守字符长度限制,超出会导致API调用失败,建议用
substr()截断订单号适配。 - 部分银行可能会对描述进行截断或调整显示格式,无法100%保证完全展示所有内容,但主流银行会正常显示核心信息。
- Stripe会审核账单描述,不能包含误导性、敏感或违规内容,否则会被驳回。
内容的提问来源于stack exchange,提问作者user1452895
相关产品推荐
相关产品推荐

