在 php 中获取 Stripe Checkout Session 中使用的促销代码名称

问题描述 投票:0回答:1

结账完成后,我想获取用户使用的促销代码(如果有)并将其添加到我的数据库中。

在我的 stripe webhook 中,我有以下代码。如果我删除促销代码,则订单将正确添加到我的数据库中。使用促销代码,什么都没有添加。

我已经阅读了文档,但我无法真正弄清楚我做错了什么?

stripe webhook 已成功交付并且未显示任何错误。我很感激任何帮助:)

switch ($event->type) {
case 'checkout.session.completed':
    $sessionMain = $event->data->object;
    $checkoutID = $sessionMain->id;

    try {
        $session = \Stripe\Checkout\Session::retrieve([
            'id' => $checkoutID,
            'expand' => ['total_details.breakdown'],
        ]);
      
        $promotionCode = $session->total_details->breakdown->discounts->discount->coupon->name;

        $sql = "INSERT INTO orders (customer_email, discount_code) VALUES (?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ss", $customer_email, $promotionCode);

        if ($stmt->execute()) {
            http_response_code(200);
        } else {
            error_log('Database insert failed: ' . $stmt->error);
            http_response_code(500);
        }

        $stmt->close();
    } catch (Exception $e) {
        // Log general errors
        error_log('General error: ' . $e->getMessage());
        http_response_code(500);
    }
php stripe-payments
1个回答
0
投票

discounts
这里是一个数组:https://docs.stripe.com/api/checkout/sessions/object#checkout_session_object-total_details-breakdown-discounts

所以你要么需要获取第一个索引,要么循环折扣。

© www.soinside.com 2019 - 2024. All rights reserved.