# Meninjau pembayaran yang belum diterima Pelajari cara menggunakan tinjauan jika integrasi Stripe Anda menggunakan otorisasi dan penarikan. Secara default, Anda [membuat pembayaran](https://docs.stripe.com/payments/accept-a-payment.md) dalam satu langkah. Anda tidak perlu melakukan apa pun untuk mengirim dana ke rekening bank Anda. Stripe juga mendukung pembayaran dua langkah, yang sering disebut [auth dan capture](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md). Jika integrasi Anda menggunakan metode ini, menyetujui tinjauan dan menangkap pembayaran merupakan tindakan yang terpisah. Jendela pengambilan untuk pembayaran yang disetujui bervariasi menurut [merek kartu](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md#authorization-validity-windows), potensi [penangguhan diperpanjang](https://docs.stripe.com/payments/extended-authorization.md), dan [jenis metode pembayaran](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md#auth-capture-limitations). ## Tinjau pembayaran yang belum tercatat di Dasbor Saat kami menempatkan pembayaran yang tidak ditangkap dalam tinjauan, Dasbor Stripe menampilkan tombol **Tangkap** di samping tombol untuk menyetujui atau membatalkan tinjauan. Pembayaran yang tidak ditangkap akan menampilkan tombol **Batalkan** dan bukan tombol **Pengembalian Dana** karena membatalkan pembayaran yang tidak ditangkap akan membatalkan otorisasi tanpa membuat [objek Pengembalian Dana](https://docs.stripe.com/api/refunds.md) . > Menyetujui tinjauan tidak akan otomatis menarik charge. Anda masih harus mengklik **Tarik**. ![](https://b.stripecdn.com/docs-statics-srv/assets/uncaptured-payment.b9aab5781bebea8e1cc8f349dc2092bf.png) ## Gunakan API untuk menangkap pembayaran yang disetujui secara otomatis Melalui API, Anda dapat menyiapkan integrasi Anda agar: - Segera tarik payments *not* placed dalam `review`. - Biarkan dan jangan tarik pembayaran yang akan `review` - Bila tinjauan disetujui, tarik pembayaran ### Segera tarik pembayaran yang tidak ditempatkan dalam tinjauan Tetapkan `capture_method` dalam permintaan API Anda untuk membuat pembayaran yang tidak ditangkap. Setelah permintaan berhasil, periksa atribut [tinjau](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-review) pada PaymentIntent. Jika kosong, tangkap tagihan tersebut. #### Ruby ```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 ``` ### Menerima pembayaran setelah tinjauan disetujui Pada langkah sebelumnya, Anda membiarkan pembayaran dalam `review` dan tidak ditangkap. Gunakan *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) untuk secara otomatis menangkap pembayaran ini setelah disetujui. Konfigurasikan webhook Anda untuk mendengarkan peristiwa `review.closed`. Peristiwa ini mencakup [Objek tinjauan](https://docs.stripe.com/api.md#review_object), dan atribut `reason` yang mengindikasikan apakah tinjauan disetujui atau ditutup karena alasan lain (misalnya, pembayaran dikembalikan). ```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" } ``` Jika `reason` telah `approved`, tariklah charge-nya. ```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 ```