Skip to content

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