Мерчант будет получать на Callback Url уведомления с финальным ответом, содержащим статус транзакции.
На основе этих уведомлений Мерчант должен предоставлять услугу/товар покупателю.
Callback Url - обязательная настройка для каждого проекта открытого в maibmerchants, но можно отправить и в запросе при инициации платежа (параметр callbackUrl).
Чтобы получать уведомления, убедитесь, что ваш сервер разрешает доступ для maib ecomm (IP: 91.250.245.70 / 91.250.245.71).
Уведомление считается обработанной Мерчантом, если в ответ получен HTTP 200 OK статус. Иначе maib ecomm будет повторять попытки переотправки уведомления через такие интервалы времени: 10, 60, 300, 600, 3600, 43200, 86400 секунд.
Уведомления отправляются в виде запросов HTTPS POST с данными в формате JSON.
Пример получения уведомлений по Callback URL (PHP)
Сравните сгенерированную подпись со значением параметра signature из уведомлении, и если они совпадают, подпись будет считаться действительной (полученные данные целостные и подлинные).
Пример проверки подписи (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}}