System
System Architecture & Deployments
graph TB
subgraph "AWS Amplify Hosting"
A[merchants.myanmyanpay.com<br/>Merchant Portal UI<br/>Ionic+Angular]
B[www.myanmyanpay.com<br/>Landing Page<br/>HTML]
C[docs.myanmyanpay.com<br/>Documentation<br/>Markup]
end
subgraph "AWS Beanstalk - Auto Scaling Group"
subgraph "Payment Server Cluster"
D1[ezapi Instance 1]
D2[ezapi Instance 2]
D3[ezapi Instance N]
end
D1 --> ELB1[Application Load Balancer]
D2 --> ELB1
D3 --> ELB1
ELB1 --> D4[ezapi.myanmyanpay.com<br/>MMQR Payment Server]
end
subgraph "Single EC2 Instance"
E[ez2api.myanmyanpay.com<br/>Merchant Portal API<br/>Single Instance]
end
subgraph "AYA Bank MMQR"
F1[AYA Bank API<br/>MMQR Payment Request]
F2[AYA Bank API<br/>Payment Callback]
end
subgraph "Database & Cache"
H[MongoDB Atlas<br/>3-Node Cluster]
I[Redis Cache<br/>Session & Rate Limiting]
end
%% Merchant Portal UI ONLY talks to Merchant Portal API
A --> E[All API Calls]
%% Landing page redirects to Merchant Portal UI
B --> A[Redirect to Console]
%% Payment Server handles MMQR payment requests to AYA Bank
D4 --> F1[MMQR Payment Request]
%% AYA Bank callbacks to Payment Server
F2 --> D4[Payment Callback]
%% Merchant systems integrate via SDK/API
G[Merchant Systems<br/>MMQR Tools Integration] --> D4[API Requests]
%% Merchant Portal API handles ALL queries
E --> H[Database Queries<br/>MMQR Reports<br/>Analytics]
E --> I[Cache Operations]
%% Payment Server writes transaction data
D4 --> H[Store MMQR Transactions<br/>Payment Logs]
D4 --> I[Session Storage]
Dataflow
sequenceDiagram
participant Customer as Customer
participant Merchant as Merchant System
participant PS as Payment Server
participant AYA as AYA Bank API
participant DB as MongoDB
Note over Customer,DB: MMQR Payment Request Flow
Merchant->>PS: Generate AYA Bank MMQR payment
PS->>DB: Create pending MMQR transaction
PS->>AYA: Request MMQR code generation
AYA-->>PS: Return MMQR data/URL
PS-->>Merchant: Return MMQR code
Merchant->>Customer: Display MMQR for payment
Customer->>AYA: Scan MMQR with AYA app
Note over Customer,DB: AYA Bank Callback Flow
AYA->>PS: Payment status callback
PS->>PS: Validate AYA Bank signature
PS->>DB: Update transaction status
alt Payment Success
PS->>DB: Mark as completed
PS->>Merchant: Send success notification
else Payment Failed/Expired
PS->>DB: Mark as failed
PS->>Merchant: Send failure notification
end
PS-->>AYA: Callback acknowledgment