Table of Contents

Purchase Entities

Not intended to be interpreted as Database Model

Orders

Depicts a shopping Cart and contains:

Events

Record events associated to Orders and Payments

Orders

Payments

Payments

Depicts payment transactions executed against specific Order. This is akin to Registration site transaction.

Cart Purchase Logic

Free

User FIODashboard GeeTest FIOChain
@Starter(User)
"{Confirmation}" = User->FIODashboard.FreeFIOAddress() {
  "Solved" = User->GeeTest.Captcha()
  FIODashboard.CreateOrder(amount_usdc=0,amount_fio=0) 
  "Registered" = FIODashboard->FIOChain.Register()
  FIODashboard.UpdateOrder()
}

Paid with FIO

User FIODashboard FIOChain
@Starter(User)
"{Confirmation}" = User->FIODashboard.PayWithFIO() {
  FIODashboard.CreateOrder(amount_usdc=123,amount_fio=456)
  "Registered" = FIODashboard->FIOChain.Register()
  FIODashboard.UpdateOrder()
}

Paid with CoinPayments

Success

User FIODashboard CoinPayments FIOChain
@Starter(User)
"{Confirmation}" = User->FIODashboard.PayWithCoinPayments() {
  FIODashboard.CreateOrder(amount_usdc=123,amount_fio=456)
  User->CoinPayments: Redirect.Pay()
  CoinPayments->FIODashboard: WebHookNotification
  FIODashboard.CreatePayment(ReceivedFromCoinPayments)
  FIODashboard.CreatePayment(SpentOnOrder)
  "Registered" = FIODashboard->FIOChain.Register()
  FIODashboard.UpdateOrder()
}

With Errors

User FIODashboard CoinPayments FIOChain
@Starter(User)
"{Confirmation}" = User->FIODashboard.PayWithCoinPayments() {
  FIODashboard.CreateOrder(amount_usdc=123,amount_fio=456)
  User->CoinPayments: Redirect.Pay()
  CoinPayments->FIODashboard: WebHookNotification
  FIODashboard.CreatePayment(ReceivedFromCoinPayments)
  FIODashboard.CreatePayment(SpentOnOrder)
  "Errors" = FIODashboard->FIOChain.Register()
  FIODashboard.CreatePayment(ReceivedBackDueToErrors)
  FIODashboard.CreatePayment(SpentOnFIOTokens)
  "{Confirmation}" = FIODashboard->FIOChain.SendTokensToUser()
  FIODashboard.UpdateOrder()
}

Paid with Stripe

See https://stripe.com/docs/payments/accept-a-payment?ui=elements

Registering FCHs on private domain when not paid with FIO