# waguriagentic/shoppepay-api-gateway architecture

> Architecture diagram of the GitHub repository waguriagentic/shoppepay-api-gateway, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/waguriagentic/shoppepay-api-gateway
- Repository: https://github.com/waguriagentic/shoppepay-api-gateway

## Overview

ShopeePay Partner API Gateway menerima permintaan toko untuk membuat QRIS dan memeriksa pembayaran, lalu mengambil data transaksi dari ShopeePay saat pemeriksaan diminta. README juga mendokumentasikan validasi token berkala, riwayat bulanan, resolusi issuer, deduplikasi, dan log operasional. Implementasi yang tersedia hanya berupa server.js yang ter-obfuscate; alur selain yang dijelaskan README ditampilkan sebagai kemampuan terdokumentasi, bukan hasil inspeksi rinci kode.

Main entry points: [`server.js`](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js) (API gateway)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Gateway API"]
  node_gateway["API gateway<br/>[server.js]"]
  node_auth["API-key auth<br/>[server.js]"]
end

subgraph group_payments["Pembayaran"]
  node_qris["QRIS injector<br/>[server.js]"]
  node_checker["Payment checker<br/>[server.js]"]
end

subgraph group_integrations["Integrasi eksternal"]
  node_txnlist["Transaction lookup<br/>[server.js]"]
  node_txndetail["Transaction detail<br/>[server.js]"]
  node_issuer["Issuer resolution<br/>[server.js]"]
  node_history["Monthly history<br/>[server.js]"]
  node_validator["Token validator<br/>[server.js]"]
end

subgraph group_runtime["State runtime"]
  node_dedupe[("Claim deduplication<br/>[server.js]")]
  node_logs[("Circular logs<br/>[server.js]")]
end

node_store(("Toko / klien"))
node_shopee["ShopeePay Partner"]
node_telegram["Telegram Bot"]
node_customer(("Pembayar"))

node_store -->|"requests QRIS"| node_gateway
node_store -->|"checks payment"| node_gateway
node_gateway -->|"checks key"| node_auth
node_auth -->|"allows request"| node_gateway
node_gateway -->|"creates QRIS"| node_qris
node_qris -->|"returns QR data"| node_gateway
node_gateway -->|"checks payment"| node_checker
node_checker -->|"fetches transactions"| node_txnlist
node_txnlist -->|"queries list"| node_shopee
node_checker -->|"fetches match detail"| node_txndetail
node_txndetail -->|"queries detail"| node_shopee
node_checker -->|"checks and records claims"| node_dedupe
node_txndetail -->|"resolves payment source"| node_issuer
node_gateway -->|"serves history request"| node_history
node_history -->|"fetches history"| node_shopee
node_validator -->|"tests token"| node_shopee
node_validator -.->|"sends failure alert"| node_telegram
node_gateway -->|"records activity"| node_logs
node_gateway -->|"serves log endpoint"| node_logs
node_gateway -->|"returns result"| node_store
node_customer -->|"pays by QR"| node_shopee

click node_gateway "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_auth "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_qris "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_checker "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_txnlist "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_txndetail "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_issuer "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_history "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_validator "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_dedupe "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"
click node_logs "https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gateway,node_auth toneBlue
class node_qris,node_checker toneAmber
class node_txnlist,node_txndetail,node_issuer,node_history,node_validator toneMint
class node_dedupe,node_logs toneRose
class node_store,node_shopee,node_telegram,node_customer toneIndigo
```

## Components

### Gateway API

- [API gateway](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [API-key auth](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`

### Pembayaran

- [QRIS injector](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [Payment checker](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`

### Integrasi eksternal

- [Transaction lookup](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [Transaction detail](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [Issuer resolution](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [Monthly history](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [Token validator](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`

### State runtime

- [Claim deduplication](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`
- [Circular logs](https://github.com/waguriagentic/shoppepay-api-gateway/blob/main/server.js): `server.js`

### Other components

- **Toko / klien**
- **ShopeePay Partner**
- **Telegram Bot**
- **Pembayar**

## Connections

- Toko / klien → API gateway: requests QRIS
- Toko / klien → API gateway: checks payment
- API gateway → API-key auth: checks key
- API-key auth → API gateway: allows request
- API gateway → QRIS injector: creates QRIS
- QRIS injector → API gateway: returns QR data
- API gateway → Payment checker: checks payment
- Payment checker → Transaction lookup: fetches transactions
- Transaction lookup → ShopeePay Partner: queries list
- Payment checker → Transaction detail: fetches match detail
- Transaction detail → ShopeePay Partner: queries detail
- Payment checker → Claim deduplication: checks and records claims
- Transaction detail → Issuer resolution: resolves payment source
- API gateway → Monthly history: serves history request
- Monthly history → ShopeePay Partner: fetches history
- Token validator → ShopeePay Partner: tests token
- Token validator → Telegram Bot: sends failure alert
- API gateway → Circular logs: records activity
- API gateway → Circular logs: serves log endpoint
- API gateway → Toko / klien: returns result
- Pembayar → ShopeePay Partner: pays by QR
