DaydreamMods

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 рубль.

Редактирование — клик по строке в списке. Статусы строки: активен, выключен, истёк, исчерпан.