Как добавить Stripe Checkout на кастомный PHP-сайт (без плагинов)
Stripe — самый чистый из доступных платёжных API, и подключение его напрямую к PHP означает отсутствие ежемесячных платежей за SaaS, отсутствие нагромождения WooCommerce и отсутствие комиссии Shopify за транзакции. Далее — та самая реализация, которая работает в реальных магазинах клиентов BuiltToWinWeb: чистый PHP, официальный Stripe SDK, безопасные вебхуки и автоматические подтверждения по электронной почте. Вы увидите, как складываются части — сессия оплаты, редирект, проверка вебхука, исполнение заказа — чтобы принимать реальные платежи, не отдавая долю никакой платформе. Здесь всё — продакшн-код, а не одноразовая демонстрация.
Почему нативный PHP + Stripe превосходит любой конструктор страниц
Shopify берёт от 0,5 до 2% с транзакции сверх комиссии Stripe. WooCommerce добавляет 14+ зависимостей плагинов, замедляющих LCP страницы оформления заказа до 3,8 с.
- Ноль платформенных транзакционных сборов – только 2,9% + 30¢ от Stripe
- Lighthouse-оценка страницы оформления: 98 против типичных 61 у Shopify
- Полный контроль над вебхуками – кастомное выполнение, инвентарь, email
- Никакой ежемесячной платы за подписку на e-commerce-платформу
- Владеете кодом, хоститесь где угодно, мигрируете свободно
Шаг 1 — Установка Stripe PHP SDK
Composer — наиболее чистый подход.
composer require stripe/stripe-php
Затем загрузите его в начале вашего checkout-скрипта:
require_once __DIR__ . '/vendor/autoload.php';
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));
Шаг 2 — Создание сессии Checkout (на стороне сервера)
Никогда не размещайте секретный ключ в браузере. Создайте серверный endpoint, на который делает POST фронтенд:
<?php
$session = \Stripe\Checkout\Session::create(['payment_method_types'=>['card'],'line_items'=>[['price_data'=>['currency'=>'usd','unit_amount'=>300000,'product_data'=>['name'=>'Business Pro Website']],'quantity'=>1]],'mode'=>'payment','success_url'=>'https://yoursite.com/success','cancel_url'=>'https://yoursite.com/pricing']);
echo json_encode(['url'=>$session->url]);
Шаг 3 — Перенаправление пользователя с фронтенда
Простой fetch-вызов на кнопке страницы с ценами:
document.getElementById('buy-btn').addEventListener('click', async () => {
const res = await fetch('/create-checkout-session.php', {method:'POST'});
const data = await res.json();
window.location.href = data.url;
});
Шаг 4 — Обработка вебхуков (исполнение заказа)
Stripe отправляет POST на ваш вебхук-endpoint при успешной оплате.
<?php
$event = \Stripe\Webhook::constructEvent(file_get_contents('php://input'), $_SERVER['HTTP_STRIPE_SIGNATURE'], getenv('STRIPE_WEBHOOK_SECRET'));
if ($event->type === 'checkout.session.completed') { fulfill_order($event->data->object); }
http_response_code(200);
Зарегистрируйте URL вебхука в дашборде Stripe: Разработчики → Вебхуки.
Шаг 5 — Отправка подтверждающего письма через PHPMailer
Внутри вашей функции `fulfill_order()` получите email клиента из сессии:
function fulfill_order($session) {
$email = $session->customer_details->email;
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
$mail->setFrom('[email protected]', 'Ваша Компания');
$mail->addAddress($email);
$mail->Subject = 'Оплата получена — Спасибо!';
$mail->Body = 'Ваш заказ подтверждён.';
$mail->send();
}
Сравнение платформ: индивидуальный PHP против Shopify и WooCommerce
Реальное влияние на бизнес
Для магазина с оборотом $50 000/мес. 2,9% + 30¢ Stripe неизбежны. Но дополнительный сбор платформы Shopify в 0,5–2% стоит от $250 до $1 000 дополнительно в месяц.
- Shopify Advanced ($399/мес.) + 0,5% от $50k = $649/мес. платформенных расходов
- Кастомный PHP + Stripe = $0/мес. платформенных расходов
- Точка безубыточности для магазина за $8 000: менее 9 месяцев
- Страницы оформления загружаются в 3 раза быстрее = заметное снижение брошенных корзин
Расчёт прост: если вы обрабатываете более $15 000/мес., кастомный PHP-магазин окупается менее чем за год.
Контрольный список безопасности
- Храните ключи в переменных окружения – никогда не прописывайте в PHP-файлах
- Всегда проверяйте подписи вебхуков Stripe через `constructEvent()`
- Используйте HTTPS везде – Stripe требует это
- Идемпотентность: проверяйте, не существует ли заказ уже, до его обработки
- Ограничьте частоту запросов к `/create-checkout-session.php` (10 запросов/час на IP)
Часто задаваемые вопросы
Нужен ли Composer для использования Stripe с PHP?
Composer рекомендуется, но не обязателен. Можно загрузить SDK как ZIP и подключить вручную через require_once.
Безопасно ли обрабатывать платежи без платформы вроде Shopify?
Да. Stripe сертифицирован по PCI-DSS уровня 1. Ваш сервер никогда не обрабатывает сырые номера карт.
Как тестировать Stripe без списания с реальных карт?
Используйте тестовый режим Stripe с префиксом sk_test_. Тестовая карта: 4242 4242 4242 4242 с любым будущим сроком.
Можно ли добавить подписки с этим подходом?
Да. Измените режим сессии Checkout с "payment" на "subscription" и передайте повторяющийся ID цены.
Хотите кастомный Stripe-магазин, построенный для вас?
BuiltToWinWeb создаёт кастомные PHP e-commerce-магазины с нативной интеграцией Stripe, оценками Lighthouse 98+ и нулевыми ежемесячными платформенными сборами.
Магазины обычно сдаются за 3–4 недели. Ответ гарантирован в течение 24 часов.
Бенчмарк-данные из контролируемых тестов на идентичном хостинге Hostinger VPS.