Envio de metadados para o Stripe Payments

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

Neste tutorial, mostraremos o snippet 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

Em primeiro lugar, terá de criar um novo formulário de pagamento ou editar um formulário existente para aceder ao criador de formulários. No criador de formulários, vá em frente e adicione o campo Cartão de crédito Stripe ao seu formulário.

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

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

Adicionar o snippet para enviar metadados para o Stripe

Agora é altura de adicionar o snippet ao seu site que enviará os metadados quando os pagamentos Stripe forem processados.

Se precisar de ajuda para adicionar snippets ao seu site, consulte este tutorial.

Adição de pagamentos únicos e de pagamentos de subscrição 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 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 introduzido no campo do formulário que tenha o ID de 3vamos pegar nisso e enviá-lo para o Stripe.

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

Terá de se lembrar de alterar cada um deles para corresponder ao que precisa no seu snippet. Por exemplo, terá de alterar o ID de campo 3 para corresponder ao ID de campo que pretende enviar, bem como o texto de algum valor para pagamento único.

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

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

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 apenas para pagamentos de subscrição (excluindo pagamentos únicos ou pagamentos de subscrição 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 mais frequentes

Estas são as respostas a algumas das principais perguntas que recebemos sobre a utilização de metadados com pagamentos Stripe.

P: Como é que posso enviar vários campos e direccioná-los para um formulário específico?

R: Para direcionar um formulário e enviar vários campos de metadados, utilize o fragmento 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 vários campos, bem como apenas para um formulário específico, utilizando este excerto de código

Nota: Certifique-se de que altera os números de ID do formulário e do campo para corresponderem aos seus próprios IDs.

É isso aí! Agora você aprendeu como enviar metadados para o Stripe com sucesso a partir do WPForms.

De seguida, gostaria de alterar os subtítulos no campo Cartão de crédito Stripe? Não deixe de consultar o nosso guia para saber como alterar os subtítulos do campo Cartão de crédito Stripe.

Referência da ação: wpforms_stripe_process_complete