结账完成后,我想获取用户使用的促销代码(如果有)并将其添加到我的数据库中。
在我的 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);
}
discounts
这里是一个数组:https://docs.stripe.com/api/checkout/sessions/object#checkout_session_object-total_details-breakdown-discounts
所以你要么需要获取第一个索引,要么循环折扣。