Purchase

Table of Contents

Purchase Entities

Not intended to be interpreted as Database Model

Orders

Depicts a shopping Cart and contains:

  • Timestamp

  • Items

    • item

    • description - e.g. domain name

    • type

      • FIO Domain

      • FIO Address

      • FIO Domain Renewal

      • Bundles

    • Amount in FIO

    • Amount in USDC

    • Executed to blockchain

      • True

      • False

  • Target FIO Public Key

  • Status

    • Created

    • Pending

    • Success

    • Partial Success

    • Purchase Error

    • Declined

  • Payment type

    • FIO Tokens

    • CoinPayments

  • Link to User

  • Links to Payments

Events

Record events associated to Orders and Payments

Orders

  • Order Created

  • Funds credited to Order, e.g. “CoinPayments payment notification received (TX: 3213123131231, Status: Completed)”

  • Funds debited from Order, e.g. “Charge for pawel@hodl”

  • FIO Domain/Address registered on chain, e.g. “Registred pawel@hodl (FIO TX: kjdhakjdhkadhkajsdhkasjdhkasjhdkas)”

  • FIO Domain/Address registration error, e.g. “Failed to register pawel2@hodl (FIO error: "Insufficient funds")”

  • Funds credited to user, e.g. “Crediting FIO to user”

Payments

  • Payment notification received, e.g. “CoinPayments payment notification received (TX: 3213123131231, Status: Pending)”

Payments

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

  • Timestamp

  • Type

    • Coinpayments

    • Credit Card (future)

    • FIO Tokens

  • Currency

  • Amount

  • Amount in USDC

  • External transaction ID

  • Description

Cart Purchase Logic

Free

Success

With Errors

 

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

Registering FCHs on private domain when not paid with FIO

  • If cart contains a FCH on a domain owned by the user check domain status (private/public)

  • If owner wallet is a Ledger Wallet registration of FCH on private domain is not allowed

    • Display error: “At this moment registration of FIO Cryptyo Handles on private domains is not supported. We are working hard to add this capability to the Ledger’s FIO App.”

  • If the FCH being registered is on a private domain (domain registered in the same transaction will be private):

    • Have the user sign a transaction registering that FCH using pay with FIO functionality (PIN code will be required immediately after they click Purchase)

      • Set the max_fee parameter to 125% of fee obtained from get_fee for register_fio_address

    • Once payment is received (e.g. webhook notification from Stripe received):

      • If domain is being registered in the same purchase, register it first

        • If registration fails, automatically fail FCH registrations on that domain

      • Re-check current register_fio_address fee

        • If just obtained register_fio_address is more than the fee signed by user in the step above fail FCH registration

      • Send FIO Tokens to user in the amount of just obtained register_fio_address

        • If transaction fails with Insufficient funds to cover fee:

          • re-check current register_fio_address fee

          • Send users the difference between new fee and number of tokens they received

          • Resubmit the transaction with higher fee