Вывести значение массива или переменной в платежном плагине.

Вопрос или проблема

Я программирую плагин для оплаты в WooCommerce. Для его тестирования мне нужно вывести значения $response. Я пробовал использовать echo, print_r и var_dump, но когда я прохожу процесс покупки, ничего не выводится.

Что я могу сделать, чтобы визуализировать этот контент при покупке продукта?
(После ввода данных карты и прохождения процесса покупки мне нужно увидеть эти значения)

Часть кода плагина:

$payload = array(
  "key_id"  => $key_id,
  "hash" => $hash,
  "time" => $time,
  "amount" => $customer_order->order_total,
  "ccnumber" => str_replace( array(' ', '-' ), '', $_POST['bac_payment-card-number'] ),
  "ccexp" => str_replace( array( "https://wordpress.stackexchange.com/", ' '), '', $_POST['bac_payment-card-expiry'] ),
  "orderid" => $orderid,
  "cvv" => ( isset( $_POST['bac_payment-card-cvc'] ) ) ? $_POST['bac_payment-card-cvc'] : '',
  "type" => "auth",);
// Отправьте этот payload в Authorize.net для обработки
$response = wp_remote_post( $environment_url, array(
  'method'    => 'POST',
  'body'      => http_build_query( $payload ),
  'timeout'   => 90,
  'sslverify' => false,
) );

//***********
//когда я совершаю покупку, мне нужно видеть эти значения
//************
var_dump($response);
var_dump($response_body);

die()

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

Для этого убедитесь, что у вас включена отладка в вашем wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );

Затем используйте следующую утилиту-функцию, чтобы записать ваши значения в лог. Вы можете просто использовать error_log( $value ), но эта утилита поможет работать с массивами/объектами без необходимости форматирования для файла лога:

function write_log( $log )  {
    if ( is_array( $log ) || is_object( $log ) ) {
        error_log( print_r( $log, true ) );
    } else {
        error_log( $log );
    }
}

Теперь вместо var_dump() вы можете вызвать write_log() для записи результата в /wp-content/error.log:

write_log($response);
write_log($response_body);

(Вчера был похожий вопрос, если хотите увидеть дополнительные детали.)

Ответ или решение

Чтобы эффективно вывести значения переменной $response в вашем плагине платежей для WooCommerce, вам необходимо использовать подходящие методы логирования, особенно если стандартные методы, такие как echo, print_r и var_dump, не дают результата на пользовательском интерфейсе. Это может быть связано с особенностями обработки запросов в WooCommerce. Рассмотрим следующее решение:

Включение режима отладки

Во-первых, убедитесь, что у вас включён режим отладки в wp-config.php. Это позволит записывать данные в лог-файл, который будет находиться в папке /wp-content/.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

Создание функции для логирования

Используйте следующую утилитную функцию для записи в лог-файл. Она позволяет корректно обрабатывать массивы и объекты, преобразовывая их в читабельный формат.

function write_log($log) {
    if (is_array($log) || is_object($log)) {
        error_log(print_r($log, true));
    } else {
        error_log($log);
    }
}

Логирование данных

Вместо использования var_dump() на странице, замените его на вызов функции write_log(), чтобы записывать информацию в лог-файл.

write_log($response);
write_log(wp_remote_retrieve_body($response));

Эти вызовы запишут значения переменной $response и тела ответа $response_body в файл /wp-content/debug.log. Можно также применить функцию wp_remote_retrieve_body() для получения содержимого тела ответа.

Проверка логов

После выполнения тестового платежа, проверьте файл /wp-content/debug.log для анализа записанных данных. Это позволит вам диагностировать и улучшать функциональность вашего плагина, выявляя потенциальные ошибки в обмене данными между плагином и сервером стороннего платежного провайдера.

Заключение

Этот метод позволит вам безопасно и эффективно инспектировать внутренние данные вашего плагина, избегая проблемы с выводом на экран, что важно для обеспечения конфиденциальности и безопасности пользовательской информации. Использование лог-файлов делает процесс тестирования более удобным и гибким, способствуя своевременному выявлению и решению проблем в процессе разработки.

Оцените материал
Добавить комментарий

Капча загружается...