Пример обработчика на PHP
Оповещение об оплате заказа
<?php
$secret = 'secret2'; // Секретный ключ №2 из настроек магазина
$amount = 100.32; // Сумма заказа
$currency = 'RUB'; // Валюта
if($_SERVER['REQUEST_METHOD'] !== 'POST') {
die("wrong request method");
}
if($_POST['amount'] < $amount) {
die("wrong amount");
}
if($_POST['currency'] !== $currency) {
die("wrong currency");
}
function getIP() {
$ip = $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if(isset($_SERVER['HTTP_X_REAL_IP'])) {
$ip = $_SERVER['HTTP_X_REAL_IP'];
}
if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
$explode = explode(',', $ip);
if(count($explode) > 1) {
$ip = $explode[0];
}
return trim($ip);
}
// Проверка на IP адрес сервиса (по желанию)
$ctx = stream_context_create([
'http' => [
'timeout' => 10
]
]);
$ips = json_decode(file_get_contents('https://aaio.io/api/public/ips', false, $ctx));
if (isset($ips->list) && !in_array(getIP(), $ips->list)) {
die("hacking attempt");
}
// Конец проверки на IP адрес сервиса
$sign = hash('sha256', implode(':', [$_POST['merchant_id'], $_POST['amount'], $_POST['currency'], $secret, $_POST['order_id']]));
if (!hash_equals($_POST['sign'], $sign)) {
die("wrong sign");
}
//Так же, рекомендуется проверять не был ли этот заказ уже оплачен или отменен
//Оплата прошла успешно, можно проводить операцию.
die('OK');
Last updated