Как я могу передать пользовательские данные в Stripe webhook?

#stripe-payments

Вопрос:

Я создаю и обрабатываю платеж в полоску, подобный этому:

     // Create payment intent
    const { data } = await axios.post('/api/payments/get-payment-intent', { slug: post.slug })

    // Use payment intent to charge the card
    const result = await stripe.confirmCardPayment(data.paymentIntentSecert, {
      payment_method: {
        card: elements.getElement(CardElement),
      },
    })
 

Чтобы иметь возможность выполнить заказ, мне нужно иметь возможность передать некоторые данные ( id о продукте и username покупателе) на веб-крючок, который выполняется после успешного завершения оплаты ( payment_intent.succeeded событие).

Как я могу это сделать?

Я попытался добавить metadata ключ к confirmCardPayment() подобному:

     const result = await stripe.confirmCardPayment(data.paymentIntentSecert, {
      payment_method: {
        card: elements.getElement(CardElement),
        metadata: {
          username: user.username,
          postId: post.id
        }
      },
    })
 

Но метаданные не отображаются на объекте, полученном веб-крючком.

Ответ №1:

Невозможно обновить метаданные PaymentIntent с помощью confirmCardPayment() .

Сначала вы захотите передать имя пользователя и почтовый идентификатор на свой сервер.

Пример

 const { data } = await axios.post('/api/payments/get-payment-intent', { 
    username:user.username, 
    postId: post.Id 
});
 

И затем создайте запрос платежа с метаданными.

Node.js пример создания платежного документа

 const paymentIntent = await stripe.paymentIntents.create({
  amount: 2000,
  currency: 'usd',
  metadata: {
      username,
      postId
  },
});