# Revisar os pagamentos não capturados Saiba como usar análises se sua integração da Stripe usar autenticação e captura. Por padrão, você [cria pagamentos](https://docs.stripe.com/payments/accept-a-payment.md) em uma única etapa. Você não precisa fazer mais nada para enviar fundos para sua conta bancária. A Stripe também suporta pagamentos em duas etapas, geralmente chamados de [autorização e captura](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md). Se a sua integração usar esse método, a aprovação de uma revisão e a captura de um pagamento são ações separadas. Sua janela de captura para pagamentos aprovados varia de acordo com a [bandeira do cartão](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md#authorization-validity-windows), possíveis [retenções estendidas](https://docs.stripe.com/payments/extended-authorization.md) e o [tipo de forma de pagamento](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md#auth-capture-limitations). ## Revisar os pagamentos não capturados no Dashboard Quando colocamos um pagamento não capturado em revisão, o Stripe Dashboard mostra um botão **Captura** ao lado de botões para aprovar ou cancelar a revisão. Os pagamentos não capturados mostram um botão **Cancelar** em vez de um botão **Reembolsar** porque o cancelamento de um pagamento não capturado libera a autorização sem criar um [objeto de reembolso](https://docs.stripe.com/api/refunds.md) . > A aprovação da revisão não captura automaticamente a cobrança. Você precisa clicar em **Capturar**. ![](https://b.stripecdn.com/docs-statics-srv/assets/uncaptured-payment.b9aab5781bebea8e1cc8f349dc2092bf.png) ## Use a API para capturar automaticamente os pagamentos aprovados Na API, você pode configurar a integração para: - Capturar imediatamente payments_not_placed para `review`. - Deixe os pagamentos enviados para `review` sem captura - Capturar o pagamento após a aprovação da revisão ### Capture imediatamente pagamentos não enviados para revisão Defina o `capture_method` em sua solicitação de API para criar um pagamento não capturado. Após uma solicitação bem-sucedida, verifique o atributo [revisão](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-review) no PaymentIntent. Se ele estiver vazio, capture a cobrança. #### Rubi ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') # Get the credit card details submitted by the form # Create a PaymentIntent with manual capture payment_intent = client.v1.payment_intents.create({ amount: 1000, currency: 'usd', payment_method: '{{PAYMENT_METHOD_ID}}', description: 'Example charge', confirm: true, capture_method: 'manual', }) # Check if the payment is in review. If not, capture it. if !payment_intent.review client.v1.payment_intents.capture(payment_intent.id) end ``` ### Capturar um pagamento após a aprovação de uma revisão Na etapa anterior, você deixou os pagamentos em `review` e não foram capturados. Use *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) para capturar automaticamente esses pagamentos após a aprovação. Configure seus Webhooks para ver o evento `review.closed`. O evento inclui o objeto [Revisão](https://docs.stripe.com/api.md#review_object), e seu atributo `reason` indica se a revisão foi aprovada ou fechada por outro motivo (por exemplo, o pagamento foi reembolsado). ```json // Review object included in review.closed event webhook. { "id": "prv_08voh1589O8KAxCGPcIQpmkz", "object": "review", "payment_intent": "pi_1D0CsEITpIrAk4QYdrWDnbRS", "created": 1474379631, "livemode": false, "open": false, "reason": "approved" } ``` Se `reason` for `approved`, capture a cobrança. ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') post "/my/webhook/url" do event_json = JSON.parse(request.body.read) event = client.v1.events.retrieve(event_json["id"]) if event.type == 'review.closed' review = event.object if review.reason == 'approved' pi = client.v1.payment_intents.retrieve(review.payment_intent) client.v1.payment_intents.capture(pi.id) end end status 200 end ```