已处理条带,现在要做什么?

问题描述 投票:0回答:1

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

netlify上的整个付款过程和无服务器功能对我来说都是全新的,因此这可能不是一个难题。

我已遵循服务器文档和指南,并完成了具有Firebase身份验证,netlify部署和无服务器功能的应用程序,这使我能够处理条带化付款-现在我无法弄清楚下一步。我的数据条success_url指向包含成功消息的/pages/succes/index.js路由->尽管这里我需要来自数据条的一些数据响应,这使我能够展示购买的商品并附加产品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付款,并希望在成功页面上能够访问所购买的商品和用户信息。

stripe-payments nuxt.js serverless netlify netlify-function
1个回答
0
投票

[创建结帐会话并定义success_url时,可以将session_id={CHECKOUT_SESSION_ID}附加为模板,Stripe将在其中自动填写会话ID。参见https://stripe.com/docs/payments/checkout/accept-a-payment#create-checkout-session

根据您的情况,您会这样做:

success_url: `${process.env.URL}/success?session_id={CHECKOUT_SESION_ID}`,

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

© www.soinside.com 2019 - 2024. All rights reserved.