Error en pagina de termino

Issue #19 on hold
Former user created an issue

Estimado me informa el siguiente problema la transaccion transbank

31920; ;resultado ;datoscom ;13072015 ;093229;200.10.12.55 ;Ok ;597026007976 ;Error al obtener ack (46);

31920; ;resultado ;25916 ;13072015 ;093229;200.10.12.55 ;ERR; ;46

Alguien me Puede ayudar

Saludos

Comments (49)

  1. Hugo Herrera

    ese problema suele suceder por problemas de configuración de permisos de archivos o directorios, no es una incidencia. La mayoría de los problemas de configuración se encuentran documentados en el blog principal.

    Saludos

  2. Maximiliano Madariaga

    Estimados se configuro nuevamente el plugin con todos los permisos, junto a un ejecutivo de soporte transbank se realizaron las pruebas reemplazando la pagina de cierre con un echo "ACEPTADO" y se realizo una nueva prueba, con esta modificación logramos realizar la transacción exitosa (despliegue de Voucher de transbank), pero con esto no se realizan las validaciones obligatorias por transbank, solo con esto se comprobó la comunicación entre el servidor y descartar otro inconveniente, aun asi, sigue el mismo error 46 en alguna forma no esta tomando los datos de forma correcta alguna referencia errónea a la base de datos o alguna falla a nivel de código al llamar a una función por ejemplo (Exec, fopen, entre otros). Alguien que me pueda ayudar a solucionar este problema urgentemente. Saludos dejo mi correo por cualquier cosa mmadariagar@yahoo.es

  3. Gerson Cordero

    Estimados,

    Me paso lo mismo y finalmente era que el archivo MAC se generaba en un directorio, pero intentaba buscarlo en otro al momento de validar la transaccion para aceptarla. En el log daba "comercio ha rechazado la transaccion". Revisen eso, ya que es posible que sea lo mismo.

    Saludos

  4. Angel Millan

    Hola, lo que no entiendo y se que este post es antiguo, es que hay que colocar en el "Check Mac Path" en la configuración del plugin porque si lo dejo así me sigue dando este mismo error que uds reportaron, alguno lo resolvió?

    Gracias de Antemano Saludos

  5. Gerson Cordero

    @AVMp22, tienes que poner la ruta fisica del cgi en el servidor, no la ruta relativa a tu pagina web, sino la absoluta dentro del sistema de archivos. Por ejemplo, en mi hosting era algo como /var/www/vhosts/midominio.cl/cgi-bin/

  6. Angel Millan

    @gerson_cordero Gracias por tu respuesta amigo, igualmente me sigue dando el Error al obtener ack (46) en mi caso es /public_html/midominio.cl/cgi-bin/ igual sigue el problema, alguna otra idea? algunos otra configuracion? porque ya el flujo llega hasta donde introduzco los datos del rut y la clave y cuando le doy aceptar me sale que fue declinada y el Log dentro de la orden dice "Falló archivo MAC"

    Gracias de antemano

  7. Angel Millan

    Otra cosa es que si yo entro directo alas url de los CGI bien sea http://misitio.cl/cgi-bin/tbk_bp_pago.cgi me da ERROR: No se ha podido establecer la conexión y el de http://misitio.cl/cgi-bin/tbk_bp_resultado.cgi me muestra toda una cadena de caracteres, pero si entro a http://mistio.cl/cgi-bin/tbk_check_mac.cgi me da error 500, los permisos para los 3 archivos son 755 lo que es correcto y en el plugin tengo la ruta del "Check Mac Path" /home/miusr/public_html/mistio.cl/cgi-bin/

    Espero me puedan ayudar

  8. Gerson Cordero

    Los tbk_bp generan una conexion, por lo que es normal que te de error de conexion si no estas pasando los parametros adecuados (o si las llaves estan mal cargadas) y el check_mac pide un archivo el cual "desencripta" por decirlo asi, asi que es normal tambien que no puedas ejecutar todos esos archivos directamente. Sigue el manual de Transbank y solo deja los permisos que se indican para los archivos, asi te evitas problemas a futuro. Al probar usar el plugin deberia generarte un log de php, de transbank y de wordpress. Entre esos 3 debieras poder ver bien si tienes algun error de ruta, o las llaves no cargan bien, o algun otro tema de wordpress no esta funcionando.

    Saludos

  9. Gerson Cordero

    @AVMp22 lo del ack 46 es error de llaves generalmente. Prueba cargarlas manualmente (abre los archivos con block de notas y pegas tal cual como vienen) Aqui te dejo tambien el link de las que uso yo, no hagas tal de descomprimirlas y subirlas una a una. Respalda tu carpeta, sube el zip y lo descomprimes directo en el servidor, a mi me paso mil veces que se subian mal puconino.cl/llaves_certificacion.zip

  10. Angel Millan

    @gerson_cordero Gracias, no se que debe estar faltando, igual subi las llaves que me enviaste, (gracias por ellas by the way), pero aun asi persiste el problema, en el webhosting no me da ningun log y en el wordpress me pierdo buscando algun registro

              ;      521219;   ;resultado ;10213                                   ;11052016      ;000802;200.10.12.55   ;OK ;                    ;tienda NO acepto transaccion                                            
              ;      521219;   ;resultado ;10213                                   ;11052016      ;000802;200.10.12.55   ;OK ;                    ;respuesta enviada a TBK (ERR)                                           
    293606812 ;      521219;   ;resultado ;datoscom                                ;11052016      ;000802;200.10.12.55   ;Ok ;597026007976        ;Error al obtener ack (46)                                               
              ;      521219;   ;resultado ;10213                                   ;11052016      ;000802;200.10.12.55   ;ERR;                    ;46                
    
  11. Gerson Cordero

    @AVMp22 entonces claramente no esta leyendo bien el archivo de check_mac generado. Revisa que se esten generando los archivos en la carpeta wp-content/uploads/webpay-comun debieran haber archivos datoXXXX y MAC01XXXX. Depues habria que hilar mas fino para ver desde donde esta intentando leer el archivo. En el post que puse al principio me habia pasado eso con otro cliente y modifique las rutas, pero ahora no recuerdo, tendria que verlo mañana.

  12. Angel Millan

    Otra cosa @gerson_cordero el siguiente archivo lo tengo asi

    IDCOMERCIO  = 597026007976
    MEDCOM  = 2
    PARAMVERIFCOM = 1
    TBK_KEY_ID  = 101
    URLCGICOM = http://misitio.cl/cgi-bin/tbk_bp_resultado.cgi
    SERVERCOM = MIIP
    PORTCOM = 80
    WHITELISTCOM = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789./:=&?_
    HOST = MIIP
    WPORT = 80
    URLCGITRA = /filtroUnificado/bp_revision.cgi
    URLCGIMEDTRA = /filtroUnificado/bp_validacion.cgi
    SERVERTRA = https://certificacion.webpay.cl
    PORTTRA = 6443
    PREFIJO_CONF_TR = HTML_
    HTML_TR_NORMAL = http://misitio.cl/?wc_api=WC_Gateway_Webpayplus&xt_compra
    

    pueda que exista un error con algún parámetro de este archivo???? Saludos

  13. Angel Millan

    All right, after a lot of searching I found this error on my log

    [11-May-2016 14:24:58 UTC] PHP Warning:  include_once(/home/myusr/public_html/misite.cl/Index/wp-content/plugins/webpay-woocommerce-plugin/classes/templates/webpay_thankyou.php): failed to open stream: No such file or directory in /home/myusr/public_html/misite.cl/Index/wp-content/plugins/webpay-woocommerce-plugin/classes/WC_Gateway_Webpayplus.php on line 740
    [11-May-2016 14:24:58 UTC] PHP Warning:  include_once(): Failed opening '/home/myusr/public_html/clugchile.cl/Index/wp-content/plugins/webpay-woocommerce-plugin/classes/templates/webpay_thankyou.php' for inclusion (include_path='.:/opt/alt/php54/usr/share/pear:/opt/alt/php54/usr/share/php') in /home/myusr/public_html/misite.clIndex/wp-content/plugins/webpay-woocommerce-plugin/classes/WC_Gateway_Webpayplus.php on line 740
    /wp-content/plugins/webpay-woocommerce-plugin/classes/templates/webpay_thankyou.php
    

    When I tried to go to this path I realized it doesn't exists

     '/home/myusr/public_html/clugchile.cl/Index/wp-content/plugins/webpay-woocommerce-plugin/classes/templates/webpay_thankyou.php'
    

    I think that's the problema the thank you page doesn´t exists, where can I find it?

  14. Nibaldo Perot

    Hola, @gerson_cordero disculpa, quería saber si me podrías ayudar, ya que también tengo el error que Angel en mi log de errores, del ack(46) ya verifique los datos de la carpeta wp-content/uploads/webpay-comun y están correctamente creados, y las llaves están operativas, ya que el pago pasa, de hecho ya tengo el descuento en mi cuenta. Al finalizar la compra me aparece el texto "Desgraciadamente, tu pedido no puede procesarse; el banco/comercio ha rechazado tu transacción. Por favor, intenta realizar la compra de nuevo." ¿tienes alguna idea de a que se puede deber?

  15. Gerson Cordero

    @AVMp22 Ok, efectivamente, el path es wp-content/plugins/webpay-woocommerce-plugin/templates no classes/templates como te sale ahi. En el archivo: wp-content / plugins / webpay-woocommerce-plugin / classes / WC_Gateway_Webpayplus.php en la linea 740 dice: include_once plugin_dir_path(FILE) . 'templates/webpay_thankyou.php'; Corrijelo manualmente cambiando "plugin_dir_path" (que lo esta tomando malo) por la ruta correcta de forma que quede: include_once '//midominio.cl/wp-content/plugins/webpay-woocommerce-plugin/templates/webpay_thankyou.php'; o tambien lo puedes dejar como: include_once plugin_dir_path(FILE) . '../templates/webpay_thankyou.php';

    @Nibi_Perot Lo mas probable es que sea el mismo error, revisa el PHP log por si tienes un error parecido al de Angel

  16. Angel Millan

    ya lo corregi @gerson_cordero pero me sigue saliendo el Error 46, ya no se que mas hacer porque debería ser asi de sencillo, colocar el path absoluto, corregir esta linea que ya no me da error por cierto, ya con eso deberia funcionar, las llaves, podrán ser? las llaves que me enviaste pueden ser utilizadas para cualquier SO? me refiero a si es 32 o 64 bits? yo estoy utilizando los CGI de 32 bits

  17. Gerson Cordero

    @AVMp22 las llaves son agnosticas al sistema que utilices. El error que te sale es el mismo? Prueba usando esto:

    include_once plugin_dir_path(FILE) . '../templates/webpay_thankyou.php';
    

    Solo añadi ../ antes del template para que salga de la carpeta classes y se vaya por el camino correcto.

  18. Nibaldo Perot

    @gerson_cordero sigo con el problema, de transbank me indican que debo "Revisar que las funciones y métodos utilizados en la programación de la página de cierre (validaciones) estén habilitados en el servidor.", aparte de ver los permisos de los archivos que están en 755, a lo que apuntan es a poder verificar que la respuesta es "ACEPTADO" para una operación, sabes como puedo validar esto en el archivo WC_Gateway_Webpayplus.php ?, se agradece igualmente la ayuda ya aportada.

  19. Gerson Cordero

    @Nibi_Perot revisa en el archivo WC_Gateway_webpayplus.php la linea 372 que salen similares a estas:

    /* ***************** CONFIGURAR AQUI ****************** */
    $myPath = $webpay_comun_folder . DIRECTORY_SEPARATOR . "dato$TBK_ID_SESION.log";
    //GENERA ARCHIVO PARA MAC
    $filename_txt = $webpay_comun_folder . DIRECTORY_SEPARATOR . "MAC01Normal$TBK_ID_SESION.txt";
    // Ruta Checkmac
    $cmdline = $this->macpath . "/tbk_check_mac.cgi $filename_txt";
    /* ***************** FIN CONFIGURACION **************** */ 
    

    Recuerdo que en un dominio donde los cgi-bin y los archivos no quedaron en la configuracion estandard tuve problemas con que guardaba en un directorio y trataba de leerlo en otro y tuve que ajustar ahi acorde. Tambien desde ahi en adelante salen las funciones de validacion (si sabes PHP) Si quieres puedes mandarme un mensaje y vemos tu caso especifico para poder saber como va la estructura de archivos de tu hosting.

    Saludos

  20. Claudio Reyes

    Hola estimados.. tengo el mismo problema que todos ustedes, ack Error 46, realice todas las acciones señaladas en la wiki, revise cada uno de los parametros, todo funciona..con excepción de que no genera los archivos datxxxxx y MAC01xxxx en wp-content/uploads/webpay-comun. Alguien me puede ayudar en eso por favor? Saludos

  21. Gerson Cordero

    @claudio_reyes_ tienes que revisar los permisos de escritura de la carpeta, hay un archivo en la carpeta helpers que te revisa y genera las carpetas en caso que no se haya realizado correctamente al instalar el plugin.

  22. Claudio Reyes

    Gerson, ya he realizado el cambio de permisos.. y escribe solo el datoxxxxxxx.log pero no escribe ningun MAC01XXXX, creo que es por que no se cierra la transacción asi que ya no es un tema de permisos.

  23. Gerson Cordero

    Activa el debug mode de wordpress y el debug log, intenta una transaccion y revisa el debug.log que se genera. Lo mas probable es que te suceda lo mismo que nos esta pasando con Nibaldo, que en ningun momento entra al XT_COMPRA a generar el mac y checkearlo.

  24. Claudio Reyes

    Estimado.. segun los registros log, todo funciona bien.. incluso genera el MAC mas alla de eso.. no hay ningún registro que me diga que falla!.. activaré el debug de wordpress, a ver que pasa!! ara que corrobores.. que el Mac se genera.. te adjunto el log del plugin!

              ;      634177;   ;Filtro    ;Inicio                                  ;17052016      ;025854;201.215.140.13 ;OK ;                    ;Inicio de filtrado                                                      
              ;      634177;   ;Filtro    ;tbk_param.txt                           ;17052016      ;025854;201.215.140.13 ;OK ;                    ;Archivo parseado                                                        
              ;      634177;   ;Filtro    ;Terminado                               ;17052016      ;025854;201.215.140.13 ;OK ;                    ;Datos Filtrados con exito                                               
    346833497 ;      634177;   ;pago      ;inicio                                  ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Parseo realizado                                                        
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Datos en datos/tbk_config.dat                                           
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Mac generado                                                            
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Construccion TBK_PARAM                                                  
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;TBK_PARAM encriptado                                                    
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Datos listos para ser enviados                                          
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Medio 2: Por redireccion                                                
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Redireccion web                                                         
    346833497 ;      634177;   ;pago      ;https://certificacion.webpay.cl         ;17052016      ;025854;201.215.140.13 ;OK ;597026007976        ;Todo OK                                                                 
              ;      636054;   ;resultado ;Desencriptando                          ;17052016      ;030048;200.10.12.55   ;OK ;                    ;TBK_PARAM desencriptado                                                 
              ;      636054;   ;resultado ;Validacion                              ;17052016      ;030048;200.10.12.55   ;OK ;                    ;Entidad emisora de los datos validada                                   
              ;      636054;   ;resultado ;115                                     ;17052016      ;030048;200.10.12.55   ;OK ;                    ;Parseo de los datos                                                     
              ;      636054;   ;resultado ;115                                     ;17052016      ;030048;200.10.12.55   ;OK ;                    ;http://webpay.artevascular.cl/?wc-api=WC_Gateway_Webpayplus&xt_compra   
    346833497 ;      636054;   ;transacc  ;346833497                               ;17052016      ;030048;200.10.12.55   ;OK ;597026007976        ;conectandose al port :(80)                                              
    346833497 ;      636054;   ;resultado ;logro abrir_conexion                    ;17052016      ;030048;200.10.12.55   ; 0 ;597026007976        ;Abrio socket para conex-com                                             
    346833497 ;      636054;   ;transacc  ;346833497                               ;17052016      ;030048;200.10.12.55   ;OK ;597026007976        ;POST a url http://webpay.artevascular.cl/?wc-api=WC_Gateway_Webpayplus  
    346833497 ;      636054;   ;transacc  ;346833497                               ;17052016      ;030048;200.10.12.55   ;OK ;597026007976        ;mensaje enviado                                                         
              ;      636054;   ;resultado ;115                                     ;17052016      ;030048;200.10.12.55   ;OK ;                    ;tienda NO acepto transaccion                                            
              ;      636054;   ;resultado ;115                                     ;17052016      ;030048;200.10.12.55   ;OK ;                    ;respuesta enviada a TBK (ERR)                                           
    346833497 ;      636054;   ;resultado ;datoscom                                ;17052016      ;030048;200.10.12.55   ;Ok ;597026007976        ;Error al obtener ack (46)                                               
              ;      636054;   ;resultado ;115                                     ;17052016      ;030048;200.10.12.55   ;ERR;                    ;46 
    
  25. Claudio Reyes

    Cristian Tala, Gerson Cordero miren este bug: Me lo acuso despues de haber instalado el plugin Debug Bar.. Esto explica mucho

    SELECT * FROM wpyc_webpay WHERE idOrder = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    NOTICE: wp-content/plugins/webpay-woocommerce-plugin/templates/webpay_thankyou.php:6 - Undefined variable: order_id require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/ArtemisMag/page.php'), the_content, apply_filters('the_content'), call_user_func_array, do_shortcode, preg_replace_callback, do_shortcode_tag, call_user_func, WC_Shortcodes::checkout, WC_Shortcodes::shortcode_wrapper, call_user_func, WC_Shortcode_Checkout::output, WC_Shortcode_Checkout::order_received, wc_get_template, include('/plugins/woocommerce/templates/checkout/thankyou.php'), do_action('woocommerce_thankyou_webpayplus'), call_user_func_array, WC_Gateway_Webpayplus->webpayplus_return_handler, include_once('/plugins/webpay-woocommerce-plugin/templates/webpay_thankyou.php')

    Dice que la variable order_id no esta definida!!

  26. Victor Ramos Santander

    Claudio, yo logre que me generara el MAC colocando esto en /cgi-bin/tbk_config.dat

    HTML_TR_NORMAL = http://TUTIENDA/word/?wc-api=WC_Gateway_Webpayplus&xt_compra

    Sin embargo al igual que los demas a pesar que me genera el archivo mac01xxxx no me finaliza la compra ok dando siempre error 46

  27. Gerson Cordero

    @claudio_reyes_ Si te da ese error, es posible que tengas problemas con la instalacion y no se te haya generado la table para comenzar. Revisa si tienes la tabla wpyc_webpay dentro de tu base de datos del WordPress. @Vikthor_CL si te da error 46 pero si te genera el mac01xxxx y el datoxxxxx significa que tienes un error en las llaves. Prueba subir las que puse mas arriba (sin descomprimir, las subes directo y las descomprimes en el servidor para evitar errores de transmision).

  28. Victor Ramos Santander

    Lo hice colocando las llaves que indicas pero no me funciono. ¿En la configuración del plugin que pagina se debe dejar como Return Page? hoy tengo puesto Checkout.

  29. Claudio Reyes

    Gerson, revise la tala, efectivamente existe, se creo.. pero nonha guardado ninguno de los registros de las más de 150 pruebas de compra que he intentado hasta ahora... que más podría ser? ...muchas gracias por las respuestas a todos!!

  30. Gerson Cordero

    Posiblemente error de permisos o error de sintaxis. Revisa las consultas SQL en el webpay_thankyou y en el class. Aunque debieras reinstalar el plugin de cero, ya que no tiene errores el que esta subido. De hecho lo probe hace menos de 3 dias y ya me dieron el alta en transbank.

  31. Claudio Reyes

    Estimados, ya lo solucioné. Entre varias correcciones "por errores del hosting" y despues de llegar al típico error 46 donde el archivo MAC no se creaba, se debía sólo a la falta de comunicación de transbank por que la IP del hosting cambiaba y era diferente a la informada. Luego de corregir el error 46 me dio el error input(1) y lo solucione en la Protección de Enlace Directo en el Cpanel, agregué la dirección https://certificacion.transbank.cl a direcciones permitidas, seleccioné "Permita solicitudes Directas" y agregué a la redirección de solicitudes la URL del archivo http://misitio.cl/cgi.bin/tbk_bp_resultado.cgi y listo, varios días de cabeceos y cafe con CocaCola han acabado! Muchas gracias a todos por la ayuda y por el aporte! A Cristian Tala por su magnifico plugin y su predisposicion a ayudar! Saludos!! PD: Corrije la Wiki, aun te refieres al archivo webpay_data y crear la carpeta comun!. Esto lleva a confusión!.. ya que te refieres a la carpeta webpay-comun co permisos chmod en 0777 alojada en /wp-content/uploads tambien con chmod 0777.

  32. Victor Ramos Santander

    Revisando log me dice que usa una funcion obsoleta

    PHP Notice: WC_Shortcode_Checkout->output se ha llamado con un argumento que es <strong>obsoleto</strong> desde la versión 2.1! "order" is no longer used to pass an order ID. Use the order-pay or order-received endpoint instead. in /home/pxfia/public_html/word/wp-includes/functions.php on line 3842

  33. Claudio Reyes

    Victor .. Efectivamente lo que me comentas también me sucedió. Lo de la función obsoleta, es solo una notificación, descártala puesto que no importa por el momento, esa vulnerabilidad se soluciona cuando todo esta perfectamente bien configurado. En cuanto a lo de la variable Id_order se soluciona con los permisos de todas las capetas. todas las involucradas son 755, dentro del cgi-bin, los archivos cgi también, si le das 0777 a los cgi no tendras respuesta, luego en la carpeta wp-content/uploads debes darle chmod 0777 y a la webpay-comun tambien chmod 0777, revisa ademas que la IP que pones en el tbk_config.dat (0755) sea efectivamente la IP asignada a tu hosting, y que sea correcta la direccion del HTML_TR_NORMAL = http://tusitio.cl/?wc-api=WC_Gateway_Webpayplus&xt_compra y asi deberia funcionar todo de inmediato.. Recuerda dos cosas importantes, 1° desactivar el MODsecurity , 2° agregaen la lista de Configurar protección de enlace directo: la url de transbank (luego recuerda hacerlo en producción también https://webpay.transbank.cl) http://certificacion.webpay.cl, agrega la url de la ubicacion del CGI que hace toda la magia... http://tudominio.cl/cgi-bin/tbk_bp_resultado.cgi ... y todo irá bien

  34. Emilio Venegas

    Claudio, hola, estuve leyendo tus soluciones porqué tengo el mismo error que tenías tu, el error 46. La verdad es que he podido seguir todos los pasos menos el tema del mod security, ya que la simpatiquisima gente del hosting no me lo quieren desactivar debido a que estoy trabajando en un servidor compartido. ¿No sabes de alguna forma de sortear el tema del mod security?, adicionalmente no he podido encontrar las carpetas de uploades en el wp-content para otorgar permisos 0777, ya me estoy volviendo loco. u.u

  35. Claudio Reyes

    Emilio.. tienes CPANEL, Parallel Plesk o WHM como administrador? El Mod Secure lo ouedes administrar desde el panel.. es solo darle click a apagado en tu dominio.. no debe presentarte ningún problema, ya que es un modulo local.. y es para cada sitio.. si no puedes.. crea un subdominio..e instalas todo desde 0 en ese subdominio.. ahi no tendras problemas para desactivar el ModSecurity..
    Si gustas mas tarde te puedo ayudar a solucionarlo.. La carpeta uploads esta dentro de WP-content.. se crea por defecto.. es parte de wordpress.. y dentro de esa carpeta, el plugin de Cristian Tala crea la carpeta webpay-comun. Sino se crea.. tu la creas y le das el permiso 0777 avisame como te va

  36. Claudio Reyes

    Emilio.. no puedes saltarte el ModSecurity ya que es una protección muy necesaria apra evitar XSS y SQL injection.. entre otros males... por eso se hace administrable por sitio. y permite modificar el estatus para cada sitio alojado en tu espacio de hosting.. por lo que debes buscarlo en el panel como una aplicación más en el bloque de seguridad de tu CPANEL junto a SSH y SSL..

  37. Emilio Venegas

    No si mi Cpanel no tiene la opción del ModSecurity, y al abrir tickets y pedir que me lo desactiven me dicen que no porque mi hosting es compartido, alfinal el tema del ModSecurity era como la última esperanza que tenía para hacer funcionar este tema.

    modsecurity.jpg

  38. Claudio Reyes

    Ok.. pidele qiue pongan las ips de transbank en lista blanca .. con eso "se salta" el ModSecurity.. en realidad no lo salta pero es una buena forma de evitar el bloqueo de trafico desconocido.. prueba con eso! debería funcionar.

  39. Emilio Venegas

    Estimado Claudio, mi problema estaba en que tenía deshabilitada la función exec, cuando yo había preguntado expresamente si esa función estaba habilitada, pero bueno, ahora si la habilité y funcionó todo, gracias por tu disposición para ayudarme, porfin terminé con esto, jeje.

    Saludos!

  40. Emilio Venegas

    Sii gracias, oye una última consulta si puede ser posible, para envíar el documento evidencia, esta parte no me quedó muy clara:

    *Validación del certificado / CheckMac:

    • Extracto de código fuente donde se realiza la validación.* ¿Aquí tengo que copiar alguna parte del código?.

    Gracias.

  41. Gerson Cordero

    Estimado,

    Esta es la parte que tiene que enviar:

    public function xt_compra() {
                global $webpay_table_name;
                global $wpdb;
                global $woocommerce;
                global $webpay_comun_folder;
                $sufijo = "[XT_COMPRA]";
                log_me("Iniciando xt_compra", $sufijo);
    
                //rescate de datos de POST.
                $TBK_RESPUESTA = $_POST["TBK_RESPUESTA"];
                $TBK_ORDEN_COMPRA = $_POST["TBK_ORDEN_COMPRA"];
                $TBK_MONTO = $_POST["TBK_MONTO"];
                $TBK_ID_SESION = $_POST["TBK_ID_SESION"];
                $TBK_TIPO_TRANSACCION = $_POST['TBK_TIPO_TRANSACCION'];
                $TBK_CODIGO_AUTORIZACION = $_POST['TBK_CODIGO_AUTORIZACION'];
                $TBK_FINAL_NUMERO_TARJETA = $_POST['TBK_FINAL_NUMERO_TARJETA'];
                $TBK_FECHA_CONTABLE = $_POST['TBK_FECHA_CONTABLE'];
                $TBK_FECHA_TRANSACCION = $_POST['TBK_FECHA_TRANSACCION'];
                $TBK_HORA_TRANSACCION = $_POST['TBK_HORA_TRANSACCION'];
                $TBK_ID_TRANSACCION = $_POST['TBK_ID_TRANSACCION'];
                $TBK_TIPO_PAGO = $_POST['TBK_TIPO_PAGO'];
                $TBK_NUMERO_CUOTAS = $_POST['TBK_NUMERO_CUOTAS'];
    
    
                //Validación de los datos del post.
                if (!isset($TBK_RESPUESTA) || !is_numeric($TBK_RESPUESTA))
                    die('RECHAZADO');
                if (!isset($TBK_ORDEN_COMPRA))
                    die('RECHAZADO');
                if (!isset($TBK_MONTO) || !is_numeric($TBK_MONTO))
                    die('RECHAZADO');
                if (!isset($TBK_ID_SESION) || !is_numeric($TBK_ID_SESION))
                    die('RECHAZADO');
                if (!isset($TBK_TIPO_TRANSACCION))
                    die('RECHAZADO');
                if (!isset($TBK_CODIGO_AUTORIZACION) || !is_numeric($TBK_CODIGO_AUTORIZACION))
                    die('RECHAZADO');
                if (!isset($TBK_FINAL_NUMERO_TARJETA) || !is_numeric($TBK_FINAL_NUMERO_TARJETA))
                    die('RECHAZADO');
                if (!isset($TBK_FECHA_CONTABLE) || !is_numeric($TBK_FECHA_CONTABLE))
                    die('RECHAZADO');
                if (!isset($TBK_FECHA_TRANSACCION) || !is_numeric($TBK_FECHA_TRANSACCION))
                    die('RECHAZADO');
                if (!isset($TBK_HORA_TRANSACCION) || !is_numeric($TBK_HORA_TRANSACCION))
                    die('RECHAZADO');
                if (!isset($TBK_ID_TRANSACCION) || !is_numeric($TBK_ID_TRANSACCION))
                    die('RECHAZADO');
                if (!isset($TBK_TIPO_PAGO))
                    die('RECHAZADO');
                if (!isset($TBK_NUMERO_CUOTAS) || !is_numeric($TBK_NUMERO_CUOTAS))
                    die('RECHAZADO');
    
                $order_id = explode('_', $TBK_ORDEN_COMPRA);
                $order_id = (int) $order_id[0];
    
                if (!is_numeric($order_id))
                    die('RECHAZADO');
    
    
    
                /**
                 * transbank pide que se de "ACEPTADO" si la respuesta está entre -8 y -1
                 */
                if ($TBK_RESPUESTA >= -8 && $TBK_RESPUESTA <= -1)
                    die("ACEPTADO");
    
                //Validar que la orden exista
                $order = new WC_Order($order_id);
                //Si la orden no existe rechazo
                if (!$order)
                    die('RECHAZADO');
                //Si existe continuo con el estado.
                log_me($order->status, $sufijo);
    
    
                //Antes de proceder validamos que el monto a pagar, corresponda con el monto que se debe pagar.
                if (!$this->validarOrdenMonto($order_id, $TBK_MONTO))
                    die('RECHAZADO');
    
    
    
                //Si son distintos los montos a pagar rechazo.
                if ($TBK_MONTO != $order->order_total)
    
    
    
                //Si la orden de compra no tiene status es debido a que no existe
                    if ($order->status == '') {
                        log_me("ORDEN NO EXISTENTE " . $order_id, $sufijo);
                        die('RECHAZADO');
                    } else {
                        log_me("ORDEN EXISTENTE " . $order_id, $sufijo);
                        //CUANDO UNA ORDEN ES PAGADA SE VA A PROCESSING.
    
                        if ($order->status == 'completed' || $order->status == 'processing' || $order->status == 'refunded' || $order->status == 'canceled') {
                            log_me("ORDEN YA PAGADA (" . $order->status . ") EXISTENTE " . $order_id, "\t" . $sufijo);
                            die('RECHAZADO');
                        } else {
    
                            if ($order->status == 'pending' || $order->status == 'failed') {
                                log_me("ORDEN DE COMPRA NO PAGADA (" . $order->status . "). Se procede con el pago de la orden " . $order_id, $sufijo);
                            } else {
                                log_me("ORDEN YA PAGADA (" . $order->status . ") EXISTENTE " . $order_id, "\t" . $sufijo);
                                die('RECHAZADO');
                            }
                        }
                    }
    
    
                /*             * **************** CONFIGURAR AQUI ****************** */
                $myPath = $webpay_comun_folder . DIRECTORY_SEPARATOR . "dato$TBK_ID_SESION.log";
                //GENERA ARCHIVO PARA MAC
                $filename_txt = $webpay_comun_folder . DIRECTORY_SEPARATOR . "MAC01Normal$TBK_ID_SESION.txt";
                // Ruta Checkmac
                $cmdline = $this->macpath . "/tbk_check_mac.cgi $filename_txt";
                /*             * **************** FIN CONFIGURACION **************** */
                $acepta = false;
                //lectura archivo que guardo pago.
                if ($fic = fopen($myPath, "r")) {
                    $linea = fgets($fic);
                    fclose($fic);
                }
                $detalle = explode(";", $linea);
                if (count($detalle) >= 1) {
                    $monto = $detalle[0];
                    $ordenCompra = $detalle[1];
                }
                log_me("INICIANDO GUARDADO EN ARCHIVO", $sufijo);
                //guarda los datos del post uno a uno en archivo para la ejecución del MAC
                $fp = fopen($filename_txt, "wt");
                while (list($key, $val) = each($_POST)) {
                    fwrite($fp, "$key=$val&");
                }
                fclose($fp);
                log_me("ARCHIVO CERRADO", $sufijo);
                //Validación de respuesta de Transbank, solo si es 0 continua con la pagina de cierre
                if ($TBK_RESPUESTA == "0") {
                    $acepta = true;
                } else {
                    $acepta = false;
                }
                //validación de monto y Orden de compra
                //
                //
              if ($TBK_MONTO == $monto && $TBK_ORDEN_COMPRA == $ordenCompra && $acepta == true) {
    
                    /**
                     * validamos que la orden de compra no esté repetida preguntando a la base de datos.
                     *
                     */
                    log_me("VERIFICANDO QUE LA ORDEN NO ESTÉ REPETIDA", $sufijo);
                    $res = $wpdb->get_row("SELECT count(*) as total FROM " . $webpay_table_name . " WHERE idOrder = " . $TBK_ORDEN_COMPRA, ARRAY_A);
    
    
                    if ($res['total'] > 0) {
    
                        $acepta = false;
                    } else {
    
                        $acepta = true;
                    }
                } else {
                    log_me("ORDEN REPETIDA O DATOS NO VALIDADOS", $sufijo);
                    $acepta = false;
                }
    
                //Validación MAC
                log_me("INICIANDO VALIDACION MAC", $sufijo);
                if ($acepta == true) {
                    exec($cmdline, $result, $retint);
                    if ($result [0] == "CORRECTO")
                        $acepta = true;
                    else
                        $acepta = false;
                }
                log_me("FIN VALIDACION MAC", $sufijo);
    
                if ($acepta == true) {
                    die("ACEPTADO");
                } else {
                    die("RECHAZADO");
                }
    
                log_me("FINALIZANDO XT_COMPRA", $sufijo);
            }
    

    Saludos

  42. Emilio Venegas

    Hola, ¿algunos de ustedes no tiene el documento evidencia hecho con woocommerce?, porque no entiendo esta parte:

    *Validación de Orden de Compra:

    Para esta validación se puede ocupar alguna orden de compra utilizada anteriormente o una nueva transacción exitosa, con los print correspondientes:
    
        Debe incluir el POST mostrando los parámetros enviados o desde que se presiona el botón de pago en el sitio web del comercio al servidor de pago
    

    o Además del Voucher de Transbank con el pago exitoso (de la orden original)

    o Página de éxito de la orden original.

     Se debe replicar el intento para pagar la misma orden de compra nuevamente, con el POST original y sacar print de pantalla. ß se debe enviar nuevamente los 6 parametros a la CGI de pago (‘Orden de compra’, ‘Monto’, ‘url éxito’, ‘url fracazo’ y opcional ‘id seccion’).
    Formulario de Transbank, donde se seleccione Crédito o Redcompra. Pagar con VISA y print de pantalla
    Print de pantalla del Voucher de Transbank con el pago exitoso.
    Página de fracaso con el respectivo print de pantalla
    

    * Otra opción es que si el comercio lo realiza de manera interna, lo indique textualmente para considerar que si se realiza la validación.

    Y llamando a la gente de transbank para que me ayuden me terminan dejando con más dudas que otra cosa..

  43. Log in to comment