Выделение специфических функций облачных функций 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
возвращает вызовы класса APIstripe.ephemeralKeys.create
и возвращает созданный ключ обратно клиентскому коду. - Со стороны клиента ваше приложение должно соответствовать
STPCustomerEphemeralKeyProvider
protocol и реализовывать свойcreateCustomerKeyWithAPIVersion
метод. Этот метод запрашивает эфемерный ключ у функции HTTPS Callable, определенной на стороне сервера выше.
Настройте STPCustomerContext и STPPaymentContext
- Затем инициализируйте
STPCustomerContext
object с помощью эфемерного ключа, созданного на предыдущем шаге. После настройки используйте контекст клиента для инициализацииSTPPaymentContext
object. - Вам нужно будет соответствовать
STPPaymentContextDelegate
и назначить его делегату контекста платежа иhostViewController
proeperties. Обычно это делается в контроллере представления оформления заказа.
- Вызовите метод
self.paymentContext.pushPaymentOptionsViewController()
, чтобы отобразить страницу с вариантами оплаты полосой.
использованная литература
Заключение
Спасибо, что нашли время прочитать мою статью. Надеюсь, вам всем понравилась эта статья. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или предложения.