Как подключить платёжные сервисы (ЮKassa или Stripe) к React-приложению?

Подключение платёжных сервисов к React-приложению требует работы как на фронтенде, так и на бэкенде. Рассмотрим оба варианта.

## Подключение Stripe к React

**1. Установка зависимостей**

npm install @stripe/stripe-js @stripe/react-stripe-js

**2. Настройка провайдера**
Оберните приложение в `Elements` провайдер:
jsx
import { loadStripe } from ‘@stripe/stripe-js’;
import { Elements } from ‘@stripe/react-stripe-js’;

const stripePromise = loadStripe(‘pk_test_ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ’);

function App() {
return (

);
}

**3. Создание формы оплаты**
Используйте хук `useStripe` и компонент `CardElement`:
jsx
import { useStripe, useElements, CardElement } from ‘@stripe/react-stripe-js’;

function CheckoutForm() {
const stripe = useStripe();
const elements = useElements();

const handleSubmit = async (e) => {
e.preventDefault();
const { paymentMethod } = await stripe.createPaymentMethod({
type: ‘card’,
card: elements.getElement(CardElement),
});
// Отправьте paymentMethod.id на бэкенд для создания платежа
};

return (

);
}

**4. Бэкенд (Node.js)**
На сервере создайте PaymentIntent:
js
const stripe = require(‘stripe’)(‘sk_test_СЕКРЕТНЫЙ_КЛЮЧ’);
app.post(‘/create-payment-intent’, async (req, res) => {
const paymentIntent = await stripe.paymentIntents.create({
amount: 1000, // в центах
currency: ‘usd’,
});
res.json({ clientSecret: paymentIntent.client_secret });
});

## Подключение ЮKassa к React

ЮKassa не имеет официального React SDK, но предоставляет JavaScript-виджет.

**1. Подключение виджета через CDN**
Добавьте в `index.html`:
html

**2. Создание компонента оплаты**
jsx
import { useEffect } from ‘react’;

function YookassaCheckout({ confirmationToken }) {
useEffect(() => {
const checkout = new window.YooMoneyCheckoutWidget({
confirmation_token: confirmationToken,
return_url: ‘https://ваш-сайт.ru/success’,
error_callback: (error) => console.error(error),
});
checkout.render(‘payment-form’);
return () => checkout.destroy();
}, [confirmationToken]);

return

;
}

**3. Бэкенд для получения токена**
Через API ЮKassa создайте платёж и верните `confirmation.confirmation_token` на фронтенд.

## Важные рекомендации по безопасности

— **Никогда** не храните секретные ключи на фронтенде — только на сервере.
— Используйте HTTPS для всех запросов.
— Настройте webhook для отслеживания статуса платежей.
— Валидируйте суммы на бэкенде, а не на клиенте.
— Для Stripe используйте `PaymentIntent` вместо устаревшего `Charge`.

Оба сервиса предоставляют тестовые ключи и тестовые карты для отладки без реальных транзакций.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.