如何从 Stripe CLI 发送客户电子邮件?

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

我正在使用 Stripe Checkout。用户付款后,我需要将他的付款信息保存在我的数据库中。为此,我使用 Stripe 的 webhook。

由于我无法在测试模式下使用 webhook,因此我必须安装 Stripe CLI。问题是我无法在有效负载中发送客户电子邮件。因此,在开发过程中我无法将用户付款信息保存在数据库中。

我使用的cli命令是:

stripe trigger invoice.payment_succeeded

webhook 调用的服务器路由如下所示:

const buy = async (req: Request, res: IResponse): Promise<IResponse> => {
  try {
    const signature = req.headers["stripe-signature"];
    const event = stripe.webhooks.constructEvent(
      req.rawBody,
      signature,
     process.env.STRIPE_WEBHOOK_SECRET
    );
    if (event.type === "payment_intent.succeeded") {
      const { id, amount_paid, customer_email } = event.data.object as Invoice;
      const serialNumber = await PaymentControler.generateUniqueSerialNumber();
      await PaymentControler.updateUserMembership(
        customer_email,
        id,
        amount_paid,
        serialNumber
      );
      return res.sendStatus(200);
    }
    res.status(500).send("Error processing payment");
  } catch (err) {
    return res.status(500).send("Error processing payment");
  }
};

以下是客户端向 Stripe Checkout 发送请求的方式:

  const checkoutOptions: RedirectToCheckoutOptions = {
    lineItems: [
      {
        price: process.env.STRIPE_APP_PRICE,
        quantity: 1,
      },
    ],
    mode: "payment",
    successUrl: `${location}?success=true&invoiceID={CHECKOUT_SESSION_ID}`,
    cancelUrl: `${location}?success=false`,
    submitType: "pay",
    customerEmail: user?.email,
  };

如何从 Stripe CLI 发送客户电子邮件?

另外,您能否向我确认我是否正确访问了

id
中的属性:
amount_paid
customer_email
event.data.object
(它们现在不存在,所以我想确保生产中就可以了)?

stripe-payments
3个回答
1
投票

invoice.payment_succeeded
事件与结帐本身没有任何关系。您可能想要触发的事件是
checkout.session.completed
并使用
--add
标志来自定义客户电子邮件参数

例如:

stripe trigger checkout.session.completed --add checkout_session:customer_email="[email protected]"

这应该允许您测试您的代码并确保它按预期工作。


0
投票

该标志不会将电子邮件作为参数。但是,您可以进入 Stripe 仪表板并查看您要使用的电子邮件的

customerId
。复制该 id 并将其传递到您的标志中,如下所示:

stripe trigger checkout.session.completed --add checkout_session:customer="customerId"

这将成功触发事件。


0
投票

这适用于生成客户对象的任何事件:

stripe trigger customer.subscription.created --add customer:email="[email protected]"

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