soporta pruebas pesos pasarela moneda integrar identidad establecida entorno desactivada argentinos wordpress paypal-ipn woocommerce

wordpress - pruebas - ¿Qué función de WooCommerce se invoca en la respuesta del IPN de PayPal?



token de identidad de paypal (2)

Tengo un problema al averiguar qué función se llama cuando se completa un pago con Woocommerce y PayPal envía el IPN.

Se está recibiendo el IPN porque el archivo de registro de PayPal se actualiza tan pronto como hago clic en Pay , pero no puedo determinar qué función está escribiendo en ese archivo.

Necesito averiguar si ya existe una funcionalidad integrada para enviar correos electrónicos al administrador cuando se crea un pedido y dónde sucede esto.

Si existe, necesito modificarlo para enviarlo por correo electrónico a otras personas, y si no es así, necesito crearlo yo mismo, pero necesito saber dónde colocar el código.


Comprobando el archivo /wp-content/plugins/woocommerce/classes/gateways/paypal/class-wc-paypal.php , vemos que hay un gancho de acción dentro de la función check_ipn_response :

if ($this->check_ipn_request_is_valid()) : header(''HTTP/1.1 200 OK''); do_action("valid-paypal-standard-ipn-request", $_POST);

Puedes engancharlo así:

add_action( ''valid-paypal-standard-ipn-request'', ''so_12967331_ipn_response'', 10, 1 ); function so_12967331_ipn_response( $formdata ) { // do your stuff }


Sobre la base de la respuesta de @ brasofilo, tuve que hacer un trabajo extra para cada producto para el pedido actual.

Nota: Soy nuevo en la (des) serialización de datos, por lo que no sé por qué tuve que deshacer las comillas dobles para que funcionase unserialize() . Arrojó un error, de lo contrario. Tal vez hay una mejor manera de manejar esto.

function so_12967331_ipn_response( $formdata ) { if ( !empty( $formdata[''invoice''] ) && !empty( $formdata[''custom''] ) ) { if( $formdata[''payment_status''] == ''Completed'' ) { if( is_serialized( $posted[''custom''] ) ) { // backwards compatible // unserialize data $order_data = unserialize( str_replace(''/"'', ''"'', $posted[''custom''] ) ); $order_id = $order_data[0]; } else { // custom data was changed to JSON at some point $order_data = (array)json_decode( $posted[''custom''] ); $order_id = $order_data[''order_id'']; } // get order $order = new WC_Order( $order_id ); // got something to work with? if ( $order ) { // get user id $user_id = get_post_meta( $order_id, ''_customer_user'', true ); // get user data $user = get_userdata( $user_id ); // get order items $items = $order->get_items(); // loop thru each item foreach( $items as $order_item_id => $item ) { $product = new WC_Product( $item[''product_id''] ); // do extra work... } } } } }