По умолчанию react-stripe-elements
требует использования предоставленных Stripe компонентов ввода, таких как CardElement
.Парсинг и проверка номеров кредитных карт, срока действия и т. Д. В CardElement
выполняется самой библиотекой, а сами необработанные входные значения (например, { cardNumber: 1234567890 }
) недоступны для остальной части приложения.Другими словами, нет способа получить доступ к cardNumber
реквизиту из CardElement
, и, например, вставить его в ваше хранилище резервов.Чтобы ответить на ваш первый вопрос, API не предоставляет средства для явной передачи вашего реквизита кредитной карты, например, cardNumber
, createToken
в этом случае.
Stripe заявляет это требование в своей документациина Stripe Elements: https://stripe.com/docs/recipes/elements-react#create-token
Вы можете использовать Stripe Elements, наши предварительно созданные компоненты пользовательского интерфейса, чтобы создать платежную форму, которая надежно собирает данные карты клиента , не требуя от васобрабатывать конфиденциальные данные карты.
Кроме того, проверьте эту проблему для получения дополнительной информации о том, почему Stripe требует, чтобы разработчики использовали свои предварительно созданные компоненты: https://github.com/stripe/react-stripe-elements/issues/19
Цитата от @ atty-stripe, одного из разработчиков react-stripe-elements
:
Чтобы поддерживать простейший уровень соответствия PCI, Elements отображает входные данные форм внутри iframes, в то же время обеспечивая полную настройку с помощью Stripe.js.API v3.Поэтому мы настоятельно рекомендуем использовать Stripe.js v3 и Elements для создания формы кредитной карты.