# Migrar para a API Payment Intents > #### Recursos de integração do Payment Element > > Você pode integrar com o Payment Element para gerenciar assinaturas, tributos, descontos, envio e conversão de moedas. Para saber mais, consulte o guia [Construindo uma pagina de checkout](https://docs.stripe.com/payments/quickstart-checkout-sessions.md). Saiba como migrar seus cartões e a integração da API Charges. A migração do fluxo de pagamentos pode ser complexa. A adoção incremental da API Payment Intents, em paralelo com o uso da API Charges, é segura. Para fazer isso, divida a migração nas seguintes etapas: 1. [Atualizar a versão da API e da biblioteca cliente](https://docs.stripe.com/payments/payment-intents/migration.md#api-version). 1. Se for aplicável, [migre o código que faz leitura das propriedades de Charge](https://docs.stripe.com/payments/payment-intents/migration/charges.md) para ter um caminho de leitura consistente entre cobranças criadas pela API Charges e cobranças criadas pela API Payment Intents. Isso garante uma integração do lado da leitura que funcione para a integração de pagamentos nova e antiga. 1. Migre sua integração existente da API Charges na [web](https://docs.stripe.com/payments/payment-intents/migration.md#web), [iOS](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=ios) e [Android](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=android) para usar a API Payment Intents. 1. Migre sua integração que [salva cartões em objetos Customer](https://docs.stripe.com/payments/payment-intents/migration.md#saved-cards). 1. [Teste com cartões de teste regulatório](https://docs.stripe.com/testing.md#regulatory-cards) para assegurar que a integração atualizada gerencie a autenticação corretamente. ## Atualizar a versão da API e a biblioteca do cliente Embora a API Payment Intents funcione em todas as versões da API , recomendamos fazer a [atualização para a versão mais recente da API](https://docs.stripe.com/upgrades.md#how-can-i-upgrade-my-api). Se você decidir usar uma versão da API anterior a [11/02/2019](https://docs.stripe.com/upgrades.md#2019-02-11), observe as duas alterações a seguir quando usar os exemplos de código: - `requires_source` mudou para `requires_payment_method` - `requires_source_action` mudou para `requires_action` Além disso, se você usa uma das nossas [SDKs](https://docs.stripe.com/sdks.md), atualize para a versão mais recente da biblioteca para usar a API Payment Intents. ## Migre seus fluxos de pagamentos avulsos #### Elements Estas são as etapas de uma integração criada com Stripe.js e Elements: 1. Registrar sua intenção de coletar pagamentos no lado do servidor 1. Coletar dados de pagamento no lado do cliente 1. Iniciar a criação do pagamento 1. Executar o pedido do cliente no lado do servidor ### Etapa 1: registrar sua intenção de coletar pagamentos no lado do servidor [Crie um PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) no seu servidor e deixe-o [acessível no lado do cliente](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Etapa 2: coletar dados de pagamento no lado do cliente Use a função [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment), que coleta os dados de pagamento e os envia diretamente à Stripe. ### Etapa 3: iniciar a criação do pagamento Na integração existente, a última etapa é usar dados de pagamento tokenizados para criar uma cobrança no seu servidor. Isso não é mais necessário, pois a função `confirmCardPayment`, chamada na etapa anterior, inicia a criação da cobrança. ### Etapa 4: executar o pedido do cliente Com a confirmação automática, a cobrança é criada para você de forma assíncrona a partir da ação do cliente, por isso, você deve [monitorar os webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md) para determinar quando o pagamento é concluído corretamente. Para realizar etapas como processamento de pedido após o pagamento bem-sucedido de um cliente, implemente a compatibilidade com webhooks e monitore o evento `payment_intent.succeeded`. ### Before Se a cobrança for bem-sucedida, faça o processamento. ### After Assine o webhook `payment_intent.succeeded` e processe no gerenciador de webhooks. Agora que você fez a migração, use os cartões de teste na seção a seguir para verificar se a sua integração atualizada gerencia autenticação 3D Secure. #### Botão de solicitação de pagamento O [botão de solicitação de pagamento](https://docs.stripe.com/stripe-js/elements/payment-request-button.md).js da Stripe funciona com a API Payment Intents usando o token obtido em uma integração PaymentRequest tradicional e vinculando-o a um PaymentIntent. Estas são as etapas de uma integração criada com PaymentRequest: 1. Registrar sua intenção de coletar pagamentos no lado do servidor 1. Coletar dados de pagamento no lado do cliente 1. Iniciar a criação do pagamento 1. Executar o pedido do cliente no lado do servidor Como alternativa, use o [Express Checkout Element](https://docs.stripe.com/elements/express-checkout-element.md) para oferecer múltiplos botões de pagamento com um clique aos seus clientes, incluindo Apple Pay, Google Pay, Link e PayPal. ### Etapa 1: registrar sua intenção de coletar pagamentos no lado do servidor [Crie um PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) no seu servidor e deixe-o [acessível no lado do cliente](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Etapa 2: coletar dados de pagamento no lado do cliente Escute o evento `token` do objeto `PaymentRequest`, que fornece um token e uma função de retorno de chamada que você pode usar para indicar quando o processo de pagamento é concluído. Para adaptar essa integração para a API Payment Intents, use a função [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment) e envie o ID do token para ela, em vez de enviá-lo ao seu servidor. Quando a promessa devolvida pela função `confirmCardPayment` for resolvida, acione o retorno de chamada de conclusão. ### Etapa 3: iniciar a criação do pagamento Na integração existente, a última etapa é usar dados de pagamento tokenizados para criar uma cobrança no seu servidor. Isso não é mais necessário, pois a função `confirmCardPayment`, chamada na etapa anterior, inicia a criação da cobrança. ### Etapa 4: executar o pedido do cliente Com a confirmação automática, a cobrança é criada para você de forma assíncrona a partir da ação do cliente, por isso, você deve [monitorar os webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md) para determinar quando o pagamento é concluído corretamente. Para realizar etapas como processamento de pedido após o pagamento bem-sucedido de um cliente, implemente a compatibilidade com webhooks e monitore o evento `payment_intent.succeeded`. ### Before Se a cobrança for bem-sucedida, faça o processamento. ### After Assine o webhook `payment_intent.succeeded` e processe no gerenciador de webhooks. Agora que você fez a migração, use os cartões de teste na seção a seguir para verificar se a sua integração atualizada gerencia autenticação 3D Secure. #### Checkout antigo Se estiver usando a versão antiga do Checkout, atualize para a [nova versão do Checkout](https://docs.stripe.com/payments/checkout.md), a maneira mais rápida de aceitar pagamentos com a Stripe. Ela permite aceitar pagamentos avulsos e assinaturas. Você também pode usar o Checkout sem a API da Stripe no seu servidor. Siga o [guia de migração do Checkout](https://docs.stripe.com/payments/checkout/migration.md) para migrar sua integração existente. Se preferir criar seu próprio fluxo de checkout, use o [Elements](https://docs.stripe.com/payments/elements.md). Se você tiver migrado para o Elements, será possível criar uma integração com a API Payment Intents usando o [guia de migração do Elements](https://docs.stripe.com/payments/payment-intents/migration.md#web). #### Stripe.js v2 Para atualizar uma integração do Stripe.js v2 existente e usar a API Payment Intents, primeiro atualize a integração para coletar dados de pagamento com o Elements. O Elements fornece componentes de IU criados previamente e [conformidade com PCI](https://docs.stripe.com/security/guide.md) simples com relatórios SAQ A. Depois de fazer um upgrade para o Elements, crie uma integração com a API Payment Intents usando o [guia de migração do Elements](https://docs.stripe.com/payments/payment-intents/migration.md#web). ## Migre sua integração que salva cartões em objetos Customer #### Salvar cartões no fluxo de checkout Uma integração da API Payment Intents que coleta dados de cartão no fluxo de checkout consiste nas seguintes etapas: 1. Registrar sua intenção de coletar pagamentos no lado do servidor 1. Coletar dados de pagamento no lado do cliente 1. Iniciar a criação do pagamento 1. Executar o pedido do cliente no lado do servidor ### Etapa 1: registrar sua intenção de coletar pagamentos no lado do servidor [Crie um PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) no seu servidor. Defina [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) como `off_session` se você pretende cobrar os usuários quando estiverem fora do seu aplicativo ou `on_session` se planeja cobrá-los no aplicativo. Se você planeja usar o cartão para pagamentos na sessão e fora dela, use `off_session`. Informar o parâmetro `setup_future_usage` junto com o ID do cliente salvará o PaymentMethod resultante para esse cliente após a confirmação do PaymentIntent e a conclusão de todas as ações necessárias pelo cliente. Em seguida, torne o PaymentIntent [acessível no lado do cliente](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Etapa 2: coletar dados de pagamento no lado do cliente Use a função [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment), que coleta os dados de pagamento e os envia diretamente à Stripe. Por último, vincule a forma de pagamento (`paymentIntent.payment_method`) ao cliente. ### Etapa 3: iniciar a criação do pagamento Na integração existente, a última etapa é usar dados de pagamento tokenizados para criar uma cobrança no seu servidor. Isso não é mais necessário, pois a função `confirmCardPayment`, chamada na etapa anterior, inicia a criação da cobrança. ### Etapa 4: executar o pedido do cliente Com a confirmação automática, a cobrança é criada para você de forma assíncrona a partir da ação do cliente, por isso, você deve [monitorar os webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md) para determinar quando o pagamento é concluído corretamente. Para realizar etapas como processamento de pedido após o pagamento bem-sucedido de um cliente, implemente a compatibilidade com webhooks e monitore o evento `payment_intent.succeeded`. ### Before Se a cobrança for bem-sucedida, faça o processamento. ### After Assine o webhook `payment_intent.succeeded` e processe no gerenciador de webhooks. Agora que você fez a migração, use os cartões de teste na seção a seguir para verificar se a sua integração atualizada gerencia autenticação 3D Secure. #### Salvar cartões fora do fluxo de checkout Você precisará fazer algumas alterações na integração atual que salva os dados do cartão fora do fluxo de checkout. Primeiro, crie um [SetupIntent](https://docs.stripe.com/api/setup_intents.md) no seu servidor. Um SetupIntent autentica o cartão sem efetuar um pagamento inicial. Passe o [segredo do cliente](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) do SetupIntent para o cliente e use a função [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) em vez de [createToken](https://docs.stripe.com/js.md#stripe-create-token) ou [createSource](https://docs.stripe.com/js.md#stripe-create-source) depois que o cliente informar os dados do cartão. Se exigido pela regulamentação, [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) solicitará que o usuário autentique o cartão. Quando [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) é bem-sucedida, `setupIntent.payment_method` contém um [PaymentMethod](https://docs.stripe.com/api/payment_methods/object.md) que você pode associar a um objeto Customer. Passe o ID desse PaymentMethod ao servidor e [associe a forma de pagamento](https://docs.stripe.com/api/payment_methods/attach.md) ao objeto Customer usando a API Payment Methods em vez da API Customers. #### Pagar com cartões salvos Ao pagar com uma forma de pagamento previamente salva, especifique o ID do cliente e o ID do cartão, a fonte ou o PaymentMethod previamente salvo. Antes, a fonte de pagamento padrão do cliente era utilizada se nenhuma fosse fornecida. Agora, você precisa especificar explicitamente a forma de pagamento desejado. Se o cliente estiver *fora de sessão* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information), sinalize o pagamento como fora de sessão. Consulte [Cobrar cartões salvos](https://docs.stripe.com/payments/save-and-reuse.md?platform=web&ui=elements#charge-saved-payment-method) para saber mais. ## Acessar formas de pagamento salvas Para exibir os cartões, as fontes e os PaymentMethods previamente salvos pelo cliente, [liste as formas de pagamento](https://docs.stripe.com/api/payment_methods/list.md) em vez de ler a propriedade de [fontes](https://docs.stripe.com/api/customers/object.md#customer_object-sources) do objeto do cliente. Isso é necessário porque novos PaymentMethods adicionados a um cliente não serão duplicados na propriedade de fontes do objeto do cliente. ## Testar a integração É importante testar completamente a integração para garantir o tratamento correto de cartões que exigem autenticação adicional e os que não exigem essa autenticação. Use estes números de cartão em uma [área restrita](https://docs.stripe.com/keys.md#test-live-modes) com uma data de validade no futuro e qualquer código CVC de três dígitos para validar a integração desses dois tipos de cartão. | Número | Autenticação | Descrição | | ---------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4000002500003155 | Exigido na configuração ou primeira transação | Este cartão de teste exige autenticação para [pagamentos avulsos](https://docs.stripe.com/payments/accept-a-payment.md?platform=web). No entanto, quando você configura esse cartão usando a [API Setup Intents](https://docs.stripe.com/payments/save-and-reuse.md) e usa o cartão salvo para os próximos pagamentos, nenhuma autenticação adicional é necessária. | | 4000002760003184 | Obrigatório | Este cartão de teste exige autenticação em todas as transações. | | 4000008260003178 | Obrigatório | Este cartão de teste exige autenticação, mas os pagamentos serão recusados com o código `insufficient_funds` depois da autenticação. | | 4000000000003055 | Compatível | Este cartão de teste aceita a autenticação do 3D Secure 2, mas não a exige. Os pagamentos com esse cartão não exigem autenticação adicional em uma área restrita, a menos que as [regras do Radar da área restrita](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#three-ds-radar) solicitem autenticação. | Use estes cartões no aplicativo ou na [demonstração de pagamentos](https://stripe-payments-demo.appspot.com) para ver o comportamento diferente. ## See also - [PaymentIntents no iOS](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=ios) - [PaymentIntents no Android](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=android)