How lightcountry/tokenpay works
TokenPay is a self-hosted blockchain payment service: merchants create payment orders, customers pay to assigned TRON or EVM addresses, background workers reconcile on-chain transfers against pending orders, and completed orders trigger merchant notifications. The README documents dynamic or static addresses, multiple asset families, exchange-rate updates, address collection, and a read-only admin area with manual completion support. Sampled code confirms order creation/checking, chain polling, TRON collection, and admin actions; several service links rely on the README’s documented workflow because their implementations were not sampled.
Main entry points: Program.cs Application Host · TokenOrders.cs Order Records · HomeController.cs Order Endpoints · OrderCheckTRC20Service.cs TRC20 Watcher
Components 20
Web and Orders
- Application Host
src/TokenPay/Program.cs - Order Endpoints
src/TokenPay/Controllers/HomeController.cs - Admin Console
src/TokenPay/Controllers/AdminController.cs
Chain Monitoring
- TRX Watcher
src/TokenPay/BgServices/OrderCheckTRXService.cs - TRC20 Watcher
src/TokenPay/BgServices/OrderCheckTRC20Service.cs - EVM Watcher
src/TokenPay/BgServices/OrderCheckEVMBaseService.cs - ERC20 Watcher
src/TokenPay/BgServices/OrderCheckEVMERC20Service.cs - TRON Client
src/TokenPay/Helper/TronCollectionClient.cs
Operations
- Rate Updater
src/TokenPay/BgServices/UpdateRateService.cs - Order Expiry
src/TokenPay/BgServices/OrderExpiredService.cs - Payment Completion
src/TokenPay/BgServices/OrderPaySuccessService.cs - Merchant Callback
src/TokenPay/BgServices/OrderNotifyService.cs - TRON Collection
src/TokenPay/BgServices/CollectionTRONService.cs
Payment State
- Order Records
src/TokenPay/Domains/TokenOrders.cs - Payment Wallets
src/TokenPay/Domains/Tokens.cs - Rate Records
src/TokenPay/Domains/TokenRate.cs
Other components
- Merchant System
- Customer
- Blockchain APIs
- Merchant Callback URL
Connections 35
- Application Host → Order Endpoints: routes requests
- Application Host → Admin Console: routes requests
- Application Host → Rate Updater: starts worker
- Application Host → TRX Watcher: starts worker
- Application Host → TRC20 Watcher: starts worker
- Application Host → EVM Watcher: starts worker
- Application Host → ERC20 Watcher: starts worker
- Application Host → Order Expiry: starts worker
- Application Host → Payment Completion: starts worker
- Application Host → Merchant Callback: starts worker
- Application Host → TRON Collection: starts worker
- Merchant System → Order Endpoints: creates order
- Customer → Order Endpoints: requests payment
- Order Endpoints → Order Records: creates and reads
- Order Endpoints → Payment Wallets: assigns address
- Order Endpoints → Rate Records: uses rates
- Rate Updater → Rate Records: updates rates
- TRX Watcher → Order Records: reconciles transfers
- TRC20 Watcher → Order Records: reconciles transfers
- EVM Watcher → Order Records: reconciles transfers
- ERC20 Watcher → Order Records: reconciles transfers
- TRX Watcher → Blockchain APIs: polls chain
- TRC20 Watcher → Blockchain APIs: polls chain
- EVM Watcher → Blockchain APIs: polls chain
- ERC20 Watcher → Blockchain APIs: polls chain
- TRC20 Watcher → Payment Completion: signals paid
- ERC20 Watcher → Payment Completion: signals paid
- Payment Completion → Merchant Callback: dispatches completion
- Merchant Callback → Merchant Callback URL: sends callback
- Order Expiry → Order Records: expires orders
- Admin Console → Order Records: reviews and updates
- Admin Console → Merchant Callback: retries callback
- TRON Collection → Payment Wallets: reads addresses
- TRON Collection → TRON Client: builds transfers
- TRON Client → Blockchain APIs: queries and broadcasts