Pembayaran Konbini
Gunakan API Payment Intents dan Payment Methods untuk menerima pembayaran melalui Konbini, cara umum untuk melakukan pembayaran melalui minimarket di Jepang.
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 StripeSisi server
Pertama, Anda membutuhkan akun Stripe. Daftar sekarang.
Gunakan pustaka resmi kami untuk mendapatkan akses ke API Stripe dari aplikasi Anda:
Buat PaymentIntentSisi server
Stripe menggunakan objek PaymentIntent 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, tambahkan konbini
ke daftar tipe metode pembayaran untuk PaymentIntent Anda.
Ambil client secret
PaymentIntent menyertakan client secret yang digunakan pada sisi client untuk menyelesaian proses pembayaran dengan aman. Anda dapat menggunakan pendekatan berbeda untuk meneruskan client secret ke sisi client.
Opsi metode pembayaran tambahan
Opsi metode pembayaran dapat ditentukan di opsi metode pembayaran pada kunci konbini
.
Bidang | Nilai | Diperlukan | Nilai Default |
---|---|---|---|
expires_ | Jumlah hari kalender sebelum pembayaran Konbini yang menunggu menjadi kedaluwarsa. Nilai yang valid adalah dari 1 hingga 60 hari. Lihat Kedaluwarsa. | Tidak | 3 |
expires_ | 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. | Tidak | unset |
product_ | Keterangan produk hingga 22 karakter, yang akan ditampilkan kepada pelanggan di minimarket. Keberadaan karakter non-Shift JIS (JIS X 0208:1997) akan menyebabkan dikembalikannya kesalahan. Meski tidak diharuskan, kami merekomendasikan pengaturan opsi ini. Bila tidak maka akan kami kembalikan ke placeholder umum yang dipilih berdasarkan kebijakan kami, mis. お買い上げ商品・サービス. | Tidak | placeholder |
Kedaluwarsa
Pembayaran Konbini yang menunggu akan kedaluwarsa tepat sebelum tengah malam (23.59.59 WSJ) pada tanggal yang ditentukan. Misalnya, jika expires_
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_
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_
dan expires_
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 PaymentIntent seperti pembuatan, pembaruan, dan konfirmasi dapat gagal. Anda dapat memeriksa nilai error
dari respons API untuk menentukan alasannya dan dalam banyak situasi baik menyerahkan ulang permintaan atau memperbaiki kesalahan tersebut. Jika Anda memberikan nilai opsi metode pembayaran confirmation_
, maka Anda mungkin ingin menangani kode kesalahan spesifik yang kami kembalikan. Lihat Nomor konfirmasi untuk detail selengkapnya.
Metode pembayaran untuk sementara mungkin sesekali tidak tersedia karena listrik mati, pemeliharaan terjadwal, atau pola penggunaan Anda. Lihat Menangani masalah ketersediaan sementara untuk detail selengkapnya.
Kumpulkan detail metode pembayaranSisi 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) 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:
<form id="payment-form"> <div class="form-row"> <label for="name"> Name </label> <input id="name" name="name" required> </div> <div class="form-row"> <label for="email"> Email </label> <input id="email" name="email" required> </div> <div class="form-row"> <label for="phone"> Phone Number </label> <input id="phone" name="phone" required> </div> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> <button id="submit-button">Pay with Konbini</button> </form>
Serahkan pembayaran ke StripeSisi client
Saat pelanggan mengklik untuk membayar dengan Konbini, gunakan Stripe.js untuk menyerahkan pembayaran kepada Stripe. Stripe.js adalah pustaka JavaScript kami yang mendasar untuk membangun alur pembayaran.
Sertakan skrip Stripe.js di halaman checkout dengan menambahkannya ke head
file HTML Anda.
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
Buat instance Stripe.js dengan JavaScript berikut di halaman checkout Anda.
// 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(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
Gunakan stripe.confirmKonbiniPayment dan client secret objek PaymentIntent yang Anda buat di Langkah 2 untuk menyerahkan detail tagihan pelanggan.
Setelah konfirmasi, Stripe akan secara otomatis membuka modal untuk menampilkan instruksi pembayaran Konbini kepada pelanggan Anda.
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; } });
Catatan
stripe.
mungkin perlu waktu beberapa detik untuk diselesaikan. Sambil menunggu, nonaktifkan formulir Anda agar tidak diserahkan ulang dan tampilkan indikator menunggu seperti spinner. Jika Anda menerima kesalahan, tampilkan kepada pelanggan, aktifkan kembali formulir, dan sembunyikan indikator menunggu.
Opsi metode pembayaran tambahan
Ketika mengonfirmasi PaymentIntent Konbini, Anda dapat menentukan opsi metode pembayaran tambahan di opsi metode pembayaran, pada kunci konbini
.
Bidang | Nilai | Diperlukan | Nilai default |
---|---|---|---|
confirmation_ | 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_ , Stripe membuatnya secara acak untuk Anda. Untuk informasi selengkapnya, lihat Nomor konfirmasi. | Tidak | unset |
Nomor konfirmasi
Pelanggan Anda perlu menyebutkan confirmation_
saat menyelesaikan pembayaran. Saran umum untuk nilai ini, jika Anda memilih untuk mengaturnya atau mengizinkan pelanggan mengaturnya, adalah nomor telepon pelanggan. Suatu confirmation_
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_
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_
, 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
Mengonfirmasi sisi client PaymentIntent juga mungkin gagal. Anda harus memeriksa nilai pengembalian error
untuk menentukan sebabnya dan dapat menampilkan kesalahan tersebut kepada pelanggan atau perbaiki kesalahan tersebut dan coba lagi.
Tangani kejadian pascapembayaranSisi server
Konbini adalah metode pembayaran notifikasi tertunda, sehingga dana tidak segera tersedia. Pelanggan mungkin tidak membayar pembayaran Konbini yang menunggu di minimarket begitu selesai checkout.
Setelah Pembayaran Konbini yang menunggu selesai, Stripe mengirim kejadian payment_intent.succeeded untuknya. Gunakan Dashboard atau buat handler webhook 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.
Kejadian | Keterangan | Langkah berikutnya |
---|---|---|
payment_ | Pembayaran Konbini yang menunggu telah dibuat. | Secara opsional, kirim pelanggan ke halaman instruksi pembayaran. Tunggu pelanggan membayar pembayaran Konbini. |
payment_ | Pelanggan membayar pembayaran Konbini tertunda sebelum kedaluwarsa. | Penuhi barang atau layanan yang dibeli oleh pelanggan. |
payment_ | Pelanggan tidak membayar pembayaran Konbini yang menunggu sebelum kedaluwarsa. | Hubungi pelanggan menggunakan email atau notifikasi otomatis untuk meminta metode pembayaran yang lain. |
Catatan
Ketika mencoba, status PaymentIntent Konbini mungkin berubah secara otomatis berdasarkan parameter yang dikirim, seperti email
. Anda dapat mengonfirmasikan pembaruan di Dashboard. Lihat Coba integrasi 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.
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.
Coba integrasi
Ketika mencoba, atur payment_
ke nilai berikut bila Anda memanggil stripe.confirmKonbiniPayment 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.
Nomor konfirmasi | Keterangan | |
---|---|---|
|
| Menyimulasikan pembayaran Konbini yang berhasil setelah 3 menit dan webhook Contoh: hanako@test.com |
|
| Menyimulasikan pembayaran Konbini yang seketika berhasil dan webhook Contoh: succeed_immediately@test.com |
|
| Menyimulasikan pembayaran Konbini yang segera kedaluwarsa dan webhook Bidang Contoh: expire_immediately@test.com |
|
| Menyimulasikan pembayaran Konbini yang tidak pernah berhasil; ini akan kedaluwarsa dalam waktu 3 menit dan webhook Bidang Contoh: expire_with_delay@test.com |
|
| Menyimulasikan pembayaran Konbini yang tidak pernah berhasil; Kedaluwarsa sesuai dengan bidang Contoh: fill_never@test.com |
Untuk mencoba penanganan kesalahan nomor konfirmasi, Anda dapat menggunakan nilai-nilai berikut untuk payment_
:
01234567890
menghasilkan kode kesalahanpayment_
.intent_ konbini_ rejected_ confirmation_ number 00000000000
menghasilkan kode kesalahan validasi generik. Anda harus menghindari kesalahan ini dalam integrasi menggunakan pravalidasi.
Kedaluwarsa dan pembatalan
Setelah waktu yang ditentukan oleh nilai expires_
di next_action.konbini_display_details, pelanggan tidak dapat lagi initiate proses pembayaran untuk pembayaran Konbini yang menunggu di kios minimarket. Namun, jika mengeluarkan slip pembayaran yang valid sebelum batas waktu, pelanggan mungkin dapat menyelesaikan pembayaran di kasir setelah waktu expires_
.
Ada periode penyangga untuk menghindari kegagalan pembayaran prematur dalam kejadian demikian. Status PaymentIntent berubah menjadi requires_
. 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_
. Memperbarui PaymentIntent atau mengonfirmasinya dengan metode pembayaran lain juga secara implisit akan membatalkan pembayaran Konbini yang ada.
Jika pelanggan saat ini melakukan pembayaran Konbini di minimarket, permintaan pembatalan akan gagal. Pembatalan dapat dicoba kembali jika pelanggan mengabaikan upaya pembayaran dan setelah slip pembayaran habis masa berlakunya.
Perhatikan bahwa masalah ketersedian metode pembayaran sementara juga memengaruhi permintaan pembatalan (baik eksplisit serta implisit).
Peringatan
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_
kami membuat petunjuk baru dan hosted_
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_ | Ada terlalu banyak permintaan yang dibuat dalam waktu berdekatan untuk metode pembayaran ini, yang memiliki batas lebih ketat daripada batas rasio API secara keseluruhan. | 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_ | Metode pembayaran mengalami masalah sementara yang tidak diketahui yang berpotensi untuk terjadi selama beberapa waktu (misalnya saat aliran listrik mati atau periode pemeliharaan terjadwal). | Sebaiknya undang pengguna untuk menyelesaikan pembelian mereka dengan metode pembayaran berbeda atau coba lagi nanti. |
Peringatan
Jika Anda mengantisipasi penggunaan yang tinggi atau untuk acara mendatang, hubungi kami jauh hari sebelumnya.
Pengembalian dana
Pembayaran pengembalian dana Konbini dapat dilakukan melalui Dashboard atau API.
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_ |
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_ |
Pengembalian dana dalam requires_ 45 hari setelah pembuatan | failed |
Pengembalian dana dibatalkan dari status requires_ | canceled |
Jika bank pelanggan tidak berhasil menyelesaikan transfer, dana dikembalikan ke Stripe dan transisi pengembalian dana ke requires_
. 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. Ini berarti bahwa Stripe tidak dapat memproses pengembalian dana, dan Anda harus mengembalikan dana kepada pelanggan di luar Stripe.
Bidang 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 pada pengembalian dana.
Setiap pengembalian dana perorangan (termasuk setiap pengembalian dana sebagian) dapat dikenakan biaya. Hubungilah kontak Anda di Stripe untuk mempelajari selengkapnya tentang hal ini.
Mencoba Pengembalian Dana
Anda dapat mencoba perilaku pengembalian dana dalam mode percobaan menggunakan rekening bank percobaan berikut ini di halaman pengumpulan detail rekening bank yang ditautkan dalam email yang dikirim kepada pelanggan. Detail rekening bank di luar rekening bank percobaan ini tidak akan diterima.
Routing | Akun | Tipe |
---|---|---|
1100000 | 0001234 | Pengembalian dana berhasil. |
|
| Pengembalian dana gagal. |
Mencoba Kedaluwarsa Pengembalian Dana
Anda dapat melakukan panggilan API untuk menyimulasikan berakhirnya pengembalian dana mode percobaan.
curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u
:sk_test_BQokikJOvBiI2HlWgH4olfQ2