Maksun tilakone
Tilasiirtymistä päättää vain rajapinta, keskitetysti, aikomuksen versioon perustuvalla compare-and-set-operaatiolla, ja jokainen siirtymä kirjataan todisteineen vain lisäyksiä sallivaan aikajanaan. Taustaprosessit eivät koskaan muuta tilaa suoraan; ne lähettävät havaintoja, ja tilakone arvioi ne.
Tilat ja mitä tehdä
Osio nimeltä “Tilat ja mitä tehdä”| Tila | Tarkoittaa | Toimitettavissa | Sinun toimenpiteesi |
|---|---|---|---|
created |
Aikomus on luotu; asiakas ei ole vielä valinnut verkkoa | ei | Näytä ”odottaa maksua” |
awaiting_payment |
Tarjous on lukittu ja yksilöllinen osoite määritetty | ei | Odota |
detected |
Siirto on nähty, mutta se ei ole vielä lohkossa | ei | Odota — se voi vielä kadota |
confirming |
Siirto on lohkossa ja kerää vahvistuksia | ei | Odota |
confirmed |
Odotettu summa on saavuttanut vaaditut vahvistukset | kyllä | Toimita (kun olet todentanut webhookin ja lukenut aikomuksen uudelleen) |
underpaid |
Vahvistettiin tarjottua vähemmän | ei | Päätä: pyydä loppusumma, hyväksy osittain tai palauta varat lohkoketjun ulkopuolella; ratkaise sitten |
overpaid |
Vahvistettiin tarjottua enemmän | kyllä | Toimita; ota yhteyttä asiakkaaseen ylijäämästä; ratkaise sitten |
expired |
Tarjous vanheni ennen kuin maksua nähtiin | ei | Tarjoa uusi kassa, jos asiakas haluaa yhä maksaa |
late_payment |
Siirto saapui vanhenemisen jälkeen | ei | Tarkista — hinta on voinut muuttua; hyväksy, palauta tai hylkää; ratkaise sitten |
reorged |
Maksun sisältänyt lohko korvattiin | ei | Keskeytä tai peru toimitus; odota uutta vahvistusta tai tarkistusta |
manual_review |
Pidätetty dokumentoitua päätöstä varten | ei | Tarkista todisteet; ratkaise |
resolved |
Kirjattu päätös sulki aikomuksen | päätöksen mukaan | Toimi päätöksesi mukaan (resolution.kind) |
failed |
Epäonnistui — vain validoidusta syystä | ei | Lue status_reason |
canceled |
Peruit aikomuksen ennen yhtään siirtoa | ei | Ei mitään |
Tilakoneen takaamat säännöt
Osio nimeltä “Tilakoneen takaamat säännöt”- Hyvitys täsmälleen kerran. Jokaisella lohkoketjusiirrolla on deterministinen identiteetti (verkko + transaktio + outputin tai lokimerkinnän indeksi). Saman havainnon toimittaminen kahdesti ei koskaan hyvitä kahdesti.
- Varan identiteetti, ei symbolit. Siirto lasketaan vain, jos sen verkko, sopimusosoite ja desimaalit vastaavat tarjotun varan rekisterimerkintää. Token, jolla on vain sama symboli, kirjataan ja liputetaan, mutta sitä ei koskaan hyvitetä.
- Ei hiljaisia peruutuksia. Lopullinen tila ei koskaan palaa huomaamatta taaksepäin. Jos ketju järjestäytyy
uudelleen tilan
confirmedjälkeen, aikomus siirtyy tilaanreorgedjapayment.reorged-webhook lähetetään; aikomus vahvistuu uudelleen vain uusien todisteiden perusteella. - Ajallaan oleminen ratkaistaan ensihavainnossa. Siirto, joka havaittiin ensimmäisen kerran ennen tarjouksen vanhenemista, lasketaan maksuun, vaikka se vahvistuisi myöhemmin. Vasta vanhenemisen jälkeen ensimmäisen kerran nähty siirto luokitellaan myöhästyneeksi.
- Vahvistuksen jälkeiset lisämaksut eivät muuta vahvistettua aikomusta; ne luovat täsmäytyspoikkeaman ja
payment.review_required-tapahtuman. - Tarjoukset ovat muuttumattomia. Tarjouksen päivittäminen korvaa vanhan tarjouksen uudella; vanhaa ei koskaan muokata.
Asiakkaalle näytettävät tilanimet
Osio nimeltä “Asiakkaalle näytettävät tilanimet”Isännöity kassa, hallintapaneeli ja @feitpay/react näyttävät jokaisen tilan tekstinä ja symbolina englanniksi,
portugaliksi (Brasilia) ja suomeksi — ei koskaan pelkällä värillä. Jos rakennat oman käyttöliittymän, tee samoin.