¿Quieres enviar metadatos a Stripe cuando los pagos se procesan a través de tu formulario? Esto es particularmente útil si desea añadir algunas etiquetas que pueda identificar fácilmente en sus pagos de Stripe.
En este tutorial, le mostraremos el fragmento de PHP que necesita para enviar metadatos como parte del pago a través de WPForms.
Antes de empezar, asegúrese de que WPForms está instalado y activado en su sitio y que ha verificado su licencia.
Creación de un formulario de pago
En primer lugar, tendrá que crear un nuevo formulario de pago o editar uno existente para acceder al generador de formularios. En el constructor de formularios, sigue adelante y añade el campo Tarjeta de crédito Stripe a tu formulario.

También tendrá que configurar su formulario para aceptar pagos de Stripe. Si necesitas ayuda para configurar Stripe en tu formulario, consulta esta documentación.
Añadir el fragmento para enviar metadatos a Stripe
Ahora es el momento de añadir el fragmento a su sitio que enviará a través de los metadatos cuando se procesan los pagos de Stripe.
Si necesita ayuda para añadir fragmentos a su sitio, consulte este tutorial.
Añadir tanto para pagos únicos como para pagos iniciales de suscripción
/**
* 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 formas de metadatos. Uno se asigna desde un campo de formulario específico con $fields[3][ 'value' ]
. Esto significa que cualquier valor que se introduzca en el campo de formulario que tiene el ID de 3...lo tomaremos y lo enviaremos a Stripe.
En metadata[ 'key' ] = 'some value for single payment';
también se envía, pero en lugar de tomar un valor del formulario que rellenó el usuario, lo establecemos nosotros mismos en el código.
Tendrás que acordarte de cambiar cada uno de ellos para que coincida con lo que necesitas en tu fragmento. Por ejemplo, tendrá que cambiar el ID de campo 3 para que coincida con el ID de campo que desea enviar, así como el texto de algún valor para pago único.
Nota: Si necesita ayuda para encontrar sus IDs de campo o si quiere dirigirse a un formulario específico y necesita ayuda para encontrar el ID del formulario, por favor revise este tutorial.

Añadir sólo 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 sólo para pagos de suscripción (excluidos los pagos únicos o los pagos iniciales de suscripción)
/**
* 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 las respuestas a algunas de las preguntas más frecuentes sobre el uso de metadatos con los pagos de Stripe.
P: ¿Cómo puedo enviar varios campos y dirigirlos a un formulario concreto?
R: Para dirigir un formulario y enviar varios campos de metadatos, utilice el siguiente fragmento de código.
/**
* 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 );

Nota: Asegúrese de cambiar los números de ID de formulario y campo para que coincidan con sus propios ID.
Ya está. Ahora ha aprendido cómo enviar correctamente metadatos a Stripe desde WPForms.
A continuación, ¿desea cambiar las subetiquetas del campo Tarjeta de crédito de Stripe? Asegúrese de consultar nuestra guía para saber cómo cambiar las subetiquetas del campo Tarjeta de crédito de Stripe.
Relacionado
Acción de referencia: wpforms_stripe_process_complete