DaydreamMods
Оплата Robokassa
Счёт, подписи, ResultURL и промокод. Что не считается оплатой.
Валюта — рубль. Методы оплаты те, что включены в кабинете Robokassa. Сайт их список не дублирует.
Куда прописать URL
В кабинете магазина:
- ResultURL:
https://daydreammods.ru/payments/robokassa/result - SuccessURL:
https://daydreammods.ru/payment/success - FailURL:
https://daydreammods.ru/payment/fail
ResultURL сервер принимает и POST, и GET. Подпись считается паролем №2. SuccessURL только показывает текст. Если человек дошёл до «оплата принята», а ResultURL не дошёл, подписка остаётся pending.
Шаги
1. В кабинете или на checkout вызывается checkout.create: тариф, необязательный промокод, согласие true.
2. Сервер проверяет, что продажи открыты и тариф активен.
3. Считает сумму. Промокод ищется по коду в верхнем регистре.
4. Создаёт подписку pending и платёж pending с invoiceId.
5. Отдаёт браузеру адрес Robokassa, подписанный паролем №1.
6. Robokassa вызывает ResultURL. activatePayment сверяет сумму и подпись, ставит платёж paid, подписку active, пишет startsAt и endsAt по periodDays тарифа, увеличивает usedCount промокода, шлёт письма об оплате и активации.
Демо-режим без ключей магазина активирует платёж локальным вызовом. В бою ROBOKASSA_IS_TEST=0.
Промокод
Поля в админке, все по-русски:
- код;
- тип: процент от цены или фиксированные рубли;
- размер;
- срок (
expiresAt), пустой — без срока; - сколько раз можно применить (
maxUses), пустое — без лимита; - тарифы, пустой список — все тарифы;
- активен или выключен.
Код не применяется, если он выключен, просрочен, исчерпан (usedCount >= maxUses) или тариф не входит в список. После отказа сумма не уменьшается, checkout возвращает ошибку «Промокод недействителен» или «Промокод не для этого тарифа». Минимальная сумма после скидки — 1 рубль.
Редактирование — клик по строке в списке. Статусы строки: активен, выключен, истёк, исчерпан.