¡Atención!

Este artículo contiene código PHP y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Enviar metadatos a Stripe Payments

¿Le gustaría enviar metadatos a Stripe cuando los pagos se procesen a través de su formulario? Esto es especialmente útil si desea agregar algunas etiquetas que pueda identificar fácilmente en sus pagos de Stripe.

En este tutorial, le mostraremos el fragmento de código PHP que necesita para enviar metadatos como parte del pago a través de WPForms.


Antes de comenzar, asegúrese de que WPForms esté instalado y activado en su sitio y de que haya verificado su licencia.

Creación de un formulario de pago

Primero, necesitará crear un nuevo formulario de pago o editar uno existente para acceder al constructor de formularios. En el constructor de formularios, agregue el campo Tarjeta de crédito de Stripe a su formulario.

Añadir el campo de tarjeta de crédito de Stripe a su formulario

También necesitará configurar su formulario para aceptar pagos de Stripe. Si necesita ayuda para configurar Stripe en su formulario, revise esta documentación.

Añadir el fragmento de código para enviar metadatos a Stripe

Ahora es el momento de agregar el fragmento de código a su sitio que enviará los metadatos cuando se procesen los pagos de Stripe.

Si necesita ayuda para agregar fragmentos de código a su sitio, consulte este tutorial.

Añadir para pagos únicos y pagos de suscripción iniciales

/**
 * Send metadata to Stripe when payment is processed for single payments and initial subscription payments.
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata( $fields, $form_data, $entry_id, $payment ) {
    if ( ! ( $payment instanceof  \WPForms\Vendor\Stripe\PaymentIntent ) && ! ( $payment instanceof \WPForms\Vendor\Stripe\Charge ) ) {
        return;
    }
 
    // Check if the field with id equals 3 value exists and assign it.
    if ( isset( $fields[3][ 'value' ] ) ) {
        $payment->metadata[ 'something' ] = $fields[3][ 'value' ];
    }
 
    // Assign fixed value (no additional checks required).
    $payment->metadata[ 'key' ] = 'some value for single payment';
 
    $payment->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata', 10, 4 );

En el fragmento de código anterior, estamos enviando dos tipos de metadatos. Uno se asigna desde un campo de formulario específico con $fields[3][ 'value' ]. Esto significa que, independientemente del valor que se introduzca en el campo del formulario que tenga el ID 3, lo tomaremos y lo enviaremos a Stripe.

También se está enviando metadata[ 'key' ] = 'some value for single payment';, pero en lugar de tomar algún valor del formulario que el usuario completó, lo estamos estableciendo nosotros mismos en el código.

Deberá recordar cambiar cada uno de ellos para que coincida con lo que necesita en su fragmento de código. Por ejemplo, deberá cambiar el ID del campo 3 para que coincida con el ID del campo que desea enviar, así como el texto de some value for single payment.

Nota: Si necesita ayuda para encontrar sus IDs de campo o si desea dirigirse a un formulario específico y necesita ayuda para encontrar el ID del formulario, revise este tutorial.

Ahora ve los metadatos enviados a Stripe cuando se procesa el pago

Añadir solo para pagos únicos

/**
 * Send metadata to Stripe when payment is processed for single payments only.
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_single_payment_custom_metadata( $fields, $form_data, $entry_id, $payment, $subscription ) {
 
    if ( ! empty( $subscription->id ) ) {
        return;
    }
 
    if ( ! ( $payment instanceof  \WPForms\Vendor\Stripe\PaymentIntent ) && ! ( $payment instanceof \WPForms\Vendor\Stripe\Charge ) ) {
        return;
    }
 
    // Check if the field with id equals 3 value exists and assign it.
    if ( isset( $fields[3][ 'value' ] ) ) {
        $payment->metadata[ 'something' ] = $fields[3][ 'value' ];
    }
 
    // Assign fixed value (no additional checks required).
    $payment->metadata[ 'key' ] = 'some value for single payment';
 
    $payment->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_single_payment_custom_metadata', 10, 5 );

Añadir solo para pagos de suscripción (excluyendo pagos únicos o pagos de suscripción iniciales)

/**
 * Send metadata to Stripe when payment is processed for subscription payments (excluding single payments and initial subscription payments).
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_subscription_custom_metadata( $fields, $form_data, $entry_id, $payment, $subscription ) {
    if ( ! ( $subscription instanceof \WPForms\Vendor\Stripe\Subscription ) ) {
        return;
    }
 
    // Check if the field with id equals 3 value exists and assign it.
    if ( isset( $fields[3][ 'value' ] ) ) {
        $subscription->metadata[ 'something' ] = $fields[3][ 'value' ];
    }
 
    // Assign fixed value (no additional checks required).
    $subscription->metadata[ 'key' ] = 'some value for subscription';
 
    $subscription->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_subscription_custom_metadata', 10, 5 );

Preguntas frecuentes

Estas son respuestas a algunas de las preguntas más frecuentes que recibimos sobre el uso de metadatos con pagos de Stripe.

P: ¿Cómo puedo enviar varios campos y dirigirme a un formulario específico?

R: Para dirigirse a un formulario y enviar varios campos de metadatos, utilice el fragmento de código a continuación.

/**
 * Send metadata to Stripe when payment is processed based on form ID.
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata_multiple( $fields, $form_data, $entry_id, $payment ) {
     
        // Only run this code on form ID 2614
        if ( absint( $form_data[ 'id' ] ) !== 2614 ) {
        return;
    }
 
    if ( ! ( $payment instanceof  \WPForms\Vendor\Stripe\PaymentIntent ) && ! ( $payment instanceof \WPForms\Vendor\Stripe\Charge ) ) {
        return;
    }
 
    // Capture the value listed in the field ID 0
        if ( isset( $fields[0][ 'value' ] ) ) {
        $payment->metadata[ 'Name' ] = $fields[0][ 'value' ];
    }
 
        // Capture the value listed in the field ID 1
    if ( isset( $fields[1][ 'value' ] ) ) {
        $payment->metadata[ 'Email' ] = $fields[1][ 'value' ];
    }
 
        // Capture the value listed in the field ID 2
    if ( isset( $fields[2][ 'value' ] ) ) {
        $payment->metadata[ 'Phone' ] = $fields[2][ 'value' ];
    }
 
        // Capture the value listed in the field ID 3
    if ( isset( $fields[3][ 'value' ] ) ) {
        $payment->metadata[ 'Address' ] = $fields[3][ 'value' ];
    }
 
    $payment->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata_multiple', 10, 4 );
puede enviar metadatos a stripe con varios campos, así como para un formulario específico utilizando este fragmento de código

Nota: Asegúrese de cambiar los números de ID de formulario y campo para que coincidan con sus propios IDs.

¡Eso es todo! Ahora ha aprendido a enviar metadatos a Stripe desde WPForms con éxito.

A continuación, ¿le gustaría cambiar las subetiquetas del campo Tarjeta de crédito de Stripe? Asegúrese de consultar nuestra guía para aprender cómo cambiar las subetiquetas del campo Tarjeta de crédito de Stripe.

Referencia de acción: wpforms_stripe_process_complete