Atenção!

Este artigo contém código PHP e destina-se a programadores. Oferecemos este código como cortesia, mas não prestamos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação adicional, consulte o tutorial da WPBeginner sobre como adicionar código personalizado.

Ignorar

Enviar Metadados para Pagamentos Stripe

Gostaria de enviar metadados para a Stripe quando os pagamentos forem processados através do seu formulário? Isto é particularmente útil se desejar adicionar algumas etiquetas que possa identificar facilmente nos seus pagamentos da Stripe.

Neste tutorial, mostraremos o trecho de código PHP necessário para enviar metadados como parte do pagamento através do WPForms.


Antes de começar, certifique-se de que o WPForms está instalado e ativado no seu site e que verificou a sua licença.

Criar um Formulário de Pagamento

Primeiro, terá de criar um novo formulário de pagamento ou editar um existente para aceder ao construtor de formulários. No construtor de formulários, adicione o campo Cartão de Crédito Stripe ao seu formulário.

Adicionar o campo de cartão de crédito Stripe ao seu formulário

Também terá de configurar o seu formulário para aceitar pagamentos Stripe. Se precisar de ajuda para configurar a Stripe no seu formulário, reveja esta documentação.

Adicionar o Trecho de Código para Enviar Metadados para a Stripe

Agora é hora de adicionar o trecho de código ao seu site que enviará os metadados quando os pagamentos da Stripe forem processados.

Se precisar de alguma ajuda para adicionar trechos de código ao seu site, consulte este tutorial.

Adicionar para Pagamentos Únicos e Pagamentos Iniciais de Subscrição

/**
 * 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 a enviar duas formas de metadados. Uma é atribuída a partir de um campo de formulário específico com $fields[3][ 'value' ]. Isto significa que qualquer valor inserido no campo do formulário com o ID 3, iremos capturá-lo e enviá-lo para a Stripe.

O metadata[ 'key' ] = 'some value for single payment'; também está a ser enviado, mas em vez de capturar algum valor do formulário que o utilizador preencheu, estamos a defini-lo nós mesmos no próprio código.

Terá de se lembrar de alterar cada um deles para corresponder ao que precisa no seu trecho de código. Por exemplo, terá de alterar o ID do campo 3 para corresponder ao ID do campo que deseja enviar, bem como o texto de some value for single payment.

Nota: Se precisar de ajuda para encontrar os seus IDs de campo ou se quiser direcionar um formulário específico e precisar de ajuda para encontrar o ID do formulário, reveja este tutorial.

Agora vê os metadados enviados para o Stripe quando o pagamento é processado

Adicionar 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 );

Adicionar Apenas para Pagamentos de Subscrição (Excluindo Pagamentos Únicos ou Pagamentos Iniciais de Subscrição)

/**
 * 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 respostas a algumas das principais perguntas que vemos sobre o uso de metadados com pagamentos da Stripe.

P: Como posso enviar múltiplos campos e direcionar um formulário específico?

R: Para direcionar um formulário e enviar múltiplos 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 );
pode enviar metadados para o stripe com múltiplos campos, bem como para apenas um formulário específico usando este trecho de código

Nota: Certifique-se de alterar os números dos IDs do formulário e do campo para corresponder aos seus próprios IDs.

É tudo! Agora aprendeu como enviar metadados com sucesso para a Stripe a partir do WPForms.

Em seguida, gostaria de alterar os subrótulos no campo Cartão de Crédito Stripe? Certifique-se de consultar o nosso guia para saber como alterar os subrótulos para o campo Cartão de Crédito Stripe.

Referência da Ação: wpforms_stripe_process_complete