Как использовать облачную функцию Firebase для создания клиента Stripe - PullRequest
0 голосов
/ 28 июня 2018

Привет, ребята. Я новичок в Stripe, поэтому у меня возник вопрос о том, как создать клиента Stripe с помощью облачной функции Firebase. Я был прочитан через стандартную полоску интеграции и несколько учебных пособий. В этом примере показано, как настроить облачную функцию Firebase. Проблема заключается в том, что в примере создается клиент, когда обрабатывается сбор или вводится сумма. В документации Stripe говорится, что можно создать пользователя-клиента без информации о платеже. Поэтому я думаю, что всякий раз, когда я создаю пользователя для firebase, я запускаю облачную функцию для одновременного создания клиента полосы. Может ли кто-нибудь научить меня, как это сделать, а также показать мне, как обновить информацию о платеже, привязанную к этому клиенту. Большое спасибо.

1 Ответ

0 голосов
/ 29 июня 2018

Это на самом деле вопрос из двух частей, но я думаю, что это намного проще, чем вы думаете. Вот несколько советов о том, как решить проблему в машинописи.

Создать клиента

Чтобы создать клиента, через триггер create-auth выполните следующее:

export const syncUserToStripe = functions.auth.user().onCreate(async (data, context) => 
  const stripe = new Stripe(<stripe-token>); // Initialize the stripe SDK
  const stripeCustomer = await stripe.customers.create({
        email: data.email
  }); // Now you have the stripe customer. Maybe you would like to save the stripeCustomer Id to database/firestore
  console.log(`Done syncing firestore user with id: ${data.uid} to Stripe. The stripe id is ${stripeCustomer.id}`);
);

Обновить информацию об оплате

Плата за обновление - двухступенчатая ракета. Сначала вам нужно получить токен полосы у вашего клиента. Это легче всего получить с помощью чего-то вроде checkout.js из чередования (давайте вам надежно заберем кредитную карту). Реальная реализация довольно проста, но различна в зависимости от вашей клиентской среды. Важная часть заключается в том, что, получив токен, вы можете обновить информацию о платеже на своем бэкэнде, то есть облачную функцию https (вы вызываете эту функцию, когда у вас есть токен чередования). Важная часть кода может выглядеть следующим образом:

export async function updateStripePayment(req: Request, res: Response): Promise<any> {
 const stripe = new Stripe(<stripe-token>); // Initialize the stripe SDK
 // Extract the stripe token from the header
 const stripeToken = req.header('StripeToken');
 // You also need to get the stripe customer id. Here I will get it from the header, but maybe it makes more sense for you to read it from firestore/realtime db.
 const stripeCustomerId = req.header('stripeCustomerId');
 // Now you can create a new payment source
 const newSource = await stripeAPI.customers.createSource(stripeCustomerId, {source: stripeToken});
 // And you can now optionally set it as default
 await stripeAPI.customers.update(stripeCustomerId, {default_source: newSource.id});
 res.status(200).json(`Sucessfully updated stripe payment info`);
}

Общие положения

  • Подумайте, какую информацию вы хотели бы хранить в своем бэкэнде
  • При обновлении информации об оплате рассмотрите возможность использования экспресса в сочетании с промежуточным программным обеспечением для аутентификации / извлечения соответствующей информации (чтобы вы могли повторно использовать код)
  • Используйте try catch в вашем коде, чтобы ловить неожиданные ошибки
  • Не забудьте сделать все с помощью полосовых тестовых клавиш. Вы можете использовать среду конфигурации функций firebase, чтобы помочь с этим на сервере.
...