Входящие уведомления

Если вы хотите отслеживать состояние объектов оплаты, вы можете подписаться на уведомления (webhook, callback) о событиях. Уведомления пригодятся в тех случаях, когда объект API изменяется без вашего участия. Вместо того, чтобы всё это время периодически отправлять GET-запросы, чтобы узнать статус платежа, вы можете просто дожидаться уведомления от Сам.Эквайринг.

Доступные события

Событие в Сам.Эквайринг — изменение статуса объекта. Как только произойдет событие, на которое вы подписались, вам придет уведомление. В нём будут все данные об объекте на момент, когда его статус изменился.

На данный момент в Сам.Эквайринг реализованы следующие события:

Уведомления высылаются в виде POST-запроса на адрес, который был указан в параметрах магазина

Настройка

Если хотите получать уведомления от Сам.Эквайринг, нужно подписаться на них в личном кабинете. Для этого в разделе Параметры магазина укажите URL для уведомлений (Callback уведомления) и события, которые хотите отслеживать.

Проверка подлинности уведомлений

Когда получите уведомление, проверьте его подлинность, например по статусу объекта или по IP-адресу. Это поможет защититься от атак, основанных на поддельных уведомлениях.

Проверка статуса объекта

Проверьте текущий статус объекта, чтобы убедиться, что статус из уведомления актуален.

Проверка IP-адреса

Проверьте IP-адрес, с которого пришло уведомление. Сам.Эквайринг может присылать уведомления только с IP-адресов указанных ниже:

- 178.205.169.35
- 81.23.144.157

Уточнение для PHP

Мы отправляем уведомление типа "Content-type: application/json; charset=utf-8"
В PHP ответ с таким типом не записывается в $_POST, для этого надо добавить 
строку указанную ниже:

$_POST = json_decode(file_get_contents('php://input'), true);

Пример входящего уведомления

{
    "order_id": ID заказа,
    "status": Статус,
    "amount": Сумма (в копейках),
    "currency": Валюта,
    "created_at": Время создания операции (Timestamp),
    "finish_at": Время завершения операции (Timestamp),
    "info":[{
            "name": Название товара,
            "quantity": Количество товара,
            "amount": Стоимость товара (в копейках)
    }],
    "payment_method":{
        "type": Тип платежного метода,
        "pan": Номер банковской карты (маскированный)
    }
}

Last updated