Как переотправить POST запрос о подтверждении оплаты?

Рейтинг: 0Ответов: 1Опубликовано: 20.01.2023

Есть мерчант, ему нужно указать URL оповещения. В требованиях указано, что он должен располагаться на домене второго уровня, типа site.ru/pay/0260a8a0. Но у меня обработчик будет висеть на поддомене tech.site.ru/webhook/0260a8a0 (n8n), принимать POST запрос и что-то делать с ним дальше.

Как мне сделать так, чтобы принять и переотправить запрос с site.ru/pay/*** на tech.site.ru/webhook/***? Я не уверен, что если сделать простой редирект, то 301 код ответа подойдет мерчанту для активации кассы. Если указать страницу вебхука в мерчанте, то тестовая проверка пишет "статус: 200" и присылает на него вот такое:

[
    {
        "headers":{
            "host": "tech.site.ru",
            "content-length": "14",
            "accept": "*/*",
            "content-type": "application/x-www-form-urlencoded",
            "x-forwarded-for": "111.111.111.111",
            "x-forwarded-host": "tech.site.ru",
            "x-forwarded-port": "443",
            "x-forwarded-proto": "https",
            "x-forwarded-server": "5e8d25bfd579",
            "x-real-ip": "111.111.111.111",
            "accept-encoding": "gzip"
        },
        "params":{
        },
        "query":{
        },
        "body":{
            "status_check": "1"
        }
    }
]

Ответы

▲ 0

А, все, вроде сам разобрался. Так мой вебхук принимает данные и даже отвечает на странице site.ru/result.php (хотя надо смотреть после активации кассы, что он там принимает):

<?php
    $data_string = $_POST['json'];

    $curl = curl_init('https://tech.site.ru/webhook/0260a8a0');
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
       'Content-Type: application/json',
       'Content-Length: ' . strlen($data_string))
    );
    $result = curl_exec($curl);
    curl_close($curl);
    echo '<pre>';
    print_r($result);
?>