Grabo Partners API » Callback URL » Описание
Как да подготвите Вашия Callback URL
Как Grabo.bg изпраща известията
Примерно известие към Вашия Callback URL
Примерен Callback URL:
https://your-site.com/grabo_api/callback_url
HTTPS заявката изглежда по следния начин:
POST /grabo_api/callback_url?signature=7c508cf85671ba2e361e188396cddacc574bc3e8
Host: your-site.com
Content-Type: application/json
Content-Length: 57
{"company_id":"203412406","items":[...данните...]}
Отговор на известието
В отговор на известието, Вашият Callback URL задължитено трябва да върне съобщение "OK:...ЕИК...", с HTTP status code: 200 OK.
Примерен отговор:
OK:203412406
Структура на данните
| Параметър | Тип | Стойност |
|---|---|---|
| action | string | Тип на събитието - new за нов издаден ваучер, refunded за анулиран ваучер. |
| action_timestamp | integer | Дата на събитието в unix timestamp. При нов издаден ваучер: дата на издаването му; При анулиран ваучер: дата на анулирането. |
| code | integer | Номер на ваучера - число с дължина от 6 до 9 цифри. |
| user_name | string | Име на потребителя-купувач. |
| deal_id | string | Идентификатор на закупената оферта. |
| title | string | Заглавие на закупената услуга или стока. |
| amount_prepaid | float | Размер на сумата, предплатена от потребителя-купувач към Grabo.bg. |
| amount_prepaid_method | string | Описане на начина на плащане (например: Онлайн плащане с карта, Плащане по банков път, Плащане в брой на каса на Изипей....). |
| amount_to_surcharge | float | Сума, която потребителят-купувач следва да заплати на търговеца извън вече предплатената сума. В повечето случаи стойността на този параметър е 0. |
| currency | string | BGN |
| company_name | string | Брандът, от чието име е била публикувана закупената оферта. |
Примерна заявка:
{
"company_id": "203412406",
"items": [
{
"action": "new",
"action_timestamp": 1779869646,
"code": 12345678,
"user_name": "Иван Иванов",
"deal_id": "0ntv5m",
"title": "Две пици Капричоза (доматен сос, шунка, гъби, пипер, моцарела), 500гр",
"amount_prepaid": 9.9,
"amount_prepaid_method": "Онлайн плащане с карта",
"amount_to_surcharge": 0,
"currency": "BGN",
"company_name": "Пицария \"При нас е вкусно\""
}
]
}
Отговор от Ваша страна:
OK:203412406
Примерен PHP код
<?php
$my_firm_eik = '203412406';
$passphrase = 'drQ5JhNtcjwY';
// Връщаме резултат, че сме приели заявката:
echo 'OK:' . $my_firm_eik;
// Прочитаме подадените параметри:
$input = file_get_contents('php://input');
$signature = isset($_GET['signature']) ? $_GET['signature'] : '';
// Валидираме заявката:
if( !$input || !$signature ) {
exit; // Некоректни входни данни
}
if( $signature !== hash_hmac('sha1', $input, $passphrase, false) ) {
exit; // Невалидна сигнатура
}
$data = json_decode($input);
// Валидираме данните:
if( !$data || !isset($data->company_id, $data->items) ) {
exit; // Некоректни входни данни
}
if( $data->company_id != $my_firm_eik ) {
exit; // Несъответствие в ЕИК на фирмата
}
// Всичко е наред, можем да запишем изпратените данни:
foreach($data->items as $item) {
// ...
// $action = $item->action;
// ...
}