HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/tienda-qas.allup.com.co/wp-content/plugins/zonapagos/sonda.php
<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require( dirname(__DIR__) . '/../../wp-config.php' );
global $wpdb;
global $woocommerce;
$woocommerce = new woocommerce();
$available_gateways = $woocommerce->payment_gateways->get_available_payment_gateways();
$registros = $wpdb->get_results($wpdb->prepare("SELECT p.ID FROM $wpdb->posts p LEFT JOIN $wpdb->postmeta m ON m.post_id = p.ID WHERE m.meta_key = '_payment_method' AND m.meta_value = 'zonapagos' AND p.post_status = %s AND post_date < DATE_SUB(NOW(),INTERVAL 7 MINUTE)", 'wc-pending'));

for ($i = 0; $i < count($registros); $i++) {
    $id_pago = $registros[$i]->ID;
    $order = new WC_Order($id_pago);
    $periodo_sonda = 600;
    $tipo_pago = get_post_meta($id_pago, '_zp_id_forma_pago');
    $tiempo = 0;
    if ($tipo_pago[0] == "42")
        $periodo_sonda = 3600;
    $ultima_consulta = get_post_meta($id_pago, '_zp_ultima_consulta');
    if (sizeof($ultima_consulta) > 0)
        $tiempo = $ultima_consulta[0];
    if (time() > $tiempo + $periodo_sonda) {
        $service_url = 'https://www.zonapagos.com/WsVerificarPagoV4/VerificarPagos.asmx?wsdl';
        $client = new SoapClient($service_url);
        $params = array(
            'int_id_comercio' => $available_gateways['zonapagos']->settings['int_id_comercio'],
            'str_usr_comercio' => $available_gateways['zonapagos']->settings['str_usr_comercio'],
            'str_pwd_Comercio' => $available_gateways['zonapagos']->settings['str_pwd_Comercio'],
            'str_id_pago' => $id_pago,
            'int_no_pago' => -1,
            'int_error' => 0,
            'int_cantidad_pagos' => 0
        );
        $result = $client->__soapCall('verificar_pago_v4', array($params));
        update_post_meta($id_pago, '_zp_ultima_consulta', time());
        if ($result->verificar_pago_v4Result == 1) {
            $pagos = $result->int_cantidad_pagos;
            $transacciones = explode("| ; |", $result->str_res_pago);
            $transacciones_array = [];
            foreach ($transacciones as $transaccion) {
                $transaccion_array = explode(" | ", $transaccion);
                if (sizeof($transaccion_array) > 1)
                    array_push($transacciones_array, $transaccion_array);
            }

            foreach ($transacciones_array as $transaccion) {
                $estado_pago = $transaccion[1];
                switch ($estado_pago) {
                    case "1":
                        $order->payment_complete();
                        $order->update_status('completed', __('Pago exitoso', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago exitoso');
                        break;
                    case "888":
                        $order->update_status('pending', __('Pago pendiente por iniciar', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago pendiente por iniciar');
                        break;
                    case "999":
                        $order->update_status('pending', __('Pago pendiente por finalizar', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago pendiente por finalizar');
                        break;
                    case "4001":
                        $order->update_status('pending', __('Pago pendiente por CR', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago pendiente por CR');
                        break;
                    case "1000":
                        $order->set_status('cancelled', __('Pago rechazado', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago rechazado');
                        break;
                    case "1001":
                        $order->update_status('cancelled', __('Pago rechazado. Error entre PSE y la Entidad Bancaria', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago rechazado. Error entre PSE y la Entidad Bancaria');
                        break;
                    case "4000":
                        $order->update_status('cancelled', __('Pago rechazado CR', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago rechazado CR');
                        break;
                    case "4003":
                        $order->update_status('cancelled', __('Pago rechazado. Error CR', 'woothemes'));
                        update_post_meta($id_pago, '_zp_detalle_estado', 'Pago rechazado. Error CR');
                        break;
                }
                $order->save();
                $forma_pago = $transaccion[14];
                switch ($forma_pago) {
                    case "29":
                        update_post_meta($id_pago, '_zp_id_forma_pago', '29');
                        update_post_meta($id_pago, '_zp_forma_pago', 'PSE');
                        update_post_meta($id_pago, '_zp_ticketID', $transaccion[15]);
                        update_post_meta($id_pago, '_zp_codigo_servico', $transaccion[16]);
                        update_post_meta($id_pago, '_zp_codigo_banco', $transaccion[17]);
                        update_post_meta($id_pago, '_zp_nombre_banco', $transaccion[18]);
                        update_post_meta($id_pago, '_zp_codigo_transaccion', $transaccion[19]);
                        update_post_meta($id_pago, '_zp_ciclo_transaccion', $transaccion[20]);
                        break;
                    case "32":
                        update_post_meta($id_pago, '_zp_id_forma_pago', '32');
                        update_post_meta($id_pago, '_zp_forma_pago', 'Tarjeta de crédito');
                        update_post_meta($id_pago, '_zp_ticketID', $transaccion[15]);
                        update_post_meta($id_pago, '_zp_num_tarjeta', $transaccion[16]);
                        update_post_meta($id_pago, '_zp_franquicia', $transaccion[17]);
                        update_post_meta($id_pago, '_zp_cod_aprobacion', $transaccion[18]);
                        update_post_meta($id_pago, '_zp_num_recibo', $transaccion[19]);
                        break;
                    case "41":
                        update_post_meta($id_pago, '_zp_id_forma_pago', '41');
                        update_post_meta($id_pago, '_zp_forma_pago', 'PDF generado en ZonaPAGOS');
                        break;
                    case "42":
                        update_post_meta($id_pago, '_zp_id_forma_pago', '42');
                        update_post_meta($id_pago, '_zp_forma_pago', 'Gana');
                        break;
                    case "45":
                        update_post_meta($id_pago, '_zp_id_forma_pago', '45');
                        update_post_meta($id_pago, '_zp_forma_pago', 'Tarjeta Tuya');
                        break;
                }
            }
        } else {
            echo "Error:" . $result->str_detalle;
        }
    }
}
?>