- Собирать несколько товаров в одну корзину
- Оплачивать все товары одним платежом
- Управлять составом корзины до момента оплаты
Основные концепции
Модель Корзины
Корзина представляет собой контейнер для намерений со следующими основными характеристиками: Статусы корзины:open— корзина открыта для измененийclosed— корзина закрыта (после оплаты или истечения времени жизненного цикла)delivered— товары доставленыfailed— ошибка при обработке
created— корзина создана, оплата не инициированаpending— выставлен счет, ожидается оплатаpaid— оплата успешно завершенаrejected— оплата отклоненаcanceled— оплата отмененаrefunded— средства возвращеныexpired— время на оплату истекло
Особенности намерений в корзине
-
Запрет индивидуальной оплаты — намерения, связанные с корзиной, не могут проходить через стандартный процесс чекаута. При попытке вызова
POST /(gold|items|gear)/{id}/checkoutдля такого намерения возвращается ошибка. - Общий терминал оплаты — все намерения в одной корзине должны использовать одинаковый платежный терминал. Это требование обеспечивает возможность создания единого счета.
-
Синхронизация статусов — статусы намерений синхронизируются со статусом корзины:
- при оплате корзины все намерения помечаются как оплаченные;
- при отмене или истечении времени жизни корзины все намерения получают соответствующий статус;
- при изменении статуса корзины рассылаются оповещения по каждому намерению.
Алгоритм работы
1
Создание намерения
При создании намерения проверяется аккаунт геймера на возможность пополнения и доступность товара. В ответе на запрос содержится статус проверки намерения и его идентификатор.
2
Создание корзины
Корзина может быть создана сразу при первом посещении пользователем сайта. Рекомендуется создавать корзину в момент, когда она становится необходимой.Подробнее в соответствующем методе создания корзины.
3
Добавление намерения в корзину
Используя
ID корзины и намерения, полученные на предыдущих шагах, воспользуйтесь соответствующим методом добавления намерения, чтобы поместить намерение в корзину.4
Верификация корзины
Данный этап не является обязательным, но может быть полезен для создания более отзывчивого фронтенда.Подробнее в соответствующем методе проверки корзины.
5
Выставление счета
Блокирует дальнейшие изменения корзины и возвращает ссылку на платежную форму.
Подробнее в соответствующем методе выставления счета.
6
Доставка намерений
После оплаты мы обрабатываем оповещение от платежной системы и автоматически зачисляем средства на счет или отправляем покупку.
Получение ссылки на оплату
Для получения ссылки на платежную форму воспользуйтесь методом выставления счета за корзину.Информация о доставки для физических товаров
Для физических товаров в данный момент доступен только один способ доставки — СДЭК. Вам потребуется на своем сайте установить их виджет и передавать данные из него вместе с запросом чекаута корзины. Подробнее смотрите в документации метода выставления счета.Имейте в виду, что мы не занимаемся доставкой физических товаров!
Результаты транзакции
Есть два способа узнать результат транзакции:- Webhook — на ваш сервер отправляется уведомление о результате транзакции, содержащее информацию о статусе транзакции по каждому намерению. Подробнее о методе webhook можно прочитать в разделе получение оповещений.
- Проверка статуса — вы можете отправить запрос на проверку статуса транзакции для каждого отдельного намерения или для корзины целиком.
Жизненный цикл корзины
Жизненный цикл корзины отличается от обычных намерений. Основное отличие в том, что старт жизненного цикла корзины запускается после выставления счета, а не после создания.Также намерения внутри корзины перестают иметь собственный жизненный цикл и начинают зависеть от цикла корзины — в момент “протухания” корзины намерения тоже меняют свой статус на
expired.- У пользователя есть 1 час, чтобы завершить оплату.
- По истечении времени корзина автоматически переходит в
{status: "closed", paymentStatus: "expired"}. А все содержащиеся в ней намерения меняют статус наexpired, и на указанныйcallbackUrlотправляется webhook с информацией о просрочке намерения. - Оплатить просроченную корзину невозможно — необходимо создать новую.
Если после создания корзины в течение 3 дней в нее не будут добавлены намерения, такая корзина будет удалена.