我想在支付 Stripe 后收到客户电子邮件。 我可以在条纹中看到与使用我的帐户付款相关的信息。 但我无法在后端使用 API 获取客户电子邮件。
这是我的后端代码。
const stripe = require('stripe')('sk_test_********');
const express = require('express');
const cors = require('cors');
const app = express();
const YOUR_DOMAIN = 'http://localhost:3000/buy';
app.use(cors())
app.use(express.static("public"));
app.use(express.json());
app.post('/create-checkout-session', async (req, res) => {
const priceID = 'price_******';
const session = await stripe.checkout.sessions.create({
line_items: [
{
price: priceID,
quantity: 1,
},
],
mode: 'payment',
success_url: `${YOUR_DOMAIN}?success=true`,
cancel_url: `${YOUR_DOMAIN}?canceled=true`,
});
const sessionId = session.id;
if(sessionId){
//-------- First try --------//
const customers = await stripe.customers.list({});
customers.data.forEach(customer => {
console.log(customer.email);
});
const email = session.customer_email;
//-------- Second try --------//
stripe.charges.list({ limit: 10 }, (err, charges) => {
if (err) {
console.error('Error retrieving charges:', err);
return;
}
charges.data.forEach(charge => {
const customerEmail = charge.receipt_email;
console.log('Customer Email:', customerEmail);
});
});
res.send({id:session.id});
}
});
app.listen(4242, () => console.log('Running on port 4242'));
但我只能看到空值,而不是客户电子邮件。
您在这里不会有任何客户信息,因为您刚刚创建了结帐会话,并且没有人为其付款。
需要在 2 个单独的步骤中创建和支付 CheckoutSession。 (参见Stripe文档)只有付款后,您才能收到webhook事件checkout.session.completed并能够从中提取客户信息。