Langkau ke kandungan
Integrasi

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.

Sempadan kustodiPeta sistem yang dibelah oleh satu garis tebal. Di sebelah pengendali: akaun Stripe mereka, akaun NOWPayments mereka, bank mereka, dompet mereka dan backend mereka sendiri. Di sebelah platform: lejar, larian, arahan, tuntutan dan peti keluar. Empat garis melintasi sempadan, membawa satu arahan, satu resit, satu suruhan dan satu peristiwa. Tiada satu pun membawa wang, dan lejar serta larian langsung tidak melintasinya.PengendaliXEXPerintahResitArahanPeristiwaSempadan kustodiAkaun StripeAkaun NOWPaymentsBankDompetBahagian belakang andaLejarLarianPerintahTuntutanPeti keluarTiada garis di sini membawa wang. XEX menggerakkan arahan; pengendali menggerakkan wang.Lejar dan larian tidak melintasi apa-apa
Empat perkara melintasi sempadan ini: satu resit, satu perintah, satu arahan dan satu peristiwa. Tiada satu pun daripadanya wang.
Kontrak teknikal

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

Keseluruhan permukaan awam dalam satu dokumen: endpoint ahli, endpoint pentadbir, API perintah dan katalog peristiwa.

api/openapi.yaml

Klien TypeScript

Untuk perkhidmatan web dan Node anda. Jenisnya diambil daripada dokumen yang sama.

sdk/typescript

Klien Dart

Untuk aplikasi Flutter, kerana program yang menghadap ahli biasanya ada satu, dan menulis sendiri lapisan HTTP kedua ialah tempat kedua-duanya mula terpesong.

sdk/dart

Keluar

Peristiwa yang boleh anda percaya akan sampai.

Sebelas jenis peristiwa, dibariskan dalam transaksi yang sama dengan perubahan keadaan yang menghasilkannya.

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

Masuk

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

Wang keluar

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

Jenama anda

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

Seterusnya

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.