我正在尝试构建一个无服务器 NuxtJS 应用程序,利用 firebase 进行身份验证,使用 netlify 进行部署(和功能)并使用条带进行支付。
netlify 上的整个支付流程和无服务器功能对我来说都是全新的,所以这可能是一个棘手的问题。
我遵循了多个文档和指南,并完成了一个具有 firebase 身份验证、netlify 部署和无服务器功能的应用程序,使我能够处理条带支付——现在我只是想不出下一步。我的条带success_url
导致/pages/succes/index.js
一条包含成功消息的路线 -> 虽然在这里我需要来自 Stripe 的一些数据响应,使我能够展示购买的商品并将产品 ID 作为“购买的产品”条目附加到用户对象上在 firebase 中(产品本质上是对用户配置文件的升级)。
点击“购买产品”功能
async buyProduct(sku, qty) {
const data = {
sku: sku,
quantity: qty,
};
const response = await fetch('/.netlify/functions/create-checkout', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
}).then((res) => res.json());
console.log(response);
const stripe = await loadStripe(response.publishableKey);
const { error } = await stripe.redirectToCheckout({
sessionId: response.sessionId,
});
if (error) {
console.error(error);
}
}
创建结帐 Netlify 功能
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const inventory = require('./data/products.json');
exports.handler = async (event) => {
const { sku, quantity } = JSON.parse(event.body);
const product = inventory.find((p) => p.sku === sku);
const validatedQuantity = quantity > 0 && quantity < 11 ? quantity : 1;
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
billing_address_collection: 'auto',
shipping_address_collection: {
allowed_countries: ['US', 'CA'],
},
success_url: `${process.env.URL}/success`,
cancel_url: process.env.URL,
line_items: [
{
name: product.name,
description: product.description,
images: [product.image],
amount: product.amount,
currency: product.currency,
quantity: validatedQuantity,
},
],
});
return {
statusCode: 200,
body: JSON.stringify({
sessionId: session.id,
publishableKey: process.env.STRIPE_PUBLISHABLE_KEY,
}),
};
};
请让我知道您是否需要更多信息,或者没有意义的事情!
tldr; 我已经使用 Netlify 功能在无服务器应用程序中处理了 Stripe 支付,并希望在成功页面上能够访问购买的商品和用户信息。