
本文介绍了如何在使用 Stripe 预构建结账集成时获取客户数据(特别是 Customer ID),以便将其存储在数据库中。由于预构建结账会自动处理客户创建,本文将重点介绍两种方法:在创建 Checkout Session 时传入已存在的 Customer ID,或者通过 Webhooks 监听 checkout.session.completed 事件来获取 Customer ID。
如果您的应用已经存在客户信息,您可以直接在创建 Checkout Session 时传入 Customer ID。这样,Stripe 就不会创建新的 Customer 对象,而是使用您提供的现有 Customer 对象。
以下是示例代码:
\Stripe\Stripe::setApiKey('sk_test_51J...........esLwtMQx7IXNxp00epljtC43');
header('Content-Type: application/json');
$YOUR_DOMAIN = 'mydomain.com';
// 假设您已经有了 Customer ID
$customer_id = 'cus_XXXXXXXXXXXXXXX';
$checkout_session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'price'=>"price_1Jt.....vImqj",
'quantity'=>1,
]],
'mode' => 'subscription',
'success_url' => $YOUR_DOMAIN . '/success.php',
'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
'customer' => $customer_id, // 传入 Customer ID
]);注意事项:
如果您的应用在 Checkout Session 创建之前没有客户信息,Stripe 会根据用户在结账过程中提供的信息自动创建 Customer 对象。 在这种情况下,您需要设置 Webhooks 来监听 checkout.session.completed 事件,并在该事件触发时获取 Customer ID。
步骤 1:配置 Webhook 端点
首先,您需要在您的服务器上创建一个 Webhook 端点,用于接收 Stripe 发送的事件。 您可以在 Stripe Dashboard 中配置 Webhook 端点 URL。
步骤 2:监听 checkout.session.completed 事件
在 Webhook 端点中,您需要验证 Stripe 发送的事件,并提取 checkout.session.completed 事件中的 Customer ID。
以下是一个 PHP 示例:
<?php
require_once 'vendor/autoload.php';
// Replace if using a different env file.
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->safeLoad();
\Stripe\Stripe::setApiKey($_ENV['STRIPE_SECRET_KEY']);
// Use a raw post body, since the Webhook endpoint expects raw content
$payload = @file_get_contents('php://input');
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
$endpoint_secret = $_ENV['STRIPE_WEBHOOK_SECRET'];
try {
$event = \Stripe\Webhook::constructEvent(
$payload, $sig_header, $endpoint_secret
);
} catch(\UnexpectedValueException $e) {
// Invalid payload
http_response_code(400);
exit();
} catch(\Stripe\Exception\SignatureVerificationException $e) {
// Invalid signature
http_response_code(400);
exit();
}
// Handle the checkout.session.completed event
if ($event->type == 'checkout.session.completed') {
$session = $event->data->object;
// 获取 Customer ID
$customer_id = $session->customer;
// 将 Customer ID 存储到数据库
// ...
http_response_code(200);
}注意事项:
总结:
通过以上两种方法,您可以方便地从 Stripe 预构建结账中获取客户数据,并将其集成到您的应用中。 选择哪种方法取决于您的具体需求和应用架构。 如果您的应用已经存在客户信息,建议使用第一种方法,直接在创建 Checkout Session 时传入 Customer ID。 如果您的应用在 Checkout Session 创建之前没有客户信息,则需要使用 Webhooks 监听 checkout.session.completed 事件来获取 Customer ID。
以上就是从 Stripe 预构建结账获取客户数据的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号