【问题标题】:Can you pass a shipping address to Stripe Checkout您可以将送货地址传递给 Stripe Checkout
【发布时间】:2020-10-06 14:05:51
【问题描述】:

我正在使用Stripe Checkout API 指导网站用户进行付款。

有没有办法将送货地址传递给托管结帐页面,以便从引荐来源而不是 Stripe 本身收集?

function createSession()
{
    require 'vendor/autoload.php';
    \Stripe\Stripe::setApiKey('[API_KEY_REDACTED]');
    
    $YOUR_DOMAIN = '[SITE_URL_REDACTED]';
    
    // Calculate price
    $price = 50;
    
    $checkout_session = \Stripe\Checkout\Session::create([
        'billing_address_collection' => 'required',
        'payment_method_types' => ['card'],
        'line_items' => [[
            'price_data' => [
                'currency' => 'gbp',
                'unit_amount' => $price,
                'product_data' => [
                    'name' => 'Product'
                ],
            ],
            'quantity' => 1,
        ]],
        'mode' => 'payment',
        'success_url' => $YOUR_DOMAIN . '/success',
        'cancel_url' => $YOUR_DOMAIN . '/cancel',
    ]);
    
    return json_encode(['id' => $checkout_session->id]);
}

您可以添加以下行以使 Stripe 要求提供送货地址,但我想改为从推荐人那里传递此地址。

'shipping_address_collection' => [
    'allowed_countries' => ['US', 'CA'],
],

【问题讨论】:

    标签: php stripe-payments


    【解决方案1】:

    为此,您需要create a Customer 并提供他们的运费address,然后在创建结帐会话时提供provide that existing Customer

    $checkout_session = \Stripe\Checkout\Session::create([
        'customer' => 'cus_123',
        ...
    ]);
    

    【讨论】:

    • 啊,谢谢。因此,只是为了澄清一下,如果我使用“以访客身份结帐”(即没有登录系统)并且用户希望将来第二次结帐,通常的做法是什么。我假设我不想用完全相同的信息创建 another 客户。感谢您的建议。
    • 如果您不提供客户参考,Stripe 将在您的 Stripe 帐户中为您创建一个客户,该客户将与结帐会话相关联。如果您不想创建另一个客户 ID,下次只需提供相同的客户 ID。
    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2016-10-14
    • 2021-01-24
    相关资源
    最近更新 更多