Перейти к основному содержимому

Холдирование и предавторизация

Холдирование средств

Холдирование (предавторизация) — это отложенная оплата товара или услуги. Оплата проходит в два этапа: сначала средства на карте покупателя резервируются, а затем списываются по запросу продавца.

Внимание

Опция доступна только по предварительной договорённости с Robokassa и работает исключительно с платежами банковскими картами.

Если магазину необходимо зарезервировать сумму, операция делится на два шага. На первом этапе покупатель совершает обычный платёж, но в запрос дополнительно передаётся параметр StepByStep со значением true.

Параметр участвует в расчёте сигнатуры:

MerchantLogin:OutSum:InvoiceId:Receipt:true:Пароль#1

Максимальный срок холдирования — 7 календарных дней. По его истечении операция автоматически отменяется.

Пример запроса на холдирование средств

<form method="POST" action="https://auth.robokassa.ru/Merchant/Index.aspx?">
<input type="hidden" name="MerchantLogin" value="robo-demo-test" />
<input type="hidden" name="InvoiceID" value="1570" />
<input type="hidden" name="OutSum" value="1" />
<input
type="hidden"
name="Receipt"
value="%7B%22items%22%3A%5B%7B%22name%22%3A%22%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9+%D1%82%D0%BE%D0%B2%D0%B0%D1%80%22%2C%22quantity%22%3A1%2C%22sum%22%3A1%2C%22payment_method%22%3A%22full_payment%22%2C%22payment_object%22%3A%22payment%22%2C%22tax%22%3A%22none%22%7D%5D%7D"
/>
<input type="hidden" name="StepByStep" value="true" />
<input type="hidden" name="SignatureValue" value="1ec0b427f1b9e27a9204c9140f2d4925" />
<input type="submit" value="Оплатить" />
</form>

Уведомление об успешной предавторизации поступает только на ResultURL2.

Подтверждение списания

На втором этапе магазин подтверждает списание или отменяет холдирование.

Запрос на подтверждение списания

Отправьте POST-запрос на адрес https://auth.robokassa.ru/Merchant/Payment/Confirm с теми же параметрами, что и при первичном платеже. При вычислении сигнатуры учитываются значения MerchantLogin, OutSum, InvoiceId и пароль #1.

Запрос на списание можно выполнить только один раз.

<form method="POST" action="https://auth.robokassa.ru/Merchant/Payment/Confirm">
<input type="hidden" name="MerchantLogin" value="robo-demo-test" />
<input type="hidden" name="InvoiceID" value="1570" />
<input type="hidden" name="SignatureValue" value="ad89c98c9f3fe67d05710a3c24c7f985" />
<input type="hidden" name="OutSum" value="1" />
<input type="submit" value="Подтвердить списание" />
</form>

Изменение состава корзины

Вы можете скорректировать состав товаров перед окончательным списанием только в меньшую сторону. Для этого передайте обновлённый параметр Receipt вместе с запросом подтверждения. В этом случае Receipt участвует в расчёте сигнатуры:

MerchantLogin:OutSum:InvoiceId:Receipt:Пароль#1
<form method="POST" action="https://auth.robokassa.ru/Merchant/Payment/Confirm">
<input type="hidden" name="MerchantLogin" value="robo-demo-test" />
<input type="hidden" name="InvoiceID" value="1570" />
<input
type="hidden"
name="Receipt"
value="%7B%22items%22%3A%5B%7B%22name%22%3A%22%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9+%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9+%D1%82%D0%BE%D0%B2%D0%B0%D1%80%22%2C%22quantity%22%3A1%2C%22sum%22%3A1%2C%22payment_method%22%3A%22full_payment%22%2C%22payment_object%22%3A%22payment%22%2C%22tax%22%3A%22none%22%7D%5D%7D"
/>
<input type="hidden" name="SignatureValue" value="5a31f19aea789e99fe74b5f7f34e70c9" />
<input type="hidden" name="OutSum" value="1" />
<input type="submit" value="Подтвердить списание" />
</form>

После успешного списания Robokassa отправит уведомление на ResultURL. При необходимости дополнительно используйте ResultURL2.

Отмена холдирования

Чтобы отменить холдирование, отправьте POST-запрос на https://auth.robokassa.ru/Merchant/Payment/Cancel.

<form method="POST" action="https://auth.robokassa.ru/Merchant/Payment/Cancel">
<input type="hidden" name="MerchantLogin" value="robo-demo-test" />
<input type="hidden" name="InvoiceID" value="1570" />
<input type="hidden" name="SignatureValue" value="79e96aa6769842e47832f0fcb9332f46" />
<input type="hidden" name="OutSum" value="1" />
<input type="submit" value="Отменить списание" />
</form>

При расчёте сигнатуры для отмены параметр OutSum не используется. Базовая строка выглядит так:

MerchantLogin::InvoiceId:Пароль#1