API pentru rambursări
Această documentație descrie inițierea unei rambursări și solicitarea statutului
acesteia prin API-ul BPay. Pentru solicitări utilizați cheia secretă secretKey. Cheia veți primi de la BPay.
Formați JSON-ul cu parametrii solicitării și codificați-l în Base64. Valoarea key este
SHA-256 pentru șirul format din valoarea Base64 data și cheia secretă.
$data = base64_encode(json_encode($payload));
$key = hash('sha256', $data . $secretKey);
$body = [
'key' => $key,
'data' => $data,
];
Trimiteți o solicitare POST cu corp JSON la adresa de mai jos.
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
uuid |
string | Da | Identificatorul tranzacției originale. |
merchantid |
string | Da | Identificatorul comerciantului. |
fullrefund |
boolean | Da | true — rambursare integrală; pentru rambursare parțială indicațifalse. |
amount |
string / number | Da* | Suma rambursării. |
reason |
string | Da | Motivul rambursării. |
refund_uuid |
string | Nu | Identificatorul rambursării în sistemul comerciantului. Dacă lipsește, sistemul va atribui unul propriu. |
dtime |
string | Da | Data și ora în formatul Y-m-d H:i:s. |
* Confirmați regulile de completare a câmpului amount pentru rambursarea integrală în configurația
integrării.
Exemplu PHP:
$secretKey = 'YOUR_SECRET_KEY';
$payload = [
'uuid' => 'R1432947in',
'merchantid' => 'merchantId',
'fullrefund' => true,
'amount' => '40',
'reason' => 'test refund',
'refund_uuid' => 'merchant_refund_uuid', // opțional
'dtime' => date('Y-m-d H:i:s'),
];
$data = base64_encode(json_encode($payload));
$key = hash('sha256', $data . $secretKey);
$body = json_encode(['key' => $key, 'data' => $data]);
$ch = curl_init('https://pay.bpay.md/refund');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Accept: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;
Răspuns cu succes:
{
"code": 100,
"text": "success"
}
Răspuns cu eroare:
{
"code": 30,
"text": "textul erorii"
}
Câmpul text conține rezultatul solicitării. Procesarea cu succes a solicitării API nu
confirmă, de una singură, creditarea finală a fondurilor către client.
Trimiteți o solicitare pentru a obține informații despre rambursare.
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
uuid |
string | Da | Identificatorul tranzacției originale. |
merchantid |
string | Da | Identificatorul comerciantului. |
dtime |
string | Da | Data și ora în formatul Y-m-d H:i:s. |
Exemplu PHP:
$secretKey = 'YOUR_SECRET_KEY';
$payload = [
'uuid' => 'R1432947in',
'merchantid' => 'merchantId',
'dtime' => date('Y-m-d H:i:s'),
];
$data = base64_encode(json_encode($payload));
$key = hash('sha256', $data . $secretKey);
$body = json_encode(['key' => $key, 'data' => $data]);
$ch = curl_init('https://pay.bpay.md/refundStatus');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Accept: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;
{ "code": 100, "text": "success" }
{ "code": 30, "text": "textul erorii" }
Structura efectivă a răspunsului și semnificația statutelor trebuie verificate în mediul API utilizat.
- Păstrați
secretKeydoar pe server. - Utilizați HTTPS pentru toate solicitările.
- Nu includeți cheia secretă în loguri.
- Verificați răspunsul API înainte de a informa clientul că rambursarea a fost efectuată.