SyntaxError: Unexpected token '<', "<form id=""... is not valid JSON в платежном плагине WooCommerce

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

Всем привет. Я работаю над платежным плагином для WooCommerce. В руководстве по платежному шлюзу сказано, что мне нужно отправить форму с данными, используя метод POST, чтобы перенаправить клиента на страницу подтверждения 3DS. Я получаю SyntaxError: Unexpected token '<', "<form id=""... недействителен JSON. Я уже отключил все сторонние плагины и использовал тему Storefront, чтобы устранить их влияние. Я сделать запрос, используя свой код напрямую, без WooCommerce, и все отработало как положено - меня перенаправило на страницу 3DS.

Код всего плагина: https://codeshare.io/Odwv4N

Кусок кода в котором происходит отправка формы.

        $json = json_encode($data);

        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://api.pinpaygate.com/dev/card/process',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS =>$json,
        ));

        $response = curl_exec($curl);

        curl_close($curl);

        $response_data = json_decode($response, true);

        // Check if success field is true
        if ($response_data['success'] == true) {
            // Check if 3DSecure authentication is needed
            if (isset($response_data['acs'])) {
                // If the acs object contains multiple fields, perform a POST redirection
                if (isset($response_data['acs']['parameters']['PaReq'])) {
                     // Perform a POST redirection using a form
                    echo '<form id="myForm" action="' . $response_data['acs']['url'] . '" method="POST">';
                    echo '<input type="hidden" name="PaReq" value="' . $response_data['acs']['parameters']['PaReq'] . '">';
                    echo '<input type="hidden" name="MD" value="' . $response_data['acs']['parameters']['MD'] . '">';
                    echo '<input type="hidden" name="TermUrl" value="' . $response_data['acs']['parameters']['TermUrl'] . '">';
                    echo '</form>';
                    echo '<script>document.getElementById("myForm").submit();</script>';
                    exit;

Ответы

Ответов пока нет.