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

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

/**
 * Уникальный ключ магазина.
 */
$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