首页 > 解决方案 > Stripe 如何检索 Checkout Session 的行项目数量?

问题描述

创建付款会话:

$session = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'], //, 'fpx','alipay'
    'line_items' => [[
        'price_data' => [
            'product_data' => [
                'name' => "Topup USDT Wallet",
                'images' => ["https://abc-uaha.co/uploads/site_logo/site_logo_20210321130054.png"],
                'metadata' => [
                    'pro_id' => "USD".$_GET['price']/100
                ]
            ],
            'unit_amount' => $_GET['price'],
            'currency' => 'usd',
        ],
        'quantity' => 1,
        'description' => "Spartan Capital",
    ]],
    'mode' => 'payment',
    'success_url' => STRIPE_SUCCESS_URL.'?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => STRIPE_CANCEL_URL,
]);

请参阅此文档:https ://stripe.com/docs/api/checkout/sessions/line_items

我尝试从会话中检索数量:

try {
    $checkout_session = \Stripe\Checkout\Session::retrieve([
      'id' =>$session_id,
      'expand' => ['line_items'],
     ]);
}catch(Exception $e) { 
    $api_error = $e->getMessage(); 
}

$line_items = $session->line_items[0].quantity;

echo $line_items; //it shows nothing, how to make it output "1"?

标签: stripe-payments

解决方案


line_items检索结帐会话时,默认情况下不再包含。要在您的检索调用中获取它们,您需要扩展line_item属性。

您有两个语法错误:您缺少一个层并使用点表示法而不是 PHP 箭头语法。第二个错误是使用$session而不是$checkout_session. 所以应该是:

$quantity = $checkout_session->line_items->data[0]->quantity;


推荐阅读