Я надеялся, что кто-то может указать мне правильное направление, чтобы я мог избавиться от компонента loadStripe и использовать что-то вроде пакета npm или решения React Specifi c
Если вы ищете пакет npm, Stripe недавно выпустил собственную официальную библиотеку для загрузки Stripe. js, которую вы можете найти здесь:
https://www.npmjs.com/package/@stripe / stripe - js
На самом деле, @stripe/stripe-js
работает во многом так же, как пользовательская функция loadStripe
, которую вы сейчас имеете, как вы можете видеть здесь:
https://github.com/stripe/stripe-js/blob/master/src/shared.ts#L7 -L24
Должен заметить, что добавление скриптов в тело совершенно нормально, используя JavaScript, если вы хорошо разбираетесь в том, как скрипт загружается (то есть через asyn c обещаний).
При этом использование вашей loadStripe
или официальной функции Stripe (@stripe/stripe-js
) не является обязательным требованием. Контроль как и когда вводить Stripe. js в DOM очень полезен при рендеринге на стороне сервера (0). Но если это не то, что вы делаете, вы можете просто включить Stripe. js вручную (1) в <head>
вашего html следующим образом:
<html>
<head>
<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>
То, что я пытаюсь сделать, - это создать собственную форму полосы в ReactJS, я не хочу использовать response-stripe-elements
Если вы используете React v16.8 или выше, Официальная рекомендация будет использовать нашу новую библиотеку React, которую вы можете найти здесь:
https://www.npmjs.com/package/@stripe / Reaction-Stripe- js
Но если ваше сердце если вы не используете @stripe/react-stripe-js
или более старую библиотеку react-stripe-elements
, то определенно можно выполнить собственную интеграцию. Вот очень простой пример того, как вы могли бы сделать это:
https://codesandbox.io/s/eager-cdn-krumt
Я включаю Stripe. js здесь: https://codesandbox.io/s/eager-cdn-krumt?file= / public / index. html: 1062-1116
И интегрировать его в компонент здесь: https://codesandbox.io/s/eager-cdn-krumt?file= / src / Checkout. js
Обязательно замените pk_test_xyz
своим собственным публикуемым ключом перед тестированием.
Надеюсь, это поможет!
[0] https://alligator.io/react/server-side-rendering/
[1] https://stripe.com/docs/js/including