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

После успешной оплаты товаров 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"
}

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

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

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

Перед обработкой платежа мы настоятельно рекомендуем проверять цифровую подпись. Цифровая подпись генерируется путем хеширования алгоритмом 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