Stripe payments 条纹处理,现在怎么办?

Stripe payments 条纹处理,现在怎么办?,stripe-payments,nuxt.js,serverless,netlify,netlify-function,Stripe Payments,Nuxt.js,Serverless,Netlify,Netlify Function,我正在尝试构建一个无服务器的NuxtJS应用程序,使用firebase进行身份验证,netlify进行部署(和功能),stripe进行支付 netlify上的整个支付流程和无服务器功能对我来说都是全新的,所以这可能是个问题 我遵循了服务器文档和指南,完成了一个带有firebase身份验证、netlify部署和无服务器功能的应用程序,使我能够处理条带支付-现在我无法确定下一步。我的stripesuccess\u url导致了一个包含成功消息的/pages/succes/index.js路径->虽然

我正在尝试构建一个无服务器的NuxtJS应用程序,使用firebase进行身份验证,netlify进行部署(和功能),stripe进行支付

netlify上的整个支付流程和无服务器功能对我来说都是全新的,所以这可能是个问题

我遵循了服务器文档和指南,完成了一个带有firebase身份验证、netlify部署和无服务器功能的应用程序,使我能够处理条带支付-现在我无法确定下一步。我的stripe
success\u 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);
  }
}
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,
    }),
  };
};
创建签出网络功能

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);
  }
}
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,
    }),
  };
};
const stripe=require('stripe')(process.env.stripe\u SECRET\u KEY);
const inventory=require('./data/products.json');
exports.handler=异步(事件)=>{
const{sku,quantity}=JSON.parse(event.body);
常量产品=库存。查找((p)=>p.sku==sku);
const validatedQuantity=数量>0和数量<11?数量:1;
const session=wait stripe.checkout.sessions.create({
付款方式类型:[“卡”],
账单地址收款:“自动”,
装运地址和收集地址:{
允许的国家:[“美国”、“加拿大”],
},
success\u url:`${process.env.url}/success`,
取消url:process.env.url,
行项目:[
{
名称:product.name,
description:product.description,
图片:[product.image],
金额:product.amount,
货币:product.currency,
数量:已验证的数量,
},
],
});
返回{
状态代码:200,
正文:JSON.stringify({
sessionId:session.id,
publishableKey:process.env.STRIPE\u publishableKey,
}),
};
};
如果您需要更多信息,或者有什么不合理的地方,请告诉我!


tldr;我已经使用Netlify功能在一个无服务器应用程序中处理了条带支付,并且希望在成功页面上能够访问购买的物品和用户信息。

当您创建结帐会话并定义
成功url
时,您可以附加
会话id={Checkout\u会话id}
作为一个模板,Stripe将自动填充会话ID。请参阅

在你的情况下,你应该:

success\u url:`${process.env.url}/success?session\u id={CHECKOUT\u session\u id}',

然后,当您的用户被重定向到成功URL时,您可以使用会话ID检索会话并执行任何购买操作