Você gostaria de enviar metadados para o Stripe quando os pagamentos forem processados por meio de seu formulário? Isso é particularmente útil se você quiser adicionar algumas tags que possam ser facilmente identificadas em seus pagamentos do Stripe.
Neste tutorial, mostraremos o trecho de PHP necessário para enviar metadados como parte do pagamento por meio do WPForms.
Antes de começar, certifique-se de que o WPForms esteja instalado e ativado em seu site e que você tenha verificado sua licença.
Criação de um formulário de pagamento
Primeiro, você precisará criar um novo formulário de pagamento ou editar um formulário existente para acessar o construtor de formulários. No criador de formulários, vá em frente e adicione o campo Stripe Credit Card ao seu formulário.

Você também precisará configurar seu formulário para aceitar pagamentos com o Stripe. Se precisar de ajuda para configurar o Stripe em seu formulário, consulte esta documentação.
Adição do snippet para enviar metadados ao Stripe
Agora é hora de adicionar o snippet ao seu site que enviará os metadados quando os pagamentos do Stripe forem processados.
Se precisar de ajuda para adicionar snippets ao seu site, consulte este tutorial.
Adição de pagamentos únicos e pagamentos de assinatura inicial
/**
* 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 );
No trecho de código acima, estamos enviando duas formas de metadados. Uma é atribuída a partir de um campo de formulário específico com $fields[3][ 'value' ]
. Isso significa que qualquer valor inserido no campo do formulário que tenha a ID de 3Vamos pegar isso e enviar para o Stripe.
O metadata[ 'key' ] = 'some value for single payment';
também está sendo enviado, mas, em vez de pegar algum valor do formulário que o usuário preencheu, nós mesmos estamos definindo isso no próprio código.
Você precisará se lembrar de alterar cada um deles para que correspondam ao que você precisa em seu snippet. Por exemplo, você precisará alterar o ID de campo 3 para corresponder ao ID de campo que deseja enviar, bem como o texto de algum valor para pagamento único.
Observação: se precisar de ajuda para saber onde encontrar os IDs de campo ou se quiser direcionar um formulário específico e precisar de ajuda para encontrar o ID do formulário, consulte este tutorial.

Adição apenas para pagamentos ú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 );
Adição somente para pagamentos de assinatura (excluindo pagamentos únicos ou pagamentos de assinatura inicial)
/**
* 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 );
Perguntas frequentes
Estas são as respostas para algumas das principais perguntas que recebemos sobre o uso de metadados nos pagamentos com o Stripe.
P: Como posso enviar vários campos e direcioná-los para um formulário específico?
R: Para direcionar um formulário e enviar vários campos de metadados, use o trecho de código abaixo.
/**
* 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 );

Observação: não se esqueça de alterar os números de ID do formulário e do campo para que correspondam aos seus próprios IDs.
É isso aí! Agora você aprendeu a enviar metadados com sucesso para o Stripe a partir do WPForms.
Em seguida, você gostaria de alterar os subtítulos no campo Stripe Credit Card? Não deixe de consultar nosso guia para saber como alterar os subtítulos do campo Stripe Credit Card.
Relacionado
Referência da ação: wpforms_stripe_process_complete