Към съдържанието

Изплащане на паричен превод от търговец към клиент през ePay.bg

Обща информация

  • Клиент - Краен потребител на услугата
  • Търговец - Юридическо лице, сключило договор с ePay.bg
  • Файловете, които се цитират в документацията, може да се свалят от линка "Демо пакет" под бутона за вход на https://demo.epay.bg/

Всеки регистриран търговец в системата на ePay.bg има

  • Буквено-цифрена секретна дума с дължина 64 (secret)
  • Клиентски идентификационен номер (KIN)

Търговецът може да ги открие в профила си в https://epay.bg/, без да може да ги променя.

Описание на процеса

  1. Търговецът изпраща HTTP GET заявка за паричен превод към даденото URL.
  2. В същата HTTP сесия ePay.bg ще върне на търговеца "Системен код".
  3. Паричният превод се изплаща на получателя в системата на ePay.bg.
  4. ePay.bg системата следи за статуса на регистрираните/записаните парични преводи и при изплащането им се изпраща нотификация от ePay.bg на търговеца за тях.
  5. При получаване на нотификация от ePay.bg, търговецът трябва да формира съответен отговор.

Комуникационна схема

moneysend epay

Продукционна среда

Метод URL
GET https://www.epay.bg/send/send.cgi

Демо среда

Метод URL
GET https://demo.epay.bg/send/send.cgi

Заявка за паричен превод през ePay.bg

Параметър Описание Опционалност
ENCODED Кодирана с base64 (RFC 3548) заявка за плащане, EOL=" " Задължителен
CHECKSUM Контролна сума върху ENCODED, генерирана като HMAC с алгоритъм SHA-1 и SECRET дума на търговеца Задължителен

Параметри в ENCODED

Параметър Тип Описание Опционалност
MIN int Клиентски идентификационен номер (КИН)
на търговеца
Задължителен
MEMAIL string Електронна поща на търговеца в системата Задължителен
CIN int Клиентски идентификационен номер (КИН)
на получателя
Задължителен
CEMAIL string Електронна поща на получателя в системата Задължителен
INVOICE string Номер на фактура; уникален за търговеца Задължителен
AMOUNT float Валидна сума > 0.01 (например: 22, 22.8, 22.80) Задължителен
CURRENCY string Приемани валути са BGN, USD или EUR; ако не се подаде е BGN по подразбиране Опционален
DESCR string Описание на превода до 100 символа Опционален
ENCODING encoding encoding на DESCR Опционален

Важно

Заявка с даден INVOICE може да влезе в системата само един път.

Задължително се подават данните на получателя в заявката

В заявката трябва да фигурира MIN/MEMAIL и CIN/CEMAIL на получателя. Ако се подава личен документ, се изисква и датата на издаването му.

Примерен код за изготвяне на заявката

1
2
3
4
5
6
7
{
    # Кодиране на заявката
    $ENCODED  = encode_base64('DATA', ''); # '' за EOL (def. е "\n")

    # Генериране на контролна сума
    $CHECKSUM = hmac_hex($ENCODED, $secret, \&sha1);
}
1
2
3
4
5
6
7
8
{
    # Кодиране на заявката
    $ENCODED  = base64_encode('DATA');

    # Генериране на контролна сума
    $CHECKSUM = hmac('sha1', $ENCODED, $secret);
    # кода на функцията hmac може да видите в demo.php
}

Отговор

SYS_CODE=1234567890 (само цифри, до 64 дължина)

Генерираният код е сигнал за търговеца, че преводът е нареден успешно.

ERR=Описание на грешка

Повторение на заявката няма да доведе до нареждането на още един превод

Липсата на отговор или такъв с празна стойност не трябва да е флаг, че заявката за генериране на превод не е била или е била успешна.

Търговецът трябва да повтаря заявката със същите данни, до получаване на отговор по спецификация (SYS_CODE=123 или ERR=Описание на грешка). Всяко повторение на заявка с едни и същи данни ще води до един и същ системен код, което означава че повтаряне на заявката няма да доведе до нареждането на още един превод.

Грешки

Не е намерен валиден клиент получател

Ако се прави превод едновременно по два идентификатора, но единият от тях не е верен, ще върне грешка: ERR=EMETHOD: Не е намерен валиден клиент получател!

Примерни сценарии:

  • имейлът е валиден, но КИН не е
  • КИН е валиден, но имейлът не е
  • имейлът е валиден и КИН е валиден, но са асоциирани с различни акаунти