Уроки курса
1 Основы синтаксиса PHP 8
60 мин
2 Функции и управляющие конструкции
60 мин
3 Объектно-ориентированное программирование на PHP
60 мин
4 Наследование, интерфейсы и полиморфизм
60 мин
5 Основы баз данных MySQL и работа через PDO
60 мин
6 Архитектурный паттерн MVC
60 мин
7 Введение в Laravel и настройка окружения
60 мин
8 Маршрутизация и контроллеры в Laravel
60 мин
9 Шаблонизатор Blade и создание интерфейса
60 мин
10 Миграции баз данных и Eloquent ORM
60 мин
11 Связи моделей в Eloquent — Настройка связей 'один …
60 мин
12 Аутентификация и защита маршрутов
60 мин
13 Разработка каталога товаров и категорий
60 мин
14 Реализация корзины покупок через сессии
60 мин
15 Оформление заказа и транзакции базы данных
60 мин
16 Интеграция платежной системы Stripe
60 мин
17 Интеграция платежной системы Vipps
60 мин
18 Разработка панели администратора
60 мин
19 Оптимизация и подготовка к production
60 мин
20 Деплой Laravel-приложения на сервер
60 мин
21 Основы PHP 8: Синтаксис, переменные и управляющие конструкции
60 мин
22 Функции и массивы в PHP 8
60 мин
23 Объектно-ориентированное программирование: Классы и объекты
60 мин
24 Продвинутое ООП: Наследование, интерфейсы и полиморфизм
60 мин
25 Основы баз данных: Проектирование БД и работа с …
60 мин
26 Взаимодействие PHP с MySQL через PDO
60 мин
27 Архитектура MVC и введение в фреймворк Laravel
60 мин
28 Маршрутизация и контроллеры в Laravel
60 мин
29 Шаблонизатор Blade: Создание пользовательского интерфейса
60 мин
30 Миграции и Eloquent ORM: Создание таблиц товаров
60 мин
31 Связи в Eloquent ORM: Отношения между моделями
60 мин
32 Аутентификация и авторизация пользователей
60 мин
33 Разработка каталога товаров: Вывод, фильтрация и пагинация
60 мин
34 Реализация корзины покупок с использованием сессий
60 мин
35 Оформление заказа: Работа с формами и валидация
60 мин
36 Транзакции базы данных: Сохранение заказа
60 мин
37 Интеграция платежной системы Stripe
60 мин
38 Интеграция платежной системы Vipps
60 мин
39 Создание панели администратора
60 мин
40 Подготовка к production и деплой приложения
60 мин
41 Основы PHP 8 и синтаксис
60 мин
42 Объектно-ориентированное программирование на PHP
60 мин
43 Продвинутое ООП и интерфейсы
60 мин
44 Основы баз данных и MySQL
60 мин
45 Архитектурный паттерн MVC
60 мин
46 Введение в Laravel и маршрутизация
60 мин
47 Шаблонизатор Blade и верстка интерфейса
60 мин
48 Миграции и структура базы данных
60 мин
49 Eloquent ORM и модели
60 мин
50 Отношения в Eloquent ORM
60 мин
51 Авторизация и защита маршрутов
60 мин
52 Создание каталога товаров
60 мин
53 Реализация корзины покупок
60 мин
54 Оформление заказа и транзакции БД
60 мин
55 Интеграция платежной системы Stripe
60 мин
56 Интеграция платежной системы Vipps
60 мин
57 Панель администратора: управление товарами
60 мин
58 Панель администратора: управление заказами
60 мин
59 Подготовка к production и деплой
60 мин
60 Запуск и тестирование готового интернет-магазина
60 мин

Интеграция платежной системы Stripe

Подключение Stripe Checkout Session для безопасной обработки платежей банковскими картами. Изучение принципов работы платежных шлюзов.

Прогресс урока: 0%

Введение в платежные шлюзы

На предыдущих этапах мы реализовали корзину и сохранение заказа в базу данных. Теперь наш интернет-магазин должен научиться принимать реальные деньги. Для этого используются платежные шлюзы (Payment Gateways) — сервисы, которые выступают посредниками между вашим сайтом, клиентом и банком.

Одним из самых популярных и удобных для разработчиков шлюзов является Stripe. В этом уроке мы применим подход Direct Instruction: шаг за шагом разберем процесс создания платежной сессии.

Важное правило безопасности (PCI Compliance): Мы никогда не должны сохранять номера банковских карт на нашем сервере. Это требует сложной сертификации. Вместо этого мы будем использовать Stripe Checkout — специальную страницу оплаты, размещенную на защищенных серверах Stripe. Пользователь переходит туда, вводит данные карты, а Stripe возвращает нас обратно с результатом.

bash
composer require stripe/stripe-php

# Затем добавьте ключи в файл .env:
STRIPE_KEY=pk_test_вашкод...
STRIPE_SECRET=sk_test_вашкод...

Настройка контроллера оплаты

Согласно методологии Chunking, разобьем процесс на части. Первая часть — подготовка данных корзины в формат, который понимает Stripe. Stripe ожидает массив line_items, где цены указываются в центах (или минимальных единицах валюты). То есть 10 долларов = 1000 центов. Это делается для избежания ошибок округления при работе с числами с плавающей точкой (float).

Типичная ошибка новичков: передача цены как 10.50. Stripe выдаст ошибку. Нужно передавать 1050.

php
use Illuminate\Support\Facades\DB;
use App\Models\Order;
use App\Models\OrderItem;

public function processPayment() {
    \Stripe\Stripe::setApiKey(env('STRIPE_SECRET'));

    // Создаем сессию оплаты
    $checkout_session = \Stripe\Checkout\Session::create([
        'line_items' => [[
            'price_data' => [
                'currency' => 'usd',
                'product_data' => ['name' => 'Test Product'],
                'unit_amount' => 2000, // 20.00 USD
            ],
            'quantity' => 1,
        ]],
        'mode' => 'payment',
        'success_url' => route('checkout.success'),
        'cancel_url' => route('checkout.cancel'),
    ]);

    // Перенаправляем пользователя на страницу Stripe
    return redirect($checkout_session->url);
}

Разбор кода Stripe Session

Давайте подробно разберем массив конфигурации:

  • line_items — массив товаров. В реальном проекте вы пройдетесь циклом foreach по вашей сессионной корзине, формируя этот массив.
  • price_data — информация о цене и валюте.
  • mode => 'payment' — означает разовый платеж (в отличие от 'subscription' для подписок).
  • success_url и cancel_url — маршруты нашего приложения, куда Stripe перенаправит пользователя после успешной или отмененной оплаты соответственно.

После возврата на success_url статус заказа в базе данных обновляется с 'pending' на 'paid'.