După ce utilizatorul a achitat factura emisă de dvs., sistemul de plată electronice BPay.md poate notifica automat sistemul de informații al magazinului online despre plata primită. Pentru a activa notificarea automată, trebuie să specificați CALLBACK_URL la înregistrarea unui comerciant – adresa scriptului care va fi apelat de sistemul de plăți după ce utilizatorul efectuează o plată. Datele vor fi recepționate prin metoda POST.
Datele sunt prelucrate ca fiind codificate în base64. Inițial, este necesar să verificați corectitudinea semnăturii datelor primite pentru a vă asigura că acestea au fost trimise exact de către serviciul BPay.md. Pentru a face acest lucru, trebuie să verificați semnătura, comparînd-o cu cea care a post primită în timpul apelului callback.
Cîmpul data va conține un json codificat în base64 cu datele despre plata efectuată iar câmpul key va conține semnătura acestor date. Verificând această semnătură, vă puteți asigura că datele au fost trimise exact de către serviciul de plăți electronice BPay.md » Formatul: JSON
Semnătura este generată conform următorului algoritm (Exemplu de cod PHP): hash (‘sha256’, hash(‘sha256’, $_POST[‘data’])+hash(‘sha256’, SIGNATURE)). SEMNATURĂ – un câmp specificat de dvs. la înregistrarea comerciantului în sistemul BPay.md. Datele vor fi trimise în formatul form-data. Dacă preferați formatul json, solicitați administratorilor sistemului de plată să configureze formatul de trimitere prin setarea parametrului comerciantului callbackFormat=json. Campul data va contine datele urmatoare:
{
"uuid": "4abbafb6-0296-4ed5-aae4-09de83ba02a9",
"merchantid": "test_merchant",
"order_id": "9876",
"comand": "pay",
"receipt": 104010816378530,
"time": "2024-09-23 16:07:32",
"amount": "196.2100",
"currency": 498,
"settl_amount": "190.8000",
"settl_currency": 498,
"prov_account": 11999004
"point_id": 0,
"params": {
"info": "test information",
"invoice": [
{
"id": 156,
"sum": 800,
"name": "mobile phone",
"model": "iphone 8+"
},
{
"id": 556,
"sum": 300,
"name": "TV Philips",
"model": "K223AA2200"
}
],
"type_of_payer": "main"
}
}
Dacă semnătura pe care ați generat-o corespunde celei care este trecută în câmpul key, puteți continua procesul de prelucrare a plății. După decriptarea câmpului de date, acesta va conține următorul xml:
Cheia |
Descriere |
uuid |
Identificatorul unic al comenzii. |
order_id |
Returnează valoarea order_id transmisă de dvs. atunci când generați o factură |
amount |
Suma plătită de utilizator. |
prov_account |
Identificatorul în sistemul plătitorului. |
currency |
Codul valutei în care este indicată suma plății. 498 – lei moldovenești |
comand |
Dacă s-a efectuat plata — este indicat pay, dacă se face doar o verificare a existenței comenzii conform order_id specificat în sistemul magazinului online, aceasta va avea valoarea check |
params |
Cîmpul completat la discreția comerciantului |
receipt |
Identidficatorul unic al cecului, atribuit de sistemul BPay.md. Cunoscând acest număr, oricine poate verifica existența unei plăți pe site-ul sistemului de plăți electronice BPay.md |
time |
timpul de plată (până la momentul serverului de plăți bpay) în format yyyymmdd hhmmss |
settl_amount |
Suma care revine comerciantului. |
settl_currency |
Valuta comerciantului. |
point_id |
ID-ul punctului de comercializare. |
După procesarea plății, trebuie să anunțați sistemul de plăți cu privire la succesul sau eșecul acestui proces. Pentru a face acest lucru, trebuie să returnați JSON cu următorul conținut:
» Formatul: JSON
{
'code' => 100,
'text' => "success"
}
În cazul unui răspuns compus incorect, notificarea va fi repetată și după un timp.