Terima kejadian Stripe di endpoint webhook Anda
Kirim kejadian ke akun AWS Anda
Kami meluncurkan dukungan untuk menerima kejadian Stripe di Amazon EventBridge dalam beta tertutup. Untuk mendapatkan akses dini, mendaftarlah pada eventbridge.stripe.dev.
Mengapa menggunakan webhook
Ketika membuat integrasi Stripe, Anda mungkin menginginkan aplikasi menerima kejadian yang berlangsung di akun Stripe, sehingga sistem backend Anda dapat menjalankan tindakan dengan semestinya.
Untuk mengaktifkan kejadian webhook, Anda perlu mendaftarkan endpoint webhook. Setelah mendaftarkannya, Stripe dapat mendorong data kejadian secara aktual ke endpoint webhook aplikasi Anda bila kejadian berlangsung di akun Stripe. Stripe menggunakan HTTPS untuk mengirim kejadian webhook ke aplikasi Anda sebagai payload JSON yang menyertakan objek Kejadian.
Menerima kejadian webhook sangat berguna untuk mendengarkan kejadian asinkron seperti saat bank pelanggan mengonfirmasi pembayaran, pelanggan mempersengketakan charge, pembayaran rutin berhasil, atau saat mengumpulkan pembayaran langganan.
Gambaran umum kejadian
Stripe membuat data kejadian yang dapat kami kirim kepada Anda untuk memberitahukan aktivitas di akun Anda.
Saat kejadian berlangsung, Stripe membuat objek Kejadian baru. Satu permintaan API dapat menghasilkan pembuatan beberapa kejadian. Misalnya, jika membuat langganan baru untuk pelanggan, Anda akan menerima kejadian customer.subscription.created
dan payment_intent.succeeded
.
Dengan mendaftarkan endpoint webhook di akun Stripe, Anda berarti mengaktifkan Stripe untuk secara otomatis mengirim objek Kejadian sebagai bagian dari permintaan POST ke endpoint webhook terdaftar yang di-hosting oleh aplikasi Anda. Setelah endpoint webhook menerima Kejadian, aplikasi Anda dapat menjalankan tindakan backend (misalnya, memanggil API penyedia pengiriman untuk menjadwalkan pengiriman setelah Anda menerima kejadian payment_intent.succeeded
).
Objek kejadian
Objek Kejadian yang kami kirim ke endpoint webhook Anda memberikan gambaran objek yang berubah. Mungkin disertakan properti previous_attributes
yang menunjukkan perubahan, bila ada.
Lihat daftar lengkap tipe kejadian yang kami kirimkan ke webhook Anda.
Contoh payload kejadian
Kejadian berikut ini menampilkan pembaruan langganan pada akhir uji coba.
{ "id": "evt_1MqqbKLt4dXK03v5qaIbiNCC", "object": "event", "api_version": "2024-04-10", "created": 1680064028,
Struktur objek kejadian
Tinjau struktur objek kejadian untuk lebih memahami kejadian dan informasi yang mendasarinya.
Tipe kejadian
Anda menerima kejadian untuk semua tipe kejadian yang didengarkan oleh endpoint webhook dalam konfigurasi Anda. Gunakan type
kejadian yang diterima untuk menentukan pemrosesan apa yang perlu dilakukan oleh aplikasi Anda. data.object
yang sesuai dengan setiap type
kejadian bervariasi.
Mode live dan percobaan
Anda mungkin menerima permintaan pengiriman kejadian mode percobaan maupun live ke endpoint Anda. Hal ini dapat terjadi jika Anda menggunakan satu endpoint untuk mode percobaan maupun live atau jika Anda merupakan platform Connect yang membuat permintaan mode percobaan untuk akun terhubung Standard live. Gunakan atribut livemode
untuk memeriksa apakah objek berada dalam mode percobaan atau live, dan tentukan penanganan yang benar untuk kejadian tersebut.
Versi API
api_version
menunjukkan versi API dari kejadian dan menentukan struktur data.object yang disertakan. Endpoint Anda menerima kejadian menggunakan versi API terkonfigurasi, yang dapat berbeda dari versi API default akun Anda atau versi API dari semua permintaan yang terkait dengan kejadian tersebut. Atribut ini ditentukan oleh endpoint tujuan, yang menunjukkan bahwa kejadian yang sama dapat dikirimkan ke beberapa endpoint menggunakan versi API yang berbeda. Jika Anda menggunakan pustaka client Java, .NET, atau Go, pastikan mengonfigurasi versi API endpoint untuk menggunakan versi API sama yang disematkan di client. Jika tidak maka Anda mungkin tidak dapat melakukan deserialisasi objek kejadian.
Ketika mengambil objek Kejadian dari API, Anda tidak dapat mengontrol versi API dari struktur data.object
. Sebagai gantinya, ambil objek itu dari endpoint API yang sesuai dan gunakan tajuk Stripe-Version
untuk menentukan versi API.
Kejadian permintaan API
Bila kejadian dibuat sebagai hasil dari permintaan API, permintaan tersebut akan muncul sebagai request.id
. Jika Anda menggunakan idempotency_key
ketika membuatnya, permintaan tersebut disertakan sebagai request.idempotency_key
. Periksa hash request
ini saat Anda menyelidiki apa yang menyebabkan sebuah kejadian.
Objek data dan atribut sebelumnya
Untuk kejadian *.updated
, payload kejadian menyertakan data.previous_attributes
yang memungkinkan Anda memeriksa apa yang telah berubah pada objek Stripe. previous_attributes
pada contoh kejadian customer.subscription.updated
di atas menunjukkan bahwa langganan memiliki nilai sebelumnya, yaitu status: trialing
, di antara sekian perubahan lainnya. Objek data.object
menunjukkan status sebagai active
yang menunjukkan bahwa transisi langganan telah keluar dari periode uji coba.
Pengiriman yang menunggu
Gunakan pending_webhooks
untuk menentukan seberapa banyak endpoint yang dikonfigurasi untuk kejadian ini yang belum berhasil menanggapi pengiriman. Selama pengiriman awal, nilai ini adalah 1 atau lebih tinggi karena endpoint Anda belum berhasil menanggapi. Jika Anda mengambil kejadian ini nanti, pending_webhooks
akan turun menjadi minimum 0 karena setiap endpoint berhasil menanggapi. Hal ini penting untuk kejadian invoice.created
karena pengiriman yang belum berhasil dapat menunda finalisasi invoice.
Kejadian akun terhubung
Kejadian dari akun terhubung yang dikirimkan ke endpoint Connect menyertakan account
. Gunakan account
untuk melacak akun terhubung mana yang memiliki objek guna memastikan bahwa platform Anda dapat memproses data kejadian dengan tepat.
Mengapa objek kejadian dihasilkan
Tabel ini menjelaskan berbagai skenario yang memicu pembuatan objek Kejadian.
Sumber | Pemicu |
---|---|
Dashboard | Saat Anda memanggil API dengan mengubah sumber daya Stripe di Dashboard Stripe. |
API | Saat tindakan pengguna di aplikasi atau situs web Anda menghasilkan panggilan API. |
API | Saat Anda secara manual memicu kejadian dengan Stripe CLI. |
API | Saat Anda memanggil API secara langsung dengan Stripe CLI. |
Mulai
Untuk mulai menerima kejadian webhook di aplikasi Anda, buat dan daftarkan endpoint webhook dengan mengikuti langkah-langkah di bawah ini:
- Buat handler endpoint webhook untuk menerima permintaan POST data kejadian.
- Coba handler endpoint webhook Anda secara lokal menggunakan Stripe CLI.
- Daftarkan endpoint Anda dalam Stripe menggunakan Dashboard atau API.
- Amankan endpoint webhook Anda.
Anda dapat mendaftarkan dan membuat satu endpoint guna menangani beberapa tipe kejadian sekaligus, atau siapkan masing-masing endpoint untuk kejadian spesifik.
Buat handler
Siapkan fungsi endpoint HTTP atau HTTPS yang dapat menerima permintaan webhook dengan metode POST. Jika Anda masih mengembangkannya pada mesin lokal, fungsi endpoint dapat menggunakan HTTP. Setelah dapat diakses secara publik, fungsi endpoint webhook Anda harus menggunakan HTTPS.
Siapkan fungsi endpoint Anda sehingga fungsi tersebut:
- Menangani permintaan POST dengan payload JSON yang terdiri dari objek kejadian.
- Segera mengembalikan kode status (
2xx
) yang berhasil sebelum logika kompleks yang dapat menyebabkan waktu habis. Misalnya, Anda harus mengembalikan tanggapan200
sebelum memperbarui invoice pelanggan seperti yang dibayarkan dalam sistem akuntansi Anda.
Catatan
Atau, Anda dapat membuat fungsi endpoint webhook dalam bahasa pemrograman menggunakan pembuat endpoint webhook interaktif kami.
Contoh endpoint
Potongan kode ini adalah fungsi webhook yang dikonfigurasi untuk memeriksa apakah tipe kejadian telah diterima, untuk menangani kejadian, dan mengembalikan tanggapan 200.
Coba handler Anda
Sebelum menjadikan live fungsi endpoint webhook, kami merekomendasikan Anda mencoba integrasi aplikasi. Anda dapat melakukannya dengan mengonfigurasi listener lokal untuk mengirim kejadian ke mesin lokal, dan mengirim kejadian percobaan. Anda perlu menggunakan CLI untuk mencobanya.
Teruskan kejadian ke endpoint lokal
Untuk meneruskan kejadian ke endpoint lokal Anda, jalankan perintah berikut ini dengan CLI guna menyiapkan listener lokal. Tanda --forward-to
mengirim semua kejadian Stripe dalam mode percobaan ke endpoint webhook lokal.
stripe listen --forward-to localhost:4242/stripe_webhooks
Catatan
Anda juga dapat menjalankan perintah stripe listen pada Stripe Shell untuk melihat kejadian melalui terminal Stripe Shell, meski Anda tidak akan dapat meneruskan kejadian dari Shell ke endpoint lokal.
Konfigurasi yang berguna untuk membantu percobaan Anda dengan listener lokal menyertakan yang berikut ini:
- Untuk menonaktifkan verifikasi sertifikat HTTPS, gunakan tanda opsional
--skip-verify
. - Untuk meneruskan hanya kejadian spesifik, gunakan tanda opsional
--events
dan masukkan daftar kejadian yang dipisahkan dengan koma.
stripe listen --events payment_intent.created,customer.created,payment_intent.succeeded,checkout.session.completed,payment_intent.payment_failed \ --forward-to localhost:4242/webhook
- Untuk meneruskan kejadian ke endpoint webhook lokal Anda dari endpoint webhook publik yang sudah didaftarkan di Stripe, gunakan tanda opsional
--load-from-webhooks-api
. Hal ini akan memuat endpoint terdaftar, mengurai jalur dan kejadian terdaftarnya, kemudian menambahkan jalur ke endpoint webhook lokal Anda di--forward-to path
.
stripe listen --load-from-webhooks-api --forward-to localhost:5000
- Untuk memeriksa tanda tangan webhook, gunakan
{{WEBHOOK_SIGNING_SECRET}}
dari output awal perintah listen.
Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
Memicu kejadian percobaan
Untuk mengirim kejadian percobaan, picu tipe kejadian langganan tujuan kejadian Anda dengan membuat objek melalui Dashboard Stripe secara manual. Atau, Anda dapat menggunakan perintah berikut Stripe Shell atau Stripe CLI.
Contoh ini memicu kejadian payment_intent.succeeded
:
stripe trigger payment_intent.succeeded Running fixture for: payment_intent Trigger succeeded! Check dashboard for event details.
Catatan
Pelajari cara memicu kejadian dengan Stripe untuk VS Code.
Daftarkan endpoint Anda di Stripe
Setelah mencoba fungsi endpoint webhook Anda, daftarkan URL yang dapat diakses dari endpoint webhook menggunakan bagian Webhook atau API agar Stripe mengetahui ke mana harus mengirimkan kejadian. Anda dapat mendaftarkan hingga 16 endpoint webhook di Stripe. Endpoint webhook yang didaftarkan harus berupa URL HTTPS yang dapat diakses secara publik.
Format URL webhook
Format URL untuk mendaftarkan endpoint webhook adalah:
https://<your-website>/<your-webhook-endpoint>
Misalnya, jika domain Anda adalah https://mycompanysite.com
dan rute ke endpoint webhook Anda adalah @app.route('/stripe_webhooks', methods=['POST'])
, masukkan https://mycompanysite.com/stripe_webhooks
sebagai URL Endpoint
Tambahkan endpoint webhook
Catatan
Jika mengaktifkan Workbench di akun, Anda perlu menggunakan Workbench untuk mendaftarkan endpoint webhook.
Stripe mendukung dua tipe endpoint, Account dan Connect. Buat endpoint untuk Account kecuali jika Anda telah membuat aplikasi Connect. Gunakan langkah-langkah berikut untuk mendaftarkan endpoint webhook di Dashboard Pengembang. Anda dapat mendaftarkan hingga 16 endpoint webhook pada setiap akun Stripe.
- Masuk ke halaman Webhook.
- Klik Tambahkan endpoint.
- Tambahkan URL HTTPS endpoint webhook Anda di URL Endpoint.
- Jika Anda memiliki akun Stripe Connect, masukkan keterangan, kemudian klik Dengarkan kejadian di Akun terhubung.
- Pilih tipe kejadian yang saat ini Anda terima di endpoint webhook lokal di Pilih kejadian.
- Klik Tambahkan endpoint.
Daftarkan endpoint webhook dengan Stripe API
Anda juga dapat secara terprogram membuat endpoint webhook.
Untuk menerima kejadian dari akun terhubung, gunakan parameter Connect.
Contoh berikut ini membuat endpoint yang memberi tahu Anda bila charge berhasil atau gagal.
Amankan endpoint Anda
Kami sangat merekomendasikan Anda untuk mengamankan integrasi dengan memastikan handler memverifikasi bahwa semua permintaan webhook dihasilkan oleh Stripe. Anda dapat memilih untuk memverifikasi tanda tangan webhook menggunakan pustaka resmi kami atau memverifikasinya secara manual.
Lakukan debug integrasi webhook
Beberapa tipe masalah dapat terjadi ketika mengirimkan kejadian ke endpoint webhook Anda:
- Stripe mungkin tidak dapat mengirimkan kejadian ke endpoint webhook Anda.
- Endpoint webhook Anda mungkin memiliki masalah SSL.
- Konektivitas jaringan Anda terputus-putus.
- Endpoint webhook Anda tidak menerima kejadian yang Anda perkirakan.
Lihat pengiriman kejadian
Catatan
Jika mengaktifkan Workbench di akun, Anda perlu menggunakan Workbench untuk mengelola pengiriman kejadian.
Untuk melihat pengiriman kejadian bagi endpoint spesifik, pilih endpoint webhook di tab Webhook.
Untuk melihat semua kejadian yang dipicu di akun Anda, lihat tab Kejadian.
Perbaiki kode status HTTP
Bila kejadian menampilkan kode status 200
, ini menunjukkan pengiriman yang berhasil ke endpoint webhook. Anda mungkin juga menerima kode status selain 200
. Lihat tabel di bawah ini untuk daftar kode status HTTP yang umum dan solusi yang direkomendasikan.
Status webhook yang menunggu | Keterangan | Perbaiki |
---|---|---|
(Tidak dapat menghubungkan) ERR | Kami tidak dapat membuat sambungan ke server tujuan. | Pastikan domain host Anda dapat diakses secara publik dengan internet. |
(302 ) ERR (atau status 3xx lainnya) | Server tujuan berusaha mengarahkan permintaan ke lokasi lain. Kami menganggap tanggapan pengalihan ke permintaan webhook sebagai kegagalan. | Atur tujuan endpoint webhook ke URL yang diselesaikan dengan pengalihan. |
(400 ) ERR (atau status 4xx lainnya) | Server tujuan tidak dapat atau tidak akan memproses permintaan. Ini mungkin terjadi saat server mendeteksi kesalahan (400 ), saat URL tujuan memiliki pembatasan akses, (401 , 403 ), atau saat URL tujuan tidak ada (404 ). |
|
(500 ) ERR (atau status 5xx lainnya) | Server tujuan mengalami kesalahan saat memproses permintaan. | Tinjau log aplikasi Anda untuk memahami mengapa terjadi pengembalian kesalahan 500 . |
(Kesalahan TLS) ERR | Kami tidak dapat membuat sambungan aman ke server tujuan. Kesalahan ini biasanya disebabkan oleh masalah dengan sertifikat SSL/TLS atau sertifikat perantara dalam rantai sertifikat server tujuan. | Lakukan percobaan server SSL untuk menemukan masalah yang mungkin menyebabkan kesalahan ini. |
(Kehabisan waktu) ERR | Server tujuan memerlukan waktu terlalu lama untuk menanggapi permintaan webhook. | Pastikan Anda segera menunda logika kompleks dan mengembalikan tanggapan yang berhasil dalam kode penanganan webhook Anda. |
Perilaku pengiriman kejadian
Bagian ini membantu Anda memahami berbagai perilaku yang diperkirakan mengenai cara Stripe mengirim kejadian ke endpoint webhook Anda.
Perilaku percobaan ulang
Dalam mode live, Stripe mencoba mengirimkan kejadian tertentu ke endpoint webhook Anda hingga 3 hari dengan backoff eksponensial. Pada bagian Kejadian di Dashboard, Anda dapat melihat kapan percobaan ulang berikutnya akan terjadi.
Dalam mode percobaan, Stripe mencoba ulang tiga kali selama beberapa jam. Anda dapat mencoba ulang mengirimkan masing-masing kejadian secara manual ke endpoint webhook setelah waktu ini menggunakan bagian Kejadian di Dashboard. Anda juga dapat meminta query kejadian yang terlewat untuk merekonsiliasi data selama jangka waktu tertentu.
Percobaan ulang otomatis masih berlanjut, sekalipun Anda mencoba ulang mengirimkan masing-masing kejadian webhook secara manual ke endpoint tertentu dan upaya tersebut berhasil.
Jika endpoint Anda telah dinonaktifkan atau dihapus saat Stripe mencoba ulang, percobaan ulang mendatang dari kejadian tersebut akan dicegah. Namun, jika Anda menonaktifkan, kemudian mengaktifkan kembali endpoint webhook sebelum kami dapat mencoba ulang, Anda masih dapat melihat upaya percobaan ulang mendatang.
Nonaktifkan perilaku
Dalam mode live dan percobaan, Stripe mencoba memberi tahu Anda tentang endpoint yang salah dikonfigurasi melalui email jika endpoint tidak menanggapi dengan kode status HTTP 2xx
selama beberapa hari berturut-turut. Email tersebut juga menyatakan kapan endpoint akan dinonaktifkan secara otomatis.
Pembuatan versi API
Versi API di pengaturan akun Anda saat kejadian berlangsung menentukan versi API sehingga struktur objek Event
dikirim dalam webhook. Misalnya, jika akun Anda diatur ke versi API yang lebih lama, seperti 2015-02-16, dan Anda mengubah versi API untuk permintaan spesifik dengan pembuatan versi, objek Event
yang dihasilkan dan dikirim ke endpoint Anda tetap didasarkan pada versi API 2015-02-16.
Anda tidak dapat mengubah objek Event
setelah pembuatan. Misalnya, jika Anda memperbarui charge, kejadian charge semula tetap tidak berubah. Hal ini berarti pembaruan berikutnya pada versi API akun Anda tidak secara retroaktif mengubah objek Event
yang sudah ada. Pengambilan kejadian yang lebih lama dengan memanggil /v1/events
menggunakan versi API yang lebih baru juga tidak memengaruhi struktur kejadian yang diterima.
Anda dapat mengatur endpoint webhook percobaan ke versi API default atau versi API terbaru. Event
yang dikirim ke URL webhook disusun untuk versi endpoint yang ditentukan. Anda juga dapat membuat endpoint secara terprogram dengan api_version spesifik.
Pengurutan kejadian
Stripe tidak menjamin pengiriman kejadian sesuai dengan urutan pembuatannya. Sebagai contoh, pembuatan langganan dapat menghasilkan kejadian berikut ini:
customer.subscription.created
invoice.created
invoice.paid
charge.created
(jika ada charge)
Endpoint Anda seharusnya tidak melihat pengiriman kejadian ini dalam urutan ini, dan perlu menangani pengiriman dengan semestinya. Anda juga dapat menggunakan API untuk mengambil objek yang tidak ada (misalnya, Anda dapat mengambil invoice, charge, dan objek langganan menggunakan informasi dari invoice.paid
jika kebetulan Anda menerima kejadian ini terlebih dahulu).
Praktik terbaik menggunakan webhook
Tinjau praktik terbaik ini guna memastikan webhook Anda tetap aman dan berfungsi dengan baik bersama integrasi Anda.
Tangani kejadian duplikat
Terkadang endpoint webhook dapat menerima kejadian yang sama lebih dari satu kali. Anda dapat berhati-hati terhadap resi kejadian yang diduplikasi dengan membuat idempoten pemrosesan kejadian Anda. Salah satu cara untuk melakukan hal ini adalah memasukkan kejadian yang telah Anda proses, kemudian tidak memproses kejadian yang sudah dimasukkan.
Hanya dengarkan tipe kejadian yang diperlukan oleh integrasi Anda
Konfigurasikan endpoint webhook untuk hanya menerima tipe kejadian yang diperlukan oleh integrasi Anda. Mendengarkan kejadian ekstra (atau semua kejadian) akan membebani server Anda dan kami tidak merekomendasikannya.
Anda dapat mengubah kejadian yang diterima oleh endpoint webhook di Dashboard atau dengan API.
Tangani kejadian secara asinkron
Konfigurasikan handler Anda untuk memproses kejadian yang masuk dengan antrean asinkron. Anda mungkin mengalami masalah skalabilitas jika memilih untuk memproses kejadian secara sinkron. Setiap lonjakan besar dalam pengiriman webhook (misalnya, selama awal bulan ketika semua langganan diperbarui) mungkin mengalahkan host endpoint Anda.
Antrean asinkron memungkinkan Anda memproses kejadian serentak dengan laju yang dapat didukung oleh sistem Anda.
Bebaskan rute webhook dari proteksi CSRF
Jika menggunakan Rails, Django, atau kerangka web lain, situs Anda dapat memeriksa secara otomatis apakah setiap permintaan POST berisi CSRF token. Ini adalah fitur keamanan penting yang membantu memproteksi Anda dan pengguna Anda dari upaya cross-site request forgery. Namun, langkah pengamanan ini juga dapat mencegah situs Anda memproses kejadian yang sah. Jika demikian, Anda mungkin perlu mengecualikan rute webhook dari proteksi CSRF.
Terima kejadian dengan server HTTPS
Jika Anda menggunakan URL HTTPS untuk endpoint webhook, Stripe akan memvalidasi keamanan sambungan ke server Anda sebelum mengirim data webhook. Agar hal ini berfungsi, server Anda harus dikonfigurasi dengan benar untuk mendukung HTTPS dengan sertifikat server yang valid. Mode live membutuhkan URL HTTPS. Webhook Stripe saat ini tidak mendukung TLS v1.3.
Cabut rahasia penandatanganan endpoint secara berkala
Rahasia yang digunakan untuk memverifikasi bahwa kejadian berasal dari Stripe dapat diubah pada bagian Webhook di Dashboard. Untuk setiap endpoint, klik Cabut rahasia. Anda dapat memilih untuk segera mengakhiri rahasia saat ini atau menunda kedaluwarsanya hingga 24 jam agar Anda memiliki waktu untuk memperbarui kode verifikasi di server Anda. Selama waktu ini, beberapa rahasia aktif untuk endpoint. Stripe membuat satu tanda tangan per rahasia hingga kedaluwarsa. Supaya tetap aman, kami merekomendasikan Anda mencabut rahasia secara berkala, atau bila Anda menduga terjadi peretasan kunci rahasia.
Verifikasikan kejadian dikirim dari Stripe
Stripe mengirim kejadian webhook dari daftar alamat IP yang diatur. Hanya percayai kejadian yang berasal dari alamat IP ini.
Selain itu, verifikasikan tanda tangan webhook untuk mengonfirmasi bahwa kejadian yang diterima telah dikirim dari Stripe. Stripe menandatangani kejadian webhook yang dikirim ke endpoint Anda dengan menyertakan tanda tangan di tajuk Stripe-Signature
setiap kejadian. Hal ini memungkinkan Anda memverifikasi bahwa kejadian tersebut dikirim oleh Stripe, bukan oleh pihak ketiga. Anda dapat memverifikasi tanda tangan menggunakan pustaka resmi, atau verifikasikan secara manual menggunakan solusi Anda sendiri.
Bagian berikut menerangkan cara memverifikasi tanda tangan webhook:
- Ambil rahasia endpoint Anda.
- Verifikasikan tanda tangan.
Mengambil rahasia endpoint Anda
Gunakan bagian Webhook di Dashboard. Pilih endpoint yang rahasianya ingin Anda peroleh, dan temukan rahasianya pada bagian kanan atas halaman.
Stripe membuat kunci rahasia yang unik bagi setiap endpoint. Jika Anda menggunakan endpoint yang sama baik untuk kunci API percobaan maupun live, rahasia untuk setiap kunci berbeda. Selain itu, jika menggunakan beberapa endpoint, Anda harus memperoleh rahasia untuk setiap kunci yang tanda tangannya ingin Anda verifikasi, dan Stripe mulai menandatangani setiap webhook yang dikirim ke endpoint.
Mencegah replay attack
Serangan replay adalah saat penyerang mencegat payload yang valid dan tanda tangannya, kemudian mengirimkannya kembali. Untuk melakukan mitigasi serangan semacam itu, Stripe menyertakan stempel waktu di tajuk Stripe-Signature
. Karena merupakan bagian dari payload yang ditandatangani, stempel waktu ini juga diverifikasi oleh tanda tangan, sehingga penyerang tidak dapat mengubah stempel waktu tanpa membatalkan tanda tangan. Jika tanda tangan valid tetapi stempel waktu terlalu lama, aplikasi Anda dapat menolak payload.
Pustaka kami memiliki toleransi default 5 menit antara stempel waktu dan waktu saat ini. Anda dapat mengubah toleransi ini dengan memberikan parameter tambahan ketika memverifikasi tanda tangan. Gunakan Network Time Protocol (NTP) untuk memastikan jam server Anda akurat dan sinkron dengan waktu pada server Stripe.
Stripe membuat stempel waktu dan tanda tangan setiap kali kami mengirim kejadian ke endpoint Anda. Jika Stripe mencoba ulang kejadian (misalnya endpoint Anda yang sebelumnya dibalas dengan kode status non-2xx
), maka kami akan membuat tanda tangan dan stempel waktu baru untuk upaya pengiriman baru.
Segera mengembalikan tanggapan 2xx
Endpoint Anda harus segera mengembalikan kode status (2xx
) yang berhasil sebelum logika kompleks yang dapat menyebabkan waktu habis. Misalnya, Anda harus mengembalikan tanggapan 200
sebelum memperbarui invoice pelanggan seperti yang dibayarkan dalam sistem akuntansi Anda.