Уведомление о платеже

После успешной оплаты товаров EasyDonate отправит HTTP уведомление по указанному в настройках URL. Метод уведомления: POST

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

{
   "payment_id": 526480,
   "shop_id": 4370,
   "customer": "Player123",
   "email": null,
   "ip": "127.0.0.1",
   "server": {
      "id": 3176,
      "name": "Выживание",
      "ip": "127.0.0.1",
      "port": "25565"
   },
   "cost": 90,
   "income": 85.32,
   "payment_type": "card",
   "created_at": "2021-09-23 13:38:36",
   "updated_at": "2021-09-23 13:38:36",
   "products": [
      {
         "id": 48986,
         "name": "Алмазный меч",
         "description": "Убивайте мобов эффективней!",
         "count": 1,
         "cost": 100,
         "commands": [
            "give DontFollow minecraft:diamond_sword 1"
         ],
         "custom_fields": [
            {
               "name": "email",
               "type": "text",
               "description": "Ваш Email",
               "value": "admin@easydonate.ru"
            }
         ],
         "image": "http://cp.easydonate.ru/storage/app/media/Diamond Sword-min.png",
         "sales": {
            "massSale": {
               "value": 10,
               "description": "Массовая акция \"Осенние скидки\"",
               "target": {
                  "id": 359,
                  "name": "Алмазный меч",
                  "sale": 10,
                  "shop_id": 4370,
                  "start_at": null,
                  "expires_at": null,
                  "created_at": "2021-09-11 11:41:13",
                  "updated_at": "2021-09-11 11:41:13"
               }
            }
         }
      }
   ],
   "signature": "e994bdf64e19be4266b416fe7c13dae1410b1106a004b10e226e62df7f903260"
}

Список передаваемых параметров

Параметр

Тип

Описание

payment_id

int

Идентификатор платежа в системе EasyDonate

shop_id

int

Идентификатор магазина в системе EasyDonate, в котором была совершена покупка

customer

string

Никнейм покупателя

email

string

Адрес электронной почты покупателя

ip

string

IP адрес покупателя

server

array

Массив данных о сервере, на котором была совершена покупка

cost

double

Стоимость платежа. Сумма, которую отдал покупатель (без учета комиссий)

income

double

Сумма, зачисленная на Ваш баланс в системе EasyDonate

payment_type

string

Способ оплаты. Возможные значения: yoomoney, webmoney, card, card_ua, card_kz, card_eu, card_world, advcash, beeline, mts, megafon, tele2, sbp, mc, test

created_at

datetime

Дата создания платежа

updated_at

datetime

Дата совершения оплаты

products

array

Массив данных о товарах, приобретенных покупателем

signature

string

Цифровая подпись платежа. Подробнее

Важно! Всегда проверяйте цифровую подпись перед проведением своей логики обработки платежа. Подробнее

Цифровая подпись

Перед обработкой платежа мы настоятельно рекомендуем проверять цифровую подпись. Цифровая подпись генерируется путем хеширования алгоритмом HMAC-SHA256 строки с использованием уникального ключа магазина в качестве "соли".

Хешируемую строку можно получить, объединив параметры payment_id, cost и customer, разделив между собой символом "@": "payment_id@cost@customer".

Для генерации цифровой подписи на языке PHP рекомендуем использовать метод hash_hmac(), где первым параметром является sha256, вторым хешируемая строка, третьим — уникальный ключ магазина.

Пример генерации цифровой подписи

<?php

/**
 * Уникальный ключ магазина.
 */
$shopKey = '9ee70b7987a7993046ac30a1556272c8';

/**
 * Получаем входящие body параметры.
 */
$data = json_decode(file_get_contents('php://input'));

/**
 * Генерация хешируемой строки.
 *
 * Аналог:
 * $hashString = "{$data->payment_id}@{$data->cost}@{$data->customer}";
 */
$hashString = implode('@', [
    $data->payment_id,
    $data->cost,
    $data->customer
]);

/**
 * Генерация цифровой подписи алгоритмом HMAC-SHA256,
 * где $shopKey — "соль".
 *
 * @link https://www.php.net/manual/ru/function.hash-hmac.php
 */ 
$signature = hash_hmac('sha256', $hashString, $shopKey);

Пример проверки цифровой подписи

<?php

function signature($shopKey, $data) {
    $hashString = implode('@', [
        $data->payment_id,
        $data->cost,
        $data->customer
    ]);
    return hash_hmac('sha256', $hashString, $shopKey);
}

/**
 * Уникальный ключ магазина.
 */
$shopKey = '9ee70b7987a7993046ac30a1556272c8';

/**
 * Получаем входящие body параметры.
 */
$data = json_decode(file_get_contents('php://input'));

if (strcasecmp(signature($shopKey, $data), $data->signature) !== 0) {
    exit('Bad signature.');
}

Last updated