Выделение специфических функций облачных функций Firebase, которые отличаются от других реализаций серверной части Node.JS

Сценарии оплаты, описанные в официальной документации Stripe API, а также в приведенном примере кода используют реализацию Express Server JavaScript Node.JS для внутреннего RESTful-сервера. Хотя шаги, описанные в документации, в целом аналогичны для всех реализаций фреймворка JavaScript, однако есть некоторые особенности, которые вам необходимо учитывать, если ваша внутренняя инфраструктура размещена на Firebase как облачные функции Node.JS JavaScript (или TypeScript).

В этой статье я поделюсь с вами своими мыслями о том, как настроить Stripe API на бэкэнде Firebase в качестве облачных функций Node.JS.

Обзор

В этой статье мы внимательно рассмотрим шаги, необходимые для реализации базовой интеграции iOS с использованием предварительно созданных классов пользовательского интерфейса iOS SDK STPPaymentOptionsViewController и STPAddCardViewController. В этой статье будут рассмотрены все шаги, необходимые для отображения пользовательского интерфейса встроенного метода оплаты Strip в приложении iOS.

После прочтения этой статьи вы сможете отобразить пользовательский интерфейс метода оплаты Strip в своем приложении.

Настроить облачную функцию Firebase

Первый шаг, который нам нужно выполнить, - это добавить новый проект Firebase из консоли Firebase, инициализировать среду Node.js и инициализировать Firebase SDK для облачных функций из среды Node.js, как подробно описано в официальной документации Firebase. ». В конце этого шага у вас должен быть открыт файл index.js (или index.ts) в вашей среде разработки JavaScript, например в Visual Studio Code.

Чтобы реализовать интерфейс Stripe REST API, мы будем использовать функцию Firebase HTTPS Callable в облачных функциях.

Функция HTTPS Callable functions.https.onCall обеспечивает способ прямого вызова функции из приложения iOS вместо привязки выполнения функции к хранилищу данных или событиям базы данных в реальном времени.

Чтобы включить функцию Firebase HTTPS Callable с оплатой Stripe, выполните следующие дополнительные шаги.

  • Настройте клиентскую среду, добавив облачные функции в свой podfile.

pod ‘Firebase/Functions’

Сохраните файл и запустите

pod install

  • Настройте конфигурацию среды для Firebase. Мы будем использовать конфигурацию среды для хранения публикуемых и секретных ключей Stripe. Конфигурация среды в Firebase Node.js отличается от других реализаций JavaScript. Для Firebase Node.js вам не нужно создавать .env файл, вместо этого вы сохраняете конфигурации среды в json-совместимом .env.json файле.
  • Создайте файл .env.json в корневом каталоге проекта Node.js и добавьте следующий код JSON. Оставьте пока записи “key” пустыми. Вы заполните их на следующих шагах ниже.
  • Добавьте следующий код в свой файл JavaScript index.js (или index.ts). Этот код будет использоваться для доступа к вашим ключам, сохраненным в файле .env.json, из API.

Настроить среду Stripe

Перед тем, как начать этот шаг, убедитесь, что вы зарегистрировались и активировали бесплатную учетную запись Stripe Account.

  • Настройте Stripe на стороне сервера, выполнив следующую команду из окна терминала Node.js npm install --save stripe\
  • Инициализируйте Stripe iOS SDK на стороне клиента через CocoaPods или Carthage. Добавьте pod ‘Stripe’ в существующий подфайл
  • Выполните следующую команду из окна клиентского терминала pod install
  • Получите доступ к панели инструментов Stripe и получите доступ к тестовым ключам API (публикуемым и секретным ключам)

  • Добавьте оба ключа в .env.json файл, созданный выше
  • Инициализируйте Stripe, добавив этот код в файл Index.js

  • Это stripesecretkeys необходимо передать клиентскому приложению iOS для инициализации настройки полосы перед тем, как можно будет инициировать любой запрос API. Чтобы передать этот ключ клиенту, нам нужно создать функцию Firebase HTTPS Callable.
  • Создайте следующую функцию в своем файле Index.js (Index.ts)
  • Приведенный выше код определяет вызываемую функцию HTTPS getStripeKey, которую можно вызвать доступом из приложения iOS. Функция возвращает запись stripsecretkeys.key в файле среды .env.json.
  • В своем клиентском приложении для iOS вам необходимо сначала инициализировать настройку Stripe с этим секретным ключом, прежде чем выполнять какие-либо вызовы запросов API. Первым вызовом, который вам нужно инициировать из приложения iOS, будет запрос секретного ключа путем вызова указанной выше функции.
  • Чтобы вызвать указанную выше функцию, введите следующий код в свое приложение iOS, желательно в момент запуска приложения в классе AppDelegate.
  • Чтобы вызвать облачную функцию HTTPS Callable, вам необходимо вызвать функцию functions.httpsCallable(“getStripePublishablekey”).call и обработать блок завершения.

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

Следующим шагом в настройке полосовой оплаты является создание нового клиента полосы. рекомендуется создавать нового клиента при создании нового пользователя в вашем клиентском приложении.

Чтобы обеспечить функциональность для создания нового клиента, мы сначала создаем новую функцию HTTPS Callable с именем createStripCustomer в серверной среде Node.js. Для этой функции нам нужно передать некоторые параметры для нового клиента (имя, адрес электронной почты и т. Д.) Из кода клиента в код сервера Node.js. для этого мы передаем необходимые данные через data object в новой определенной сигнатуре функции.

  • Добавьте следующий код в файл index.js (.ts)
  • В нашем примере выше объект данных инициализируется двумя параметрами: full_name и email. (инициализация выполняется на стороне клиента и будет рассмотрено позже). Чтобы создать нового клиента полосы, мы передаем эти две переменные методу stripe.customers.create пакета SDK полосы. Этот вызов должен быть async call и добавлено await keyword. Вам также нужно будет добавить async keyword в подпись заголовка основной функции. Когда клиент будет успешно создан, новый идентификатор клиента будет возвращен коду вызывающего клиента.
  • Чтобы вызвать эту функцию, создайте следующий быстрый код в своем клиентском приложении iOS, желательно в режиме входа или настройки.
  • Рекомендуется сохранить возвращенный идентификатор клиента из полосы в локальное хранилище данных приложения. Из приведенного выше кода возвращенный customer_id сохраняется в stripe_customer_id property объекта Profile object, а затем объект сохраняется в документе Firestore.

Настроить эфемерный ключ

По соображениям безопасности доступ к Stripe Customer API из клиентской среды невозможен. Вместо этого stripe обеспечивает создание недолговечного ключа API, известного как эфемерный ключ, с ограниченным доступом к API клиента. Это ключ, необходимый для создания STPPaymentContext , используемого для инициирования платежных операций на полосе.

  • Чтобы настроить эфемерный ключ, вам необходимо сначала создать еще одну облачную функцию Node.js HTTPS Callable на стороне сервера.
  • Функция getStripeEphemeralKey возвращает вызовы класса API stripe.ephemeralKeys.create и возвращает созданный ключ обратно клиентскому коду.
  • Со стороны клиента ваше приложение должно соответствовать STPCustomerEphemeralKeyProvider protocol и реализовывать свой createCustomerKeyWithAPIVersion метод. Этот метод запрашивает эфемерный ключ у функции HTTPS Callable, определенной на стороне сервера выше.

Настройте STPCustomerContext и STPPaymentContext

  • Затем инициализируйте STPCustomerContext object с помощью эфемерного ключа, созданного на предыдущем шаге. После настройки используйте контекст клиента для инициализации STPPaymentContext object.
  • Вам нужно будет соответствовать STPPaymentContextDelegate и назначить его делегату контекста платежа и hostViewController proeperties. Обычно это делается в контроллере представления оформления заказа.
  • Вызовите метод self.paymentContext.pushPaymentOptionsViewController(), чтобы отобразить страницу с вариантами оплаты полосой.

использованная литература

Заключение

Спасибо, что нашли время прочитать мою статью. Надеюсь, вам всем понравилась эта статья. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или предложения.