Title: Hooks del plugin
Last modified: September 2, 2020

---

# Hooks del plugin

 *  Resolved [Jairo Ochoa](https://wordpress.org/support/users/jairoochoa/)
 * (@jairoochoa)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/)
 * Hola
 * Estamos trabajando en una web que se conecta a una API y si el pago es correcto
   debe obtener de la API una url y almacenarla en un meta-field del pedido.
    A 
   la vuelta del TPV el cliente debe ver el enlace en la página de confirmación 
   de pedido.
 * ¿Tiene el plugin un hook para el evento del pago OK o debemos usar los hook de
   WooCommerce?
    Creo que sería en este caso ‘woocommerce_order_status_processing’.
 * Muchas gracias.

Viewing 15 replies - 1 through 15 (of 20 total)

1 [2](https://wordpress.org/support/topic/hooks-del-plugin/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/hooks-del-plugin/page/2/?output_format=md)

 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13353102)
 * Hola,
 * Por lo que entiendo debéis ponerlo en la página de agradecimiento, que es la 
   que se muestra cuando el usuario vuelve a la web tras el pago.
 * Para hacerlo, solo debéis hacer lo siguiente:
 *     ```
       function pagina_agradecimiento( $text, $order ) {
   
       	if ( ! empty( $order ) ) {
       		$order_id      = $order->get_id();
       		$status        = $order->get_status();
       		// Aquí debeis poner la lógica del status. Pueden haber muchos estados diferentes creados por diferentes plugins que signifiquen que no esté pagado.
       		$texto_anadido = '<p>Añadís todo el texto que querais para el ID de pedido ' . $order_id . '</p>';
   
       		return $text . $texto_anadido;
       	} else {
       		return $text;
       	}
       }
       add_filter( 'woocommerce_thankyou_order_received_text', 'pagina_agradecimiento', 20, 2 );
       ```
   
 * Saludos
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13353133)
 * Ah, y si queréis utilizar hooks para el momento, son 3 hooks diferentes.
 * Para la parte pública,
 * `add_action( 'woocommerce_payment_complete', $order_id );`
 * Y para la adminsitración:
 *     ```
       add_action( 'woocommerce_order_status_processing', $order_id );
       add_action( 'woocommerce_order_status_completed', $order_id );
       ```
   
 * Los dos ya que se puede realizar el cambio a cualqueira de los dos estados. Debereis
   de alguna forma controlar si ya ha habido un cambio anterior, es decir, que se
   si pasa a procesando, no se vuelva a realizar la acción cuando se pase a completado.
   Por ejemplo mediante un meta que podría ser la misma URL que debeis conseguir
   mediante la API.
 *  Thread Starter [Jairo Ochoa](https://wordpress.org/support/users/jairoochoa/)
 * (@jairoochoa)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13356853)
 * [@jconti](https://wordpress.org/support/users/jconti/) muchas gracias por la 
   respuesta.
 * woocommerce_order_status_processing es el que sugería yo en la pregunta, lo que
   no tenía claro es si tu plugin creaba otro hook distinto.
 * La web tiene un producto único “ticket”.
    A su vez hay un buscador de viajes 
   que se conecta a una API y recibe orígenes, destinos, resultados, etc. Cuando
   finalmente el cliente ha selecciona (por ejemplo) “Vigo-Oporto 01/09/2020 @ 09:
   00” se inyecta en el Carrito el producto ticket al cual se le modifica el nombre
   según el viaje elegido. En el momento de hacer el Checkout y generarse el pedido,
   se envía a la API el viaje junto con el $order_id.
 * Y es en el momento del Pago OK cuando se le confirma a la API el $order_id.
    
   El intervalo entre ambas llamadas permite un tiempo de bloqueo de ese billete.
 * Así que la Página de Agradecimiento es tarde.
    Si por alguna razón el usuario
   no sale de la ventana del Redsys, por lo que sea, el billete no sería efectivo.
   Pero en cambio sí está pagado, así que la API debería tener conocimiento del 
   pago. Creo que además los emails se envían aunque no retorne a la tienda.
 * Así que la confirmación del pago a la API deber ser también asíncrona.
 * Y en ese momento recuperamos de la API las url de los billetes y la factura, 
   que guardamos en unos meta fields del pedido $order_id.
    En la Página de Agradecimiento
   el cliente ya los podría descargar, así como en el email que recibe o entrando
   en Mi Cuenta > Mis Pedidos.
 * Saludos
 *  Thread Starter [Jairo Ochoa](https://wordpress.org/support/users/jairoochoa/)
 * (@jairoochoa)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13361469)
 * [@jconti](https://wordpress.org/support/users/jconti/)
 * Funcionó con la forma de pago Contra Reembolso pero al pagar con Redsys nos falla,
   parece que no llama a la API para obtener los PDF.
    Haré más pruebas y te comento.
 * Tenemos estos mensajes:
 *     ```
       [04-Sep-2020 11:42:37 UTC] PHP Notice:  Undefined index: Ds_Merchant_Identifier in D:\HTDocs\misitio\wp-content\plugins\woo-redsys-gateway-light\includes\apiRedsys7.php on line 35
       [04-Sep-2020 11:42:37 UTC] PHP Notice:  Undefined index: Ds_ErrorCode in D:\HTDocs\misitio\wp-content\plugins\woo-redsys-gateway-light\includes\apiRedsys7.php on line 35
       [04-Sep-2020 11:42:37 UTC] PHP Notice:  Undefined index: Ds_PayMethod in D:\HTDocs\misitio\wp-content\plugins\woo-redsys-gateway-light\includes\apiRedsys7.php on line 35
       ```
   
 * Saludos
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13361508)
 * El plugin llama a la función específica de Woo para marcar los pedidos como pagados,
   y esa función dispara todos hooks necesarios.
 * De hecho, los hooks que os pasé son los que utilizo en el número secuencial de
   factura que tengo en la versión premium y funciona sin problemas
 * ¿Estás utilizando en la parte pública este?
 * `add_action( 'woocommerce_payment_complete', $order_id );`
 * Es el que se dispara realmente cuando Woo marca un pedido como pagado.
 * En cuanto a lo que os sale en los logs, lo sé. Seguramente lo arreglaré en la
   próxima versión. Esos errores salen en la API propia de Redsys, la que distribuye
   redsys para los desarrolladores, que está hecha muy bien (como puedes ver). En
   el premium ya lo arreglé en su día, o lo he arreglado para la próxima versión,
   no lo recuerdo la verdad.
 *  [Carlos Macías](https://wordpress.org/support/users/cmacias/)
 * (@cmacias)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362416)
 * Como la “otra parte” interesada en el mismo proyecto, comentar que estamos usando
 * `woocommerce_order_status_processing`
 * Que SI funciona con los otros pagos que no son por redsys.
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362498)
 * Usad el hook que os digo.
 * El contrareembolso os funciona ya que debéis marcar el pedido desde la administración,
   y por lo tanto es el hook `woocommerce_order_status_processing` tal y como ya
   os dije aquí [https://wordpress.org/support/topic/hooks-del-plugin/#post-13353133](https://wordpress.org/support/topic/hooks-del-plugin/#post-13353133)
 * ¿Qué otro plugin de pago os funciona con ese hook? Seguramente en vez de utilizar
   la función `payment_complete()` the WooCommerce (como hago yo) [https://docs.woocommerce.com/document/woocommerce-order-status-control/#section-5](https://docs.woocommerce.com/document/woocommerce-order-status-control/#section-5),
   utiliza update_status() [https://docs.woocommerce.com/document/payment-gateway-api/#section-4](https://docs.woocommerce.com/document/payment-gateway-api/#section-4).
   Ambos funcionan, pero lo correcto es utilziar la función, como yo hago.
 * Utilizad el hook `add_action( 'woocommerce_payment_complete', $order_id );` con
   Redsys, y vereis que os funciona.
 *  [Carlos Macías](https://wordpress.org/support/users/cmacias/)
 * (@cmacias)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362515)
 * Ok. Vamos a probarlo. Principalmente es con Redsys con quien debería funcionar.
   En un futuro podrían estar interesados en implementar otro tipo de pago a mayores,
   pero supongo que ese mismo hook funcionaría de igual forma.
 * Gracias :))
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362544)
 * Si, simplemente utilizad ambos hooks y pillareis siembre el marcado como pagado,
   lo hagan como lo hagan, ya sea mediante la función de pago, o mediante la de 
   cambio de estado.
 * Saludos
 *  Thread Starter [Jairo Ochoa](https://wordpress.org/support/users/jairoochoa/)
 * (@jairoochoa)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362556)
 * [@jconti](https://wordpress.org/support/users/jconti/) cuando hablas de _parte
   pública_ y _adminsitración_ … ¿te refieres a cambios de estado del pedido si 
   lo lanza el cliente o es un administrador que modifica un pedido ?
 * Seguramente el problema sea ese **woocommerce_order_status_processing** nos está
   funcionando con el pago Contra Reembolso, que marca el pedido automáticamente
   como Procesando (aunque realmente no está pagado) pero con Redsys no va.
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362576)
 * Si, todo lo que se realiza desde la administración o con la función update_status(),
   hay que detectarlo mediante estos dos hooks:
 *     ```
       add_action( 'woocommerce_order_status_processing', $order_id );
       add_action( 'woocommerce_order_status_completed', $order_id );
       ```
   
 * Pero en el front, si se utiliza la función payment_complete() (como hago yo),
   no sirven esos hooks, y hay que utilizar `add_action( 'woocommerce_payment_complete',
   $order_id );`
 *  [Carlos Macías](https://wordpress.org/support/users/cmacias/)
 * (@cmacias)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362593)
 * Pues nada. Acabamos de hacer cambios y con los dos hooks activados, nos sigue
   funcionando para el pago por transferencia (que es lo que menos nos preocupa 
   ya que solo lo usamos para pruebas) y por Redsys sigue sin funcionar … al menos
   no se nos añaden los datos que si se añaden por el otro método de pago…
 *     ```
       function add_booking_to_checkout($order_id)
       {
       ...
       }
       add_action('woocommerce_order_status_processing', 'add_booking_to_checkout', 10, 1);
       add_action('woocommerce_payment_complete', 'add_booking_to_checkout', 10, 1);
       ```
   
 *  [Carlos Macías](https://wordpress.org/support/users/cmacias/)
 * (@cmacias)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362599)
 * Y digo yo – que igual es una tontería – podría tener algo que ver la prioridad
   asignada a la ejecución del hook ?
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362620)
 * Mira, aquí lo teneis.
 * [https://plugins.trac.wordpress.org/browser/woocommerce/tags/4.4.1/includes/gateways/cod/class-wc-gateway-cod.php#L324](https://plugins.trac.wordpress.org/browser/woocommerce/tags/4.4.1/includes/gateways/cod/class-wc-gateway-cod.php#L324)
 * Si el pago que debe hacer es superior a 0, utiliza update_staus(), pero si es
   0, utiliza payment_complete().
 * Si queréis probar, cread un producto con coste 0, realizad el pago mediante contra
   reembolso (que no haya tampoco coste de envío ni nada, 100% gratis todo), y veréis
   que tampoco os funciona.
 *  Plugin Author [Jose Conti](https://wordpress.org/support/users/jconti/)
 * (@jconti)
 * [5 years, 9 months ago](https://wordpress.org/support/topic/hooks-del-plugin/#post-13362642)
 * Yo lo tengo sin prioridades puesta en mi código de premium y funciona.
 *     ```
       if ( 'yes' === get_option( 'wc_settings_tab_redsys_sort_invoices_is_active' ) ) {
       	add_filter( 'manage_edit-shop_order_columns', 'redsys_add_invoice_number' );
       	add_action( 'manage_shop_order_posts_custom_column', 'redsys_add_invoice_number_value', 2 );
       	add_filter( 'manage_edit-shop_order_sortable_columns', 'redsys_add_invoice_number_sortable_colum' );
       	add_action( 'woocommerce_payment_complete', 'redsys_sort_invoice_orders' );
       	add_action( 'woocommerce_order_status_processing', 'redsys_sort_invoice_orders_admin' );
       	add_action( 'woocommerce_order_status_completed', 'redsys_sort_invoice_orders_admin' );
       	if ( ! is_admin() ) {
       		add_filter( 'woocommerce_order_number', 'redsys_show_invoice_number', 10, 2 );
       	}
       }
       ```
   

Viewing 15 replies - 1 through 15 (of 20 total)

1 [2](https://wordpress.org/support/topic/hooks-del-plugin/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/hooks-del-plugin/page/2/?output_format=md)

The topic ‘Hooks del plugin’ is closed to new replies.

 * ![](https://ps.w.org/woo-redsys-gateway-light/assets/icon-256x256.png?rev=2692750)
 * [Payment Gateway for Redsys & WooCommerce Lite](https://wordpress.org/plugins/woo-redsys-gateway-light/)
 * [Support Threads](https://wordpress.org/support/plugin/woo-redsys-gateway-light/)
 * [Active Topics](https://wordpress.org/support/plugin/woo-redsys-gateway-light/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/woo-redsys-gateway-light/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/woo-redsys-gateway-light/reviews/)

## Tags

 * [hook](https://wordpress.org/support/topic-tag/hook/)

 * 20 replies
 * 3 participants
 * Last reply from: [Jairo Ochoa](https://wordpress.org/support/users/jairoochoa/)
 * Last activity: [5 years, 8 months ago](https://wordpress.org/support/topic/hooks-del-plugin/page/2/#post-13440174)
 * Status: resolved