# Pembayaran Konbini Gunakan API Payment Intents dan Payment Methods untuk menerima pembayaran melalui Konbini, cara umum untuk melakukan pembayaran melalui minimarket di Jepang. # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/konbini/accept-a-payment?payment-ui=checkout. > Stripe dapat secara otomatis menyajikan metode pembayaran yang relevan kepada pelanggan Anda dengan mengevaluasi mata uang, pembatasan metode pembayaran, dan parameter lainnya. > > - Ikuti panduan [Menerima pembayaran](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted) untuk membangun integrasi Checkout yang menggunakan [metode pembayaran dinamis](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md). - Jika Anda tidak ingin menggunakan metode pembayaran dinamis, ikuti langkah-langkah di bawah ini untuk mengonfigurasi metode pembayaran secara manual dalam integrasi Checkout Anda. Konbini adalah metode pembayaran [sekali pakai](https://docs.stripe.com/payments/payment-methods.md#usage) yang mengharuskan pelanggan [mengambil langkah tambahan](https://docs.stripe.com/payments/payment-methods.md#customer-actions) untuk menyelesaikan pembayarannya. Pelanggan membayar dengan memberikan kode pembayaran, nomor konfirmasi, dan pembayaran tunai di mini market Jepang. Stripe memberi tahu Anda saat pembayaran selesai. ## Menentukan kompatibilitas **Lokasi bisnis yang didukung**: JP **Mata uang yang didukung**: `jpy` **Mata uang transaksi**: `jpy` **Mode pembayaran**: Yes **Mode persiapan**: No **Mode langganan**: No Sesi Checkout harus memenuhi semua persyaratan berikut untuk mendukung pembayaran Konbini: - *Harga* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) untuk semua mata anggaran harus dalam mata uang yang sama (JPY). - Anda hanya dapat menggunakan mata anggaran satu kali (paket berulang subscription** tidak didukung). ## Menerima pembayaran > Buat integrasi untuk [menerima pembayaran](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout) dengan Checkout sebelum menggunakan panduan ini. Ini memandu Anda melalui pengaktifan Konbini dan menunjukkan perbedaan antara menerima pembayaran menggunakan metode pembayaran dinamis dan mengonfigurasi metode pembayaran secara manual. ### Aktifkan Konbini sebagai metode pembayaran Saat membuat [Sesi Checkout](https://docs.stripe.com/api/checkout/sessions.md) baru, Anda perlu: 1. Tambahkan `konbini` ke daftar `payment_method_types`. 1. Pastikan semua `line_items` Anda menggunakan mata uang `jpy`. #### Halaman yang di-hosting Stripe ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "success_url=https://example.com/success" ``` #### Formulir tersemat ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` ### Opsi metode pembayaran tambahan Opsi metode pembayaran dapat ditentukan di [opsi metode pembayaran](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-konbini) pada kunci `konbini`. | Bidang | Nilai | Diperlukan | Nilai Default | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ------------- | | `expires_after_days` | Jumlah hari kalender sebelum pembayaran Konbini yang menunggu menjadi kedaluwarsa. Nilai yang valid adalah dari 1 hingga 60 hari. Lihat [Kedaluwarsa](https://docs.stripe.com/payments/konbini/accept-a-payment.md#checkout-additional-options-expiration). | Tidak | 3 | #### Kedaluwarsa Pembayaran Konbini yang menunggu akan kedaluwarsa tepat sebelum tengah malam (23.59.59 WSJ) pada tanggal yang ditentukan. Misalnya, jika `expires_after_days` diatur ke 2 dan PaymentIntent dikonfirmasi pada hari Senin, pembayaran Konbini yang menunggu akan kedaluwarsa pada hari Rabu pukul 23.59.59 waktu Jepang (UTC +9). #### Halaman yang di-hosting Stripe ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_options[konbini][expires_after_days]=7" \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "success_url=https://example.com/success" ``` #### Formulir tersemat ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_options[konbini][expires_after_days]=7" \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` #### Nomor telepon Di formulir checkout Konbini, pelanggan Anda secara opsional dapat memberikan nomor telepon untuk digunakan sebagai nomor konfirmasi mereka. Hal ini menyederhanakan proses pembayaran mereka di minimarket ketika UI di-toko meminta pelanggan memberikan kode pembayaran dan nomor konfirmasi. Keduanya tercermin dalam instruksi pembayaran yang ditampilkan oleh Stripe setelah pelanggan menyerahkan formulir checkout. Jika pelanggan Anda tidak memberikan nomor telepon, Stripe akan menghasilkan nomor konfirmasi acak. Stripe secara proaktif memblokir nomor telepon yang hanya terdiri dari nol. ### Mengarahkan ulang ke halaman voucher yang di-hosting dari Stripe > Tidak seperti pembayaran kartu, pelanggan tidak akan dialihkan ke [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url) dengan pembayaran Konbini. Setelah berhasil menyerahkan formulir Checkout, pelanggan akan diarahkan ulang ke `hosted_voucher_url`. Pelanggan dapat merujuk perintah pembayaran dari halaman yang di-hosting untuk mengetahui detail tentang cara memyelesaikan pembayaran mereka. Halaman ini dapat dilihat pada desktop dan seluler, serta dapat dicetak. Stripe mengirim kejadian [payment_intent.requires_action](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.requires_action) bila voucer Konbini berhasil dibuat. Jika Anda harus mengirim tautan voucer kepada pelanggan melalui email, Anda dapat menemukan `hosted_voucher_url` di [payment_intent.next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-hosted_voucher_url). Pelajari selengkapnya tentang cara [memonitor PaymentIntent dengan webhook](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). Stripe mengizinkan penyesuaian UI yang dilihat pelanggan di halaman [Pengaturan Branding](https://dashboard.stripe.com/account/branding). Pengaturan brand berikut dapat diterapkan ke voucher: - **Ikon**—gambar brand dan nama umum bisnis Anda - **Warna aksen**—digunakan sebagai warna tombol Salin Nomor - **Warna brand**—digunakan sebagai warna latar belakang ### Penuhi pesanan Anda Karena Konbini adalah metode pembayaran notifikasi yang tertunda, Anda harus menggunakan metode seperti *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) untuk memonitor status pembayaran dan menangani *fulfillment* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) pesanan. Pelajari selengkapnya tentang [menyiapkan webhook dan memenuhi pesanan](https://docs.stripe.com/checkout/fulfillment.md). Kejadian berikut dikirim ketika status pembayaran berubah: | Nama Kejadian | Keterangan | Langkah berikutnya | | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Pelanggan telah berhasil menyerahkan formulir Checkout. Stripe telah membuat voucher Konbini. Anda dapat memilih untuk mengirim `hosted_voucher_url` lewat email ke pelanggan Anda seandainya voucher Konbini mereka hilang. | Tunggu pelanggan membayar di Konbini. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Pelanggan telah berhasil membayar voucher Konbini. `PaymentIntent` bertransisi ke `succeeded`. | Penuhi barang atau layanan yang dibeli oleh pelanggan. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | Voucher Konbini telah kedaluwarsa, atau pembayaran gagal karena alasan lain. `PaymentIntent` kembali ke status `requires_payment_method`. | Hubungi pelanggan melalui email dan minta agar mereka memesan lagi. | ## Mencoba integrasi Anda Saat mencoba integrasi Checkout Anda, pilih Konbini sebagai metode pembayaran dan klik tombol **Bayar**. Berikan nilai berikut di formulir Checkout untuk mencoba skenario berbeda. Anda dapat mencoba dengan nomor konfirmasi khusus atau pola email. Jika keduanya diberikan, maka yang berlaku adalah perilaku nomor konfirmasi khusus. | Email | Nomor konfirmasi | Keterangan | | ---------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `{any_prefix}@{any_domain}` | `11111111110` | Menyimulasikan pembayaran Konbini yang berhasil setelah 3 menit dan webhook `payment_intent.succeeded` yang masuk setelah itu. Contoh: hanako@test.com | | `{any_prefix}succeed_immediately@{any_domain}` | `22222222220` | Menyimulasikan pembayaran Konbini yang seketika berhasil dan webhook `payment_intent.succeeded` yang masuk setelah itu. Contoh: succeed_immediately@test.com | | `{any_prefix}expire_immediately@{any_domain}` | `33333333330` | Menyimulasikan pembayaran Konbini yang segera kedaluwarsa dan webhook `payment_intent.payment_failed` yang masuk setelah itu. Bidang `expires_at` di [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) diatur ke waktu saat ini, terlepas dari pengaturan parameter `expires_after_days` atau `expires_at` di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Contoh: expire_immediately@test.com | | `{any_prefix}expire_with_delay@{any_domain}` | `44444444440` | Menyimulasikan pembayaran Konbini yang tidak pernah berhasil; ini akan kedaluwarsa dalam waktu 3 menit dan webhook `payment_intent.payment_failed` akan masuk setelah itu. Bidang `expires_at` di [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) diatur ke 3 menit mendatang terlepas dari pengaturan parameter `expires_after_days` atau `expires_at` di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Contoh: expire_with_delay@test.com | | `{any_prefix}fill_never@{any_domain}` | `55555555550` | Menyimulasikan pembayaran Konbini yang tidak pernah berhasil; Kedaluwarsa sesuai dengan bidang `expires_at` di `next_action.konbini_display_details` sesuai parameter yang diberikan di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) dan webhook `payment_intent.payment_failed` yang masuk setelah itu. Contoh: fill_never@test.com | Untuk mencoba kesalahan [nomor konfirmasi](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-confirm-payment-intent-additional-options-confirmation-number), Anda dapat menggunakan nilai-nilai berikut: - `01234567890` akan mensimulasikan penolakan nomor konfirmasi. - `00000000000` akan menghasilkan kesalahan validasi. ## Kedaluwarsa dan pembatalan After the time specified by the `expires_at` value in the [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at), the customer can no longer *initiate* the payment process for a pending Konbini payment at a convenience store kiosk. However, if they issued a valid payment slip before the deadline they might be able to *complete* the payment at the cash register after the `expires_at` time. Ada periode penyangga untuk menghindari kegagalan pembayaran prematur dalam kejadian demikian. Status PaymentIntent berubah menjadi `requires_payment_method`. Pada titik ini, Anda dapat membatalkan atau mengonfirmasikan PaymentIntent dengan metode pembayaran lain. Anda juga dapat membatalkan pembayaran Konbini yang menunggu setelah konfirmasi dan sebelum waktu yang ditentukan oleh `next_action.konbini_display_details.expires_at`. Memperbarui PaymentIntent atau mengonfirmasinya dengan metode pembayaran lain juga secara implisit akan membatalkan pembayaran Konbini yang ada. If the customer is currently paying for the Konbini payment at the convenience store, the cancellation request will fail. Cancellation might be re-attempted if the customer abandons the payment attempt and after the payment slip expires. Perhatikan bahwa [masalah ketersedian metode pembayaran sementara](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) juga memengaruhi permintaan pembatalan (baik eksplisit serta implisit). > Saat Anda membatalkan pembayaran yang menunggu, petunjuk pembayaran semula akan menjadi tidak valid. Bagi kebanyakan kasus penggunaan, kami menyarankan Anda untuk menghubungi pelanggan untuk menginformasikan tentang pembatalan ini. > > Ketika Anda berhasil memastikan kembali PaymentIntent dalam status `requires_action` kami membuat petunjuk baru dan `hosted_voucher_url` baru. Anda harus memastikan bahwa pelanggan Anda mengetahui tentang hal ini. ## Pengembalian dana Ada kemungkinan pengembalian dana Konbini pembayaran melalui [Dashboard](https://dashboard.stripe.com/payments) atau [API](https://docs.stripe.com/api.md#create_refund). Untuk menyelesaikan pengembalian dana yang dikirim ke rekening bank pelanggan secara langsung, pelanggan Anda harus memberikan detail rekening bank untuk menerima dana tersebut. Stripe menghubungi pelanggan di alamat email dari detail tagihan pada metode pembayaran dan meminta detail ini dari mereka. Setelah menerima detail bank, kami akan memproses pengembalian dana secara otomatis. Transisi status pengembalian dana sebagai berikut: | Kejadian | Status pengembalian dana | | ------------------------------------------------------------------------------------------- | ------------------------ | | Pengembalian dana dibuat | `requires_action` | | Pelanggan menyerahkan detail rekening bank, dan Stripe mulai memproses pengembalian dananya | `pending` | | Pengembalian dana diperkirakan masuk di bank pelanggan | `succeeded` | | Bank pelanggan mengembalikan dana ke Stripe | `requires_action` | | Pengembalian dana dalam `requires_action` 45 hari setelah pembuatan | `failed` | | Pengembalian dana dibatalkan dari status `requires_action` | `canceled` | Jika bank pelanggan tidak berhasil menyelesaikan transfer, dana dikembalikan ke Stripe dan transisi pengembalian dana ke `requires_action`. Hal ini dapat terjadi jika nama pemegang rekening tidak sesuai dengan yang tercatat di bank penerima atau jika nomor rekening bank yang diberikan salah ketik. Dalam kasus ini, Stripe mengirim email kepada pelanggan untuk memberitahukan kegagalan dan meminta mereka mengirimkan kembali detail rekening banknya. Jika pelanggan Anda tidak memberikan detail rekening banknya dalam waktu 45 hari, status pengembalian dana bertransisi ke `failed` dan kami mengirim kejadian [refund.failed](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). Ini berarti bahwa Stripe tidak dapat memproses pengembalian dana, dan Anda harus [mengembalikan dana kepada pelanggan di luar Stripe](https://docs.stripe.com/refunds.md#failed-refunds). Bidang [instructions_email](https://docs.stripe.com/api/refunds/object.md#refund_object-instructions_email) pada pengembalian dana merupakan email yang dikirimi pengembalian dana. Meski pengembalian dana menunggu tanggapan dari pelanggan, detail email yang dikirim kepada pelanggan juga dapat ditemukan di bawah bidang [next_action.display_details.email_sent](https://docs.stripe.com/api/refunds/object.md#refund_object-next_action-display_details-email_sent) pada pengembalian dana. Each individual refund (including each partial refund) might incur a fee. Contact your point of contact at Stripe to learn more about this. ### Mencoba Pengembalian Dana Anda dapat mencoba perilaku pengembalian dana dalam mode percobaan menggunakan rekening bank percobaan berikut di halaman pengumpulan detail rekening bank yang ditautkan dalam email yang dikirim ke pelanggan. Detail rekening bank di luar rekening bank percobaan ini tidak akan diterima. | Routing | Akun | Tipe | | --------- | ------------------------------------------------------------- | --------------------------- | | `1100000` | `0001234` | Pengembalian dana berhasil. | | `1100000` | `1111113` `1111116` `1111113` `3333335` `4444440` | Pengembalian dana gagal. | #### Mencoba Kedaluwarsa Pengembalian Dana Anda dapat melakukan panggilan API untuk menyimulasikan berakhirnya pengembalian dana mode percobaan. ```bash curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u <>: ``` ## See also - [Pemenuhan Checkout](https://docs.stripe.com/checkout/fulfillment.md) - [Menyesuaikan Checkout](https://docs.stripe.com/payments/checkout/customization.md) # Direct API > This is a Direct API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/konbini/accept-a-payment?payment-ui=direct-api. Pengguna Stripe di Jepang dapat menerima pembayaran Konbini dari pelanggan di Jepang dengan menggunakan API Payment Intens dan Payment Methods. Pelanggan membayar dengan memberikan kode pembayaran, nomor konfirmasi, dan pembayaran tunai di minimarket di Jepang. Stripe akan memberi tahu Anda bila pembayaran selesai. ## Siapkan Stripe [Sisi server] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/test/register). Gunakan pustaka resmi kami untuk mendapatkan akses ke API Stripe dari aplikasi Anda: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Buat PaymentIntent [Sisi server] Stripe menggunakan objek [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) untuk mewakili maksud Anda menagih pembayaran dari pelanggan, melacak perubahan status dari pembuatan PaymentIntent Konbini hingga selesai. Buat PaymentIntent di server Anda dengan jumlah dan mata uang `jpy` (Konbini tidak mendukung mata uang lain). Jika Anda sudah memiliki integrasi menggunakan [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md), tambahkan `konbini` ke daftar [tipe metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) untuk PaymentIntent Anda. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=jpy \ -d "payment_method_types[]=konbini" \ -d "payment_method_options[konbini][product_description]=Tシャツ" \ -d "payment_method_options[konbini][expires_after_days]=3" ``` ### Ambil client secret PaymentIntent menyertakan *client secret* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)) yang digunakan pada sisi client untuk menyelesaian proses pembayaran dengan aman. Anda dapat menggunakan pendekatan berbeda untuk meneruskan client secret ke sisi client. #### Aplikasi halaman tunggal Ambil client secret dari endpoint pada server Anda, menggunakan fungsi `fetch` browser. Pendekatan ini paling baik jika sisi client Anda adalah aplikasi satu halaman, terutama yang dibangun dengan kerangka kerja frontend modern seperti React. Buat endpoint server yang melayani client secret: #### Ruby ```ruby get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end ``` Kemudian ambil client secret dengan JavaScript pada sisi client: ```javascript (async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })(); ``` #### Rendering sisi server Teruskan client secret ke client dari server Anda. Pendekatan ini berfungsi paling baik jika aplikasi menghasilkan konten statis pada server sebelum mengirimkannya ke browser. Tambahkan [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) di formulir checkout Anda. Di kode sisi server Anda, ambil client secret dari PaymentIntent: #### Ruby ```erb
``` ```ruby get '/checkout' do @intent = # ... Fetch or create the PaymentIntent erb :checkout end ``` ### Opsi metode pembayaran tambahan Opsi metode pembayaran dapat ditentukan di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini) pada kunci `konbini`. | Bidang | Nilai | Diperlukan | Nilai Default | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ------------- | | `expires_after_days` | Jumlah hari kalender sebelum pembayaran Konbini yang menunggu menjadi kedaluwarsa. Nilai yang valid adalah dari 1 hingga 60 hari. Lihat [Kedaluwarsa](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options-expiration). | Tidak | 3 | | `expires_at` | Stempel waktu Unix yang menunjukkan kapan pembayaran Konbini yang menunggu akan kedaluwarsa. Tanggal kedaluwarsa ini harus lebih dari 30 menit sejak waktu saat ini dan kurang dari 60 hari setelah pengaturan diterapkan ke PaymentIntent. Lihat [Kedaluwarsa](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options-expiration). | Tidak | *unset* | | `product_description` | A product descriptor of up to 22 characters, which will appear to customers at the convenience store. Presence of non-Shift JIS ([JIS X 0208:1997](https://en.wikipedia.org/wiki/Shift_JIS)) characters will cause an error to be returned. While not required, we recommend setting this option. Otherwise we fall back to a generic placeholder chosen at our own discretion, for example, お買い上げ商品・サービス. | Tidak | *placeholder* | #### Kedaluwarsa Pembayaran Konbini yang menunggu akan kedaluwarsa tepat sebelum tengah malam (23.59.59 WSJ) pada tanggal yang ditentukan. Misalnya, jika `expires_after_days` diatur ke 2 dan PaymentIntent dikonfirmasi pada hari Senin, pembayaran Konbini yang menunggu akan kedaluwarsa pada hari Rabu pukul 23.59.59 waktu Jepang (UTC +9). Pengaturan `expires_at` adalah cap waktu Unix dalam detik. Jika nilainya kurang dari 30 menit dari waktu saat ini, atau konfirmasi PaymentIntent terjadi kurang dari 30 menit sejak waktu kedaluwarsa, maka kesalahan akan dikembalikan. `expires_after_days` dan `expires_at` saling terpisah. Kesalahan akan dikembalikan jika keduanya diatur. Keduanya juga opsional, dan jika tidak ada yang diatur, maka tanggal kedaluwarsa default menjadi 3 hari setelah pembuatan PaymentIntent pada pukul 23.59 waktu Jepang (UTC +9). ### Penanganan kesalahan Permintaan pada PaymentIntents seperti pembuatan, pembaruan, dan konfirmasi mungkin gagal. Anda dapat memeriksa `kesalahan` nilai respons API untuk menentukan alasannya dan dalam banyak kasus mengirimkan ulang permintaan atau memperbaiki kesalahan. Khususnya, jika Anda memberikan nilai untuk `confirmation_number` Metode pembayaran, Anda mungkin ingin menangani kode kesalahan tertentu yang kami kembalikan. Lihat [Nomor konfirmasi](https://docs.stripe.com/payments/konbini/accept-a-payment.md#confirm-payment-intent-additional-options-confirmation-number) untuk lebih jelasnya. Metode pembayaran terkadang tidak tersedia sementara karena pemadaman, pemeliharaan terjadwal, atau pola penggunaan Anda. Lihat [Menangani masalah ketersediaan sementara](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) untuk lebih jelasnya. ## Kumpulkan detail metode pembayaran [Sisi client] Buat formulir pembayaran pada client Anda untuk mengumpulkan detail tagihan yang diperlukan dari pelanggan: | Bidang | Nilai | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | Nama lengkap pelanggan, dipotong menjadi maksimal 20 karakter di UI minimarket dan resi. Karakter non-Shift JIS ([JIS X 0208:1997](https://en.wikipedia.org/wiki/Shift_JIS)) akan dibuang atau diganti. | | `email` | Alamat email lengkap pelanggan. | Contoh formulir di sini juga mengumpulkan nomor telepon, untuk digunakan sebagai nomor konfirmasi yang disediakan oleh pelanggan: ```html
``` ## Serahkan pembayaran ke Stripe [Sisi client] Saat pelanggan mengklik untuk membayar dengan Konbini, gunakan Stripe.js untuk menyerahkan pembayaran kepada Stripe. [Stripe.js](https://docs.stripe.com/payments/elements.md) adalah pustaka JavaScript kami yang mendasar untuk membangun alur pembayaran. Sertakan skrip Stripe.js di halaman checkout dengan menambahkannya ke `head` file HTML Anda. ```html Checkout ``` Buat instance Stripe.js dengan JavaScript berikut di halaman checkout Anda. ```javascript // Set your publishable key. Remember to switch to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` Gunakan [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) dan [client secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) objek PaymentIntent yang Anda buat di [Langkah 2](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-create-payment-intent) untuk menyerahkan detail tagihan pelanggan. Setelah konfirmasi, Stripe akan secara otomatis membuka modal untuk menampilkan instruksi pembayaran Konbini kepada pelanggan Anda. ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmKonbiniPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, }, }, payment_method_options: { konbini: { confirmation_number: document.getElementById('phone').value.replace(/\D/g,''), }, }, } ); // Stripe.js will open a modal to display the Konbini payment instructions to your customer // This async function finishes when the customer closes the modal if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } }); ``` > `stripe.confirmKonbiniPayment` might take several seconds to complete. During that time, disable your form from being resubmitted and show a waiting indicator like a spinner. If you receive an error, show it to the customer, re-enable the form, and hide the waiting indicator. ### Opsi metode pembayaran tambahan Ketika mengonfirmasi PaymentIntent Konbini, Anda dapat menentukan opsi metode pembayaran tambahan di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-payment_method_options-konbini), pada kunci `konbini`. | Bidang | Nilai | Diperlukan | Nilai default | | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ------------- | | `confirmation_number` | String numerik 10 hingga 11 angka. String ini juga ditampilkan dalam instruksi pembayaran dan tidak boleh hanya terdiri dari nol. Jika Anda tidak memberikan nilai untuk `confirmation_number`, Stripe membuatnya secara acak untuk Anda. Untuk informasi selengkapnya, lihat [Nomor konfirmasi](https://docs.stripe.com/payments/konbini/accept-a-payment.md#confirm-payment-intent-additional-options-confirmation-number). | Tidak | *unset* | #### Nomor konfirmasi Pelanggan Anda perlu menyebutkan `confirmation_number` saat menyelesaikan pembayaran. Saran umum untuk nilai ini, jika Anda memilih untuk mengaturnya atau mengizinkan pelanggan mengaturnya, adalah nomor telepon pelanggan. Suatu `confirmation_number` juga dapat diatur selama pembuatan PaymentIntent sisi server, tetapi yang lebih umum diatur sisi client oleh pelanggan selama konfirmasi PaymentIntent. Ini dapat diperbarui dari nilai yang diatur selama pembuatan PaymentIntent hingga konfirmasi. Jika `confirmation_number` yang ditentukan terlalu umum di antara transaksi minimarket yang sedang berlangsung, maka mungkin akan ditolak saat konfirmasi PaymentIntent. Kode kesalahan yang dikembalikan dalam hal ini adalah `payment_intent_konbini_rejected_confirmation_number`, yang hanya diperkirakan saat mengonfirmasikan PaymentIntent. Stripe secara proaktif memblokir nomor konfirmasi yang terdiri dari hanya nol pada saat pembuatan PaymentIntent serta selama pembaruan dan konfirmasi. Pastikan di pihak Anda tidak mengatur nilai ini atau mengizinkan pelanggan mengaturnya. ### Penanganan kesalahan Confirming a PaymentIntent client side might also fail. You should inspect the `error` return value to determine why and possibly show the error to the customer or correct the error and try again. ## Optional: Tampilkan sendiri instruksi pembayaran Konbini Anda kepada pelanggan [Sisi client] Kami merekomendasikan agar mengandalkan Stripe.js untuk menangani penampilan instruksi pembayaran Konbini dengan `confirmKonbiniPayment`. Namun, Anda juga dapat menampilkan instruksi pembayaran sendiri secara manual kepada pelanggan. Untuk menangani tindakan berikutnya dalam menampilkan detail Konbini secara manual kepada pelanggan, gunakan `handleActions: false` saat memanggil `stripe.confirmKonbiniPayment` di [Langkah 4](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-submit-payment). ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmKonbiniPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, }, }, payment_method_options: { konbini: { confirmation_number: document.getElementById('phone').value.replace(/\D/g,''), }, }, }, {handleActions: false}, ); // This async function finishes when the PaymentIntent is confirmed if (result.error) { // Display error to your customer var errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } else { // A Konbini PaymentIntent was successfully created var amount = result.paymentIntent.amount; var currency = result.paymentIntent.currency; var details = result.paymentIntent.next_action.konbini_display_details; for (var store in details.stores) { // Do something with each store's details } var expires_at = details.expires_at; // Display Konbini details to end customer } }); ``` ### Presentasi Anda menentukan cara menyajikan instruksi pembayaran kepada pelanggan. Minimal, instruksi Anda harus berisi hal-hal berikut: - Informasi umum yang relevan dengan pembelian, seperti keterangan produk, jumlah, dan tanggal kedaluwarsa pembayaran. - Kode pembayaran dan konfirmasi untuk setiap jaringan minimarket yang diperoleh melalui PaymentIntent konfirmasi. - Instruksi kepada pelanggan tentang cara menyelesaikan pembayaran Konbini. Contoh instruksi pembayaran adalah seperti berikut ini: ### Instruksi pembayaran Konbini 1. Temukan kode pembayaran dan nomor konfirmasi untuk jaringan minimarket tempat Anda berencana membayar. 1. Di minimarket, berikan kode pembayaran dan nomor konfirmasi ke mesin pembayaran atau kasir. 1. Setelah pembayaran selesai, simpan resi sebagai catatan Anda. 1. Hubungi kami jika Anda memiliki pertanyaan. ## Optional: Serahkan pembayaran kepada Stripe dari server Anda [Sisi server] Kami merekomendasikan pengandalan Stripe.js untuk menangani pembayaran Konbini sisi client dengan [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment). Penggunaan Stripe.js membantu memperluas integrasi Anda ke metode pembayaran lainnya. Namun, Anda juga dapat mengalihkan pelanggan secara manual pada server dengan mengikuti langkah-langkah berikut: - Atur `confirm` ke `true` ketika membuat [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) bertipe `konbini`, atau [konfirmasikan](https://docs.stripe.com/api/payment_intents/confirm.md) PaymentIntent yang ada. Anda harus memberikan properti `payment_method_data.billing_details.name` dan `payment_method_data.billing_details.email`. Anda juga dapat secara opsional mengatur `payment_method_options.konbini.confirmation_number` atau [payment_method_options](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options) lainnya. Dengan menentukan `payment_method_data`, kami akan membuat *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) dan segera menggunakannya dengan PaymentIntent ini. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=jpy \ -d confirm=true \ -d "payment_method_types[]=konbini" \ -d "payment_method_data[type]=konbini" \ -d "payment_method_data[billing_details][name]=Jenny Rosen" \ --data-urlencode "payment_method_data[billing_details][email]=jenny@example.com" ``` `PaymentIntent` yang dibuat berstatus `requires_action` dan tipe untuk `next_action` adalah `konbini_display_details`. #### Json ```json {"status": "requires_action", "next_action": { "type": "konbini_display_details", "konbini_display_details": { "expires_at": 1642431599, "hosted_voucher_url": "https://payments.stripe.com/konbini/voucher/...", "stores": { "familymart": { "confirmation_number": "12345678901", "payment_code": "123456" }, ... } } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", "amount": 1099, "client_secret": "pi_1G1sgdKi6xqXeNtkldRRE6HT_secret_h9B56ObhTN72fQiBAuzcVPb2E", "confirmation_method": "automatic", "created": 1642126547, "currency": "jpy", "livemode": true, "charges": { "data": [], "object": "list", "has_more": false, "url": "/v1/charges?payment_intent=pi_1G1sgdKi6xqXeNtkldRRE6HT" }, "payment_method_options": { "konbini": { "confirmation_number": null, "expires_after_days": null, "expires_at": null, "product_description": null } }, "payment_method_types": [ "konbini" ] } ``` - Redirect the customer to the URL provided in the `next_action.konbini_display_details.hosted_voucher_url` property. The code example here is approximate. The redirect method might be different in your web framework. #### Ruby ```ruby if payment_intent.status == 'requires_action' && payment_intent.next_action.type == 'konbini_display_details' url = payment_intent.next_action.konbini_display_details.hosted_voucher_url redirect(url) end ``` Kami merekomendasikan Anda [mengandalkan webhook](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks) untuk mengonfirmasi status pembayaran. ## Optional: Sesuaikan instruksi pembayaran Anda dapat menyesuaikan apa yang dilihat pelanggan menggunakan halaman [Pengaturan Branding](https://dashboard.stripe.com/account/branding). Jika [customer](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) ditautkan ke PaymentIntent, instruksi pembayaran yang di-hosting akan menggunakan bahasa yang disukai pelanggan. Jika tidak, bahasa browser pelanggan akan digunakan. Anda dapat menerapkan pengaturan brand berikut ke instruksi pembayaran yang di-hosting: - **Ikon**—Gambar brand dan nama umum bisnis Anda - **Logo**—Gambar brand Anda - **Warna aksen**—Warna tombol Cetak - **Warna brand**—Warna latar belakang ## Optional: Kirim email instruksi pembayaran Anda dapat mengaktifkan email instruksi pembayaran dan pengingat Konbini di halaman [Pengaturan Email](https://dashboard.stripe.com/settings/emails) di Dashboard. Setelah mengaktifkan email instruksi, Stripe mengirim email instruksi pembayaran setelah konfirmasi PaymentIntent. Email ini berisi kode pembayaran, nomor konfirmasi, dan detail lainnya untuk melakukan pembayaran di minimarket. Ini termasuk tautan ke halaman instruksi pembayaran yang di-hosting. ## Optional: Kirim email pengingat Anda dapat mengaktifkan email pengingat pembayaran dan mengonfigurasikan jumlah maksimum email pengingat per PaymentIntent di halaman [Pengaturan Email](https://dashboard.stripe.com/settings/emails) di Dashboard. Stripe mengirim paling banyak satu email per hari sampai pembayaran berhasil, kedaluwarsa, atau dibatalkan. > Di lingkungan percobaan, email instruksi dan pengingat hanya dikirim ke alamat email yang ditautkan ke akun Stripe. ## Tangani kejadian pascapembayaran [Sisi server] Konbini adalah metode pembayaran dengan [notifikasi tertunda](https://docs.stripe.com/payments/payment-methods.md#payment-notification), sehingga dana tidak langsung tersedia. Pelanggan mungkin tidak segera membayar tagihan Konbini yang tertunda di minimarket tepat setelah proses checkout. Setelah Pembayaran Konbini yang menunggu selesai, Stripe mengirim kejadian [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) untuknya. Gunakan Dashboard atau buat handler *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) untuk menerima kejadian ini dan menjalankan tindakan. Contoh tindakan termasuk mengirim email konfirmasi pesanan kepada pelanggan Anda, mencatat penjualan di database, atau memulai alur kerja pengiriman. Bila jelas bahwa pembayaran Konbini yang menunggu tidak selesai, biasanya sekitar satu jam setelah batas waktu kedaluwarsa, Stripe akan mengirim kejadian [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed). | Kejadian | Keterangan | Langkah berikutnya | | -------------------------------- | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | | `payment_intent.requires_action` | Pembayaran Konbini yang menunggu telah dibuat. | Secara opsional, kirim pelanggan ke halaman instruksi pembayaran. Tunggu pelanggan membayar pembayaran Konbini. | | `payment_intent.succeeded` | Pelanggan membayar pembayaran Konbini tertunda sebelum kedaluwarsa. | Penuhi barang atau layanan yang dibeli oleh pelanggan. | | `payment_intent.payment_failed` | Pelanggan tidak membayar pembayaran Konbini yang menunggu sebelum kedaluwarsa. | Hubungi pelanggan menggunakan email atau notifikasi otomatis untuk meminta metode pembayaran yang lain. | > Ketika mencoba, status PaymentIntent Konbini mungkin berubah secara otomatis berdasarkan parameter yang dikirim, seperti `email`. Anda dapat mengonfirmasikan pembaruan di [Dashboard](https://dashboard.stripe.com/test/payments). Lihat [Coba integrasi](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-test-integration) untuk detail selengkapnya. ### Terima kejadian dan jalankan tindakan bisnis #### Secara manual Gunakan Dashboard Stripe untuk melihat semua pembayaran Stripe Anda, mengirim resi email, menangani payout, atau mencoba ulang pembayaran yang gagal. - [Lihat pembayaran percobaan Anda di Dashboard](https://dashboard.stripe.com/test/payments) #### Kode Custom Bangun handler webhook untuk mendengarkan kejadian dan bangun alur pembayaran asinkron custom. Coba dan debug integrasi webhook Anda secara lokal dengan Stripe CLI. - [Build a custom webhook](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) ## Coba integrasi Ketika mencoba, atur `payment_method.billing_details.email` ke nilai berikut bila Anda memanggil [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) untuk mencoba berbagai skenario. Anda dapat mencoba dengan nomor konfirmasi khusus ataupun pola email. Jika keduanya diberikan, maka yang berlaku adalah perilaku nomor konfirmasi khusus. | Email | Nomor konfirmasi | Keterangan | | ---------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `{any_prefix}@{any_domain}` | `11111111110` | Menyimulasikan pembayaran Konbini yang berhasil setelah 3 menit dan webhook `payment_intent.succeeded` yang masuk setelah itu. Contoh: hanako@test.com | | `{any_prefix}succeed_immediately@{any_domain}` | `22222222220` | Menyimulasikan pembayaran Konbini yang seketika berhasil dan webhook `payment_intent.succeeded` yang masuk setelah itu. Contoh: succeed_immediately@test.com | | `{any_prefix}expire_immediately@{any_domain}` | `33333333330` | Menyimulasikan pembayaran Konbini yang segera kedaluwarsa dan webhook `payment_intent.payment_failed` yang masuk setelah itu. Bidang `expires_at` di [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) diatur ke waktu saat ini, terlepas dari pengaturan parameter `expires_after_days` atau `expires_at` di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Contoh: expire_immediately@test.com | | `{any_prefix}expire_with_delay@{any_domain}` | `44444444440` | Menyimulasikan pembayaran Konbini yang tidak pernah berhasil; ini akan kedaluwarsa dalam waktu 3 menit dan webhook `payment_intent.payment_failed` akan masuk setelah itu. Bidang `expires_at` di [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) diatur ke 3 menit mendatang terlepas dari pengaturan parameter `expires_after_days` atau `expires_at` di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Contoh: expire_with_delay@test.com | | `{any_prefix}fill_never@{any_domain}` | `55555555550` | Menyimulasikan pembayaran Konbini yang tidak pernah berhasil; Kedaluwarsa sesuai dengan bidang `expires_at` di `next_action.konbini_display_details` sesuai parameter yang diberikan di [opsi metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) dan webhook `payment_intent.payment_failed` yang masuk setelah itu. Contoh: fill_never@test.com | Untuk mencoba penanganan kesalahan [nomor konfirmasi](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-confirm-payment-intent-additional-options-confirmation-number), Anda dapat menggunakan nilai-nilai berikut untuk `payment_method_options[confirmation_number]`: - `01234567890` menghasilkan kode kesalahan `payment_intent_konbini_rejected_confirmation_number`. - `00000000000` menghasilkan kode kesalahan validasi generik. Anda harus menghindari kesalahan ini dalam integrasi menggunakan pravalidasi. ## Kedaluwarsa dan pembatalan After the time specified by the `expires_at` value in the [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at), the customer can no longer *initiate* the payment process for a pending Konbini payment at a convenience store kiosk. However, if they issued a valid payment slip before the deadline they might be able to *complete* the payment at the cash register after the `expires_at` time. Ada periode penyangga untuk menghindari kegagalan pembayaran prematur dalam kejadian demikian. Status PaymentIntent berubah menjadi `requires_payment_method`. Pada titik ini, Anda dapat membatalkan atau mengonfirmasikan PaymentIntent dengan metode pembayaran lain. Anda juga dapat membatalkan pembayaran Konbini yang menunggu setelah konfirmasi dan sebelum waktu yang ditentukan oleh `next_action.konbini_display_details.expires_at`. Memperbarui PaymentIntent atau mengonfirmasinya dengan metode pembayaran lain juga secara implisit akan membatalkan pembayaran Konbini yang ada. If the customer is currently paying for the Konbini payment at the convenience store, the cancellation request will fail. Cancellation might be re-attempted if the customer abandons the payment attempt and after the payment slip expires. Perhatikan bahwa [masalah ketersedian metode pembayaran sementara](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) juga memengaruhi permintaan pembatalan (baik eksplisit serta implisit). > Saat Anda membatalkan pembayaran yang menunggu, petunjuk pembayaran semula akan menjadi tidak valid. Bagi kebanyakan kasus penggunaan, kami menyarankan Anda untuk menghubungi pelanggan untuk menginformasikan tentang pembatalan ini. > > Ketika Anda berhasil memastikan kembali PaymentIntent dalam status `requires_action` kami membuat petunjuk baru dan `hosted_voucher_url` baru. Anda harus memastikan bahwa pelanggan Anda mengetahui tentang hal ini. ## Tangani masalah ketersediaan sementara Kode kesalahan berikut mengindikasikan masalah sementara pada ketersediaan metode pembayaran: | Kode | Keterangan | Penanganan | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Ada terlalu banyak permintaan yang dibuat dalam waktu berdekatan untuk metode pembayaran ini, yang memiliki batas lebih ketat daripada [batas rasio API secara keseluruhan](https://docs.stripe.com/rate-limits.md). | Mencoba kembali dengan backoff pada umumnya akan menyelesaikan situasinya. Namun demikian, dalam hal penggunaan metode pembayaran yang tinggi secara terus menerus (misalnya selama masa diskon yang sedang berlangsung di situs web Anda) kesalahan ini dapat tetap ada pada sejumlah permintaan. Jika ini terjadi, meminta pelanggan untuk memilih metode pembayaran yang berbeda dapat menjadi opsi mitigasi tambahan. | | `payment_method_not_available` | Metode pembayaran mengalami masalah sementara yang tidak diketahui yang berpotensi untuk terjadi selama beberapa waktu (misalnya saat aliran listrik mati atau periode pemeliharaan terjadwal). | Sangat disarankan untuk mengajak pengguna Anda menyelesaikan pembelian dengan metode pembayaran lain atau mencoba kembali di lain waktu. | > If you anticipate heavy usage in general or for an upcoming event, contact us ahead of time. ## Pengembalian dana Ada kemungkinan pengembalian dana Konbini pembayaran melalui [Dashboard](https://dashboard.stripe.com/payments) atau [API](https://docs.stripe.com/api.md#create_refund). Untuk menyelesaikan pengembalian dana yang dikirim ke rekening bank pelanggan secara langsung, pelanggan Anda harus memberikan detail rekening bank untuk menerima dana tersebut. Stripe menghubungi pelanggan di alamat email dari detail tagihan pada metode pembayaran dan meminta detail ini dari mereka. Setelah menerima detail bank, kami akan memproses pengembalian dana secara otomatis. Transisi status pengembalian dana sebagai berikut: | Kejadian | Status pengembalian dana | | ------------------------------------------------------------------------------------------- | ------------------------ | | Pengembalian dana dibuat | `requires_action` | | Pelanggan menyerahkan detail rekening bank, dan Stripe mulai memproses pengembalian dananya | `pending` | | Pengembalian dana diperkirakan masuk di bank pelanggan | `succeeded` | | Bank pelanggan mengembalikan dana ke Stripe | `requires_action` | | Pengembalian dana dalam `requires_action` 45 hari setelah pembuatan | `failed` | | Pengembalian dana dibatalkan dari status `requires_action` | `canceled` | Jika bank pelanggan tidak berhasil menyelesaikan transfer, dana dikembalikan ke Stripe dan transisi pengembalian dana ke `requires_action`. Hal ini dapat terjadi jika nama pemegang rekening tidak sesuai dengan yang tercatat di bank penerima atau jika nomor rekening bank yang diberikan salah ketik. Dalam kasus ini, Stripe mengirim email kepada pelanggan untuk memberitahukan kegagalan dan meminta mereka mengirimkan kembali detail rekening banknya. Jika pelanggan Anda tidak memberikan detail rekening banknya dalam waktu 45 hari, status pengembalian dana bertransisi ke `failed` dan kami mengirim kejadian [refund.failed](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). Ini berarti bahwa Stripe tidak dapat memproses pengembalian dana, dan Anda harus [mengembalikan dana kepada pelanggan di luar Stripe](https://docs.stripe.com/refunds.md#failed-refunds). Bidang [instructions_email](https://docs.stripe.com/api/refunds/object.md#refund_object-instructions_email) pada pengembalian dana merupakan email yang dikirimi pengembalian dana. Meski pengembalian dana menunggu tanggapan dari pelanggan, detail email yang dikirim kepada pelanggan juga dapat ditemukan di bawah bidang [next_action.display_details.email_sent](https://docs.stripe.com/api/refunds/object.md#refund_object-next_action-display_details-email_sent) pada pengembalian dana. Each individual refund (including each partial refund) might incur a fee. Contact your point of contact at Stripe to learn more about this. ### Mencoba Pengembalian Dana Anda dapat mencoba perilaku pengembalian dana dalam mode percobaan menggunakan rekening bank percobaan berikut di halaman pengumpulan detail rekening bank yang ditautkan dalam email yang dikirim ke pelanggan. Detail rekening bank di luar rekening bank percobaan ini tidak akan diterima. | Routing | Akun | Tipe | | --------- | ------------------------------------------------------------- | --------------------------- | | `1100000` | `0001234` | Pengembalian dana berhasil. | | `1100000` | `1111113` `1111116` `1111113` `3333335` `4444440` | Pengembalian dana gagal. | #### Mencoba Kedaluwarsa Pengembalian Dana Anda dapat melakukan panggilan API untuk menyimulasikan berakhirnya pengembalian dana mode percobaan. ```bash curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u <>: ```