Sistem anda memegang wangnya. Sistem kami memegang kiraannya.
Platform ialah satu pengiraan dan satu rekod. Ia menerima apa yang berlaku dalam sistem anda, mengira berapa yang terhutang, dan menghantar arahan kembali. Ia tidak pernah duduk dalam laluan wang.
Satu spesifikasi yang diterbitkan, dan dua klien yang ditulis mengikutnya.
Satu dokumen OpenAPI dalam repositori, satu klien TypeScript dan satu klien Dart. Jurutera anda boleh membaca keseluruhan permukaannya sebelum sesiapa menetapkan mesyuarat.
OpenAPI
api/openapi.yaml
Klien TypeScript
sdk/typescript
Klien Dart
sdk/dart
Peristiwa yang boleh anda percaya akan sampai.
Sebelas jenis peristiwa, dibariskan dalam transaksi yang sama dengan perubahan keadaan yang menghasilkannya.
- 01
Satu outbox transaksi, bukan POST hantar-dan-lupa
Peristiwa ditulis dalam transaksi yang menyebabkannya, dan dihantar selepas itu daripada satu baris gilir bersewa. Tiada tempoh apabila sistem anda diberitahu tentang sesuatu yang kemudiannya dipatah balik oleh lejar, dan tiada tempoh apabila lejar telah merekod tetapi tiada siapa diberitahu.internal/outbox
- 02
Bertandatangan, dengan id kunci yang boleh ditukar
Setiap penghantaran membawa tandatangan HMAC-SHA256 dengan id kunci dan cap masa. Penukarannya bertindih: kunci lama kekal sah sementara anda beralih, jadi menukar satu rahsia bukan gangguan perkhidmatan yang perlu anda jadualkan.internal/outbox/sign.go
- 03
Peristiwa penyelesaian bayaran didahulukan
Arahan tuntutan tidak beratur di belakang timbunan pemberitahuan. Kelas penghantaran ialah lorong berasingan, dan penyelesaian bayaran ialah lorong yang membawa arahan berkaitan wang.internal/events
- 04
Id yang pasti, jadi menjalankan semula tiada kesan
Menjalankan semula satu pengendali akan membariskan id peristiwa yang sama, dan outbox membuang pendua. Ini penghantaran sekurang-kurangnya sekali yang benar-benar boleh anda ulang, bukan yang perlu anda berhati-hati dengannya.internal/events · internal/outbox
- 05
Satu pengawal trafik keluar pada URL anda
Destinasinya ditetapkan pengendali, dan itu sahaja sudah menjadikannya laluan SSRF dari segi binaan. Penghantar menyemak URL sebelum permintaan dihantar dan menyekat alamat yang memang anda jangka ia sekat.internal/outbox/ssrf.go
- 06
Undur, letak tepi, dan satu penyelaras
Kegagalan akan berundur secara beransur dan akhirnya diletak tepi, bukannya menghentam destinasi yang sedang tumbang. Satu penyelaras merentas sistem menangkap peristiwa yang benar-benar hilang, bukannya mempercayai baris gilir itu sempurna.internal/outbox · internal/reconciler
Perintah yang berjalan tepat sekali, berkunci pada id rekod anda.
Anda memberitahu platform bahawa satu pembelian berlaku, satu bayaran balik berlaku, seorang ahli telah disahkan. Menghantar semula tidak berkos, kerana kuncinya milik anda.
Setiap perintah masuk tidak berganda bagi setiap ruang kerja dan setiap rujukan, dan jawapannya disimpan sementara. Hantar pembelian yang sama dua kali dan panggilan kedua memulangkan jawapan panggilan pertama — ia tidak mencipta pembelian kedua, dan tidak membayar pusingan komisen kedua atas pembelian pertama.
Kontrak ralatnya dinyatakan jelas, kerana “ulang atau tidak” ialah soalan yang benar-benar perlu dijawab oleh sesuatu integrasi klien. Ralat yang dipulangkan melepaskan resit dan anda boleh mengulang. Penolakan dengan kod 4xx ialah muktamad dan disimpan sementara: perintah itu ditolak atas isinya sendiri, dan mengulanginya akan ditolak lagi.
internal/commands · internal/command
Selesaikan bayaran mengikut cara anda sedia ada.
Platform menempah baris lejar yang tepat lalu mengarah. Yang melaksanakan bayaran itu ialah anda.
Jika anda ada sistem penyelesaian bayaran, ia menerima arahan tuntutan sebagai peristiwa kelas penyelesaian dan memanggil balik untuk menjelaskan atau melaporkan kegagalan. Jika tiada, konsol bayaran menyenaraikan apa yang terhutang, anda membayar daripada dompet anda sendiri, dan anda merekodkan harga yang dilaksanakan serta rujukan transaksi anda sendiri. Bayaran yang direkod tanpa rujukan ditolak — ia tidak akan pernah dapat diselaraskan dengan dompet anda, jadi menerimanya hanya bermakna penyelarasan akan gagal lebih lewat dan lebih jauh.
internal/claims · internal/httpapi/payouts.go
Domain anda sendiri, dibuktikan sebelum disediakan.
Tuntut nama hos, terbitkan rekod TXT yang dijana platform, dan penyediaan berlaku sebaik sahaja rekod itu dapat dilerai.
Susunannya penting dan itulah seluruh intinya. Mengikat satu nama hos — atau menambah satu domain ke senarai dibenarkan pembekal identiti — sebelum bukti kawalan akan membolehkan sesiapa yang benar-benar memiliki nama itu menerima log masuk yang sepatutnya untuk anda. Jadi tiada apa yang disediakan, dan tiada apa yang ditambah ke senarai benarkan log masuk, sehingga rekod itu dapat dilerai. Satu penyedia latar belakang mengambilnya dalam masa seminit.
internal/domains
Ambil satu sandbox dan halakannya ke sistem pementasan.
Percuma pada semua pelan, dengan permukaan API yang sama, peristiwa yang sama dan tandatangan yang sama seperti pengeluaran sebenar.