Valor personalizado en la carga útil del webhook de woocommerce

3 minutos de lectura

Tengo webhook con tema Pedido actualizado. Webhook entrega carga útil (información de pedido) en someotherdomain.com. Quiero agregar un campo adicional del formulario de pago para que se entregue en someotherdomain.com junto con la información del pedido.

He creado un campo de pago personalizado por:

add_action( 'woocommerce_after_order_notes', 'fs_custom_checkout_field' );


function fs_custom_checkout_field( $checkout ) {


echo '<div id="my_custom_checkout_field"><h2>' . __('Extra Information') . '</h2>';

woocommerce_form_field( 'fs_psid_field', array(
    'type'          => 'text',
    'class'         => array('my-field-class form-row-wide'),
    'label'         => __('Fill in this field'),
    'placeholder'   => __('Enter something'),
    ), $checkout->get_value( 'fs_psid_field' ));

echo '</div>';

}

Y guardó meta como:

add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );


function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['fs_psid_field'] ) ) {
        update_post_meta( $order_id, 'fs_psid_field', sanitize_text_field( $_POST['fs_psid_field'] ) );
    }
}

pero campo fs_psid_field no se publica a través de webhook.

P: ¿Cómo puedo publicar el valor de este campo a través del webhook de Woocommerce?

  • ¿Cómo está obteniendo los datos de carga útil del webhook?

    –Muhammad Sumon Molla Selim

    18 de agosto de 2016 a las 13:35

  • @MuhammadSumonMollaSelim Habilité REST api en la configuración de woocommerce y creé un enlace web allí.

    – Saqib Omer

    19 de agosto de 2016 a las 8:09

descubierto Primero agregue un campo personalizado en el formulario de pago.

add_action( 'woocommerce_after_order_notes', 'fs_custom_checkout_field' );

function fs_custom_checkout_field( $checkout ) {

    echo '<div id="my_custom_checkout_field"><h2>' . __('Extra Information') . '</h2>';

    woocommerce_form_field( 'fs_psid_field', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('Fill in this field'),
        'placeholder'   => __('Enter something'),
        ), $checkout->get_value( 'fs_psid_field' ));

    echo '</div>';

}

Luego guarde el valor del campo personalizado como meta

add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['fs_psid_field'] ) ) {
        update_post_meta( $order_id, 'fs_psid_field', sanitize_text_field( $_POST['fs_psid_field'] ) );
    }
}

Luego agregue el valor del campo personalizado en la respuesta api

function my_custom_wc_api_order_response( $order_data, $order ) {

    $psidMeta      = get_post_meta($order->id , 'fs_psid_field' , true );
    $order_data['psid'] = $psidMeta;
    return $order_data;
}

add_filter( 'woocommerce_api_order_response', 'my_custom_wc_api_order_response', 10, 3 );

  • Esto funciona muy bien, que está mucho más lejos de lo que yo estaba. ¿Es posible cancelar la llamada del webhook dados ciertos parámetros en los datos? más específicamente, si se crea el pedido, no quiero enviar un POST a mi sitio, si el estado cambia a pagado, entonces sí, quiero enviar el POST solo con campos específicos del cliente. lo siento si mi terminología no es correcta.

    – Ryan

    30 de noviembre de 2017 a las 18:20

  • En ese caso, necesitaría una llamada ajax más enlaces web.

    – Saqib Omer

    30 de noviembre de 2017 a las 18:22

  • @SaqibOmer cómo saber qué api usar en un gancho particular

    – Binjal Patel

    25 de agosto de 2020 a las 7:46

  • Depende de su requerimiento. Consulte la documentación de WooCommerce sobre webhooks.

    – Saqib Omer

    25 de agosto de 2020 a las 8:01

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad