Siirry sisältöön

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.

Maksuaikomuksen tilakoneOnnistunut polku: created, awaiting_payment, detected, confirming, confirmed. created voi muuttua tilaan canceled. awaiting_payment voi muuttua tilaan expired; expired muuttuu tilaan late_payment, kun siirto saapuu vanhenemisen jälkeen. confirming voi muuttua tilaan underpaid, overpaid tai reorged. confirmed muuttuu tilaan reorged syvän reorgin jälkeen. reorged palaa tilaan confirming, kun siirto sisällytetään uudelleen, tai siirtyy tilaan manual_review, kun se putoaa pois. underpaid ja late_payment siirtyvät tilaan manual_review. manual_review ja overpaid päättyvät tilaan resolved kirjatulla päätöksellä. failed-tilaa käytetään vain vahvistetulla syyllä.hinta lukittuhavaittulohkossa≥ vaaditutkauppias peruuhinta vanheniylimäärävajaareorg ⇄ palautettusyvä reorgsiirto myöhässävaatii päätöksenpäätös + todisteetkauppiaan päätössiirto pudonnutcreatedawaiting_paymentdetectedconfirmingconfirmedcanceledexpiredunderpaidoverpaidreorgedfailedlate_paymentmanual_reviewresolved
käynnissä / lopullinenvaatii päätöksenuudelleenjärjestetty tai epäonnistunutAPI päättää jokaisesta siirtymästä keskitetysti compare-and-set-tarkistuksella maksuaikomuksen versioon, ja siirtymä tallennetaan todisteineen vain lisäyksiä sallivalle aikajanalle. Pienillä näytöillä kaaviota voi vierittää sivuttain.
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
  • 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 confirmed jälkeen, aikomus siirtyy tilaan reorged ja payment.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.

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.