Как получить http-уведомление (платеж) ЮMoney на несколько доменов? (wordpress)

Как получить http-уведомление (платеж) ЮMoney на несколько доменов? (wordpress)

На один домен без проблем получается, а вот на другие домены платеж не приходит, видимо из-за того что в http-уведомлении можно указать только один домен.

Как делать так, чтобы можно было получить http-уведомление для нескольких доменов с одним аккаунтом юmoney?

Пробовал писать такой код:

$ctx = stream_context_create([

"http" => [
"method" => $_SERVER["REQUEST_METHOD"],

"header" => "Content-Type: " . $_SERVER["HTTP_CONTENT_TYPE"],

"content" => file_get_contents("php://input")
]

]);

file_get_contents("https://site1.ru/url.php", false, $ctx);

file_get_contents("https://site2.ru/url.php", false, $ctx);

file_get_contents("https://site3.ru/url.php", false, $ctx);

Разместил его в index.php, но ничего не происходит. Куда в wordpress будет правильнее разместить такой код, в functions.php? Как делать правильно?


Ответы (1 шт):

Автор решения: Borislav

Не знаток wordpress, однако, если говорите, что для уведомления можно указать только один домен, в таком случае, укажите какой-то сервисный домен, а на нем реализуйте логику отправки на остальные.

Код если честно, может быть до боли прост и реализовать его можно в плагине.

Так же, в доке ЮMoney сказано, что вам придет POST запрос и данные в формате application/x-www-form-urlencoded, в таком случае, можно написать что-то подобное:

foreach (
    [
        'https://site1.ru/url.php',
        'https://site2.ru/url.php',
        'https://site3.ru/url.php'
    ] as $url
) {
    // parse request
    $requestData = [];
    parse_str(file_get_contents("php://input"), $requestData);

    // send requests
    $cURL = curl_init();
    curl_setopt_array(
        $cURL, 
        [
            CURLOPT_URL             => $url,
            CURLOPT_RETURNTRANSFER  => true,
            CURLOPT_POST            => true,
            CURLOPT_POSTFIELDS      => $requestData
        ]
    );
    $response = curl_exec($cURL);
    // обрабатываем ответ от других ваших доменов
    if (is_bool($response)) { // т.к. строка может быть пустой, а функция вернет string|bool, по факту это string|false
        // где-то выше ловите это исключение и в logger его
        throw new \DomainException('Received a bad response from url: ' . $url);
    }
    curl_close($cURL);
}

Дока по созданию плагина: https://www.dreamhost.com/blog/how-to-create-your-first-wordpress-plugin/

→ Ссылка