Merchant-ul va primi pe Callback URL notificări cu răspunsul final ce conține starea tranzacției.
În baza acestor notificări, Merchant-ul trebuie sa furnizeze serviciul/produsul Cumpărătorului.
Callback URL este o setare obligatorie pentru fiecare proiect deschis în maibmerchants, însă poate fi transmis și în request la inițierea unei plăți (parametrul callbackUrl).
Pentru a primi notificări pe Callback URL, asigurați-vă că serverul dvs. poate fi accesat de către maib ecomm (IP: 91.250.245.70 / 91.250.245.71).
Se consideră că notificarea a fost recepționată dacă maib ecomm primește răspuns cu codul de stare HTTP 200 OK. În caz contrar maib ecomm va încerca retrimiterea notificării la următoarele intervale de timp: 10, 60, 300, 600, 3600, 43200, 86400secunde.
Exemplu recepționare notificări pe Callback URL (PHP)
Comparați semnătura generată cu valoarea parametrului signature din notificare și în cazul în care ele coincid semnătura se va considera validă (datele primite sunt autentice și integre).
Exemplu validare semnătură (PHP)
<?php$key ="8508706b-3454-4733-8295-56e617c4abcf"; //Signature Key from Project settings$json =file_get_contents('php://input');$data =json_decode($json,true);if (isset($data['signature'])) {$data_result = $data['result']; // Data from "result" objectfunctionsortByKeyRecursive(array $array) {ksort($array,SORT_STRING);foreach ($array as $key => $value) {if (is_array($value)) { $array[$key] =sortByKeyRecursive($value); } }return $array;}functionimplodeRecursive($separator, $array) { $result ='';foreach ($array as $item) { $result .= (is_array($item)?implodeRecursive($separator, $item): (string)$item) . $separator; }returnsubstr($result,0,-1);}$sortedDataByKeys =sortByKeyRecursive($data_result); //Sort an array by key recursively$sortedDataByKeys[] = $key; //Add Signature Key to the end of data array$signString =implodeRecursive(':', $sortedDataByKeys); // Implode array recursively$sign =base64_encode(hash('sha256', $signString,true)); // Generate signature if ($sign === $data['signature']) // Compare the generated signature with the received signature on Callback URL{echo"Signature is valid!"; // Signature is valid, process the data} else {echo"Signature is invalid!"; // Signature is invalid, reject the request}}