Skip to content

Applications ​

Updated: 10/15/26, 5:44:21 PM

DaxPay is built from sub-projects in multiple independent git repositories working together: the main application calls the independent channel sub-services over HTTP, and the various front ends connect to the main application through RESTful APIs. Each application is introduced below.

Main Application dax-pay-open ​

The payment core backend, hosting the payment business, channel routing orchestration, risk control, and system administration.

ModuleResponsibility
daxpay-platformBase layer — common contracts / technical infrastructure / platform capabilities / business services
daxpay-paymentPayment business — domain core / operator and merchant portals / unified acquiring / two mobile apps
daxpay-channelChannel business — orchestration layer for 20+ channel capabilities (routing / strategies / config CRUD, no SDKs)
daxpay-pluginPayment plugins — EasyPay protocol, risk-control blacklist
daxpay-demoFeature demo module
daxpay-startStartup entry

Tech stack: Java 25 · Spring Boot 4.1.1 · PostgreSQL 14+ · Redis 7+ · Apache Artemis · MyBatis-Plus 3.5 · Sa-Token 1.46 · SpringDoc 3.0 · MapStruct 1.6 · Hutool 5.8 · Caffeine 3.2 · BouncyCastle 1.84

Port: 9999

Startup:

bash
cd dax-pay-open/daxpay-start
mvnd spring-boot:run -Dspring-boot.run.profiles=dev

Channel Adapter Sub-application dax-pay-channel-one ​

An independently deployed microservice integrating direct channels such as Alipay, WeChat, Douyin, UMS, and UnionPay (QuickPass). It hosts the direct calls into third-party SDKs.

ModuleDescription
daxpay-platformBase layer — core + common (util/json/i18n) + service-system
daxpay-channel-implChannel implementations — alipay / wechat / douyin / ums / union, five sub-modules
daxpay-channel-startStartup entry

SDK versions: alipay-sdk 4.40.272.ALL · weixin-java-pay (wxjava) 4.8.4.B · douyinpay 1.0.6 · UMS via in-house HTTP integration · UnionPay (QuickPass) via in-house HTTP + RSA2 certificate signing

Communication with the main application — the main application calls it through declarative @HttpExchange clients, with AES-GCM encryption on the link and unified {code, msg, data} responses

Port: 20100

Channel Adapter Sub-application dax-pay-channel-two ​

An independently deployed microservice integrating aggregate channels. Architecturally identical to channel-one; the only difference is the set of channels it hosts.

ModuleDescription
daxpay-platformBase layer (isomorphic with channel-one)
daxpay-channel-implChannel implementations — nine aggregate channel sub-modules (see the integrated channels below)
daxpay-channel-startStartup entry

Integrated channels — Lakala, Haikerongtong, Dougong (Huifu), Leshua, Suixingfu, HemaPay (Shande), Adapay, Fuyou, YeePay (all nine channels implemented and enabled)

SDK versions — each aggregate channel's own SDK, plus yeepay 4.4.15

Port: 20200

Channel Adapter Sub-application dax-pay-channel-three ​

An independently deployed microservice integrating the international payment channel. Architecturally identical to channel-one; the only difference is the set of channels it hosts.

ModuleDescription
daxpay-platformBase layer (isomorphic with channel-one)
daxpay-channel-implChannel implementations — the stripe sub-module
daxpay-channel-startStartup entry

SDK versions — stripe-java 29.2.0

Communication with the main application — same as channel-one: an AES-GCM encrypted link, with the main application routing calls through daxpay.channel.three

Port: 20300

Go Experimental Copies ​

dax-pay-channel-one-go and dax-pay-channel-two-go are Go (Gin) implementations of channel-one / channel-two respectively. They are experimental copies: experimental in nature, outside the mainline support scope and the main documentation flow. Use the Java versions for production deployment.

  • Their ports fully overlap the Java versions (20100 / 20200) — pick one, never start both at the same time
  • They do not depend on third-party SDKs; every channel is integrated through in-house HTTP signing. See each repository's README for the implemented channels
  • Build with go build ./cmd/server/; configuration is read from configs/config.yaml

Web Admin Front End dax-pay-ui ​

The admin front end: a monorepo built on top of Vue Vben Admin 5 that compiles from a single source into two independent applications — the operator portal and the merchant portal.

AppRoledev portVITE_APP_CLIENT_CODE
apps/daxpay-adminOperator (admin) portal — used by platform operators6999admin
apps/daxpay-merchantMerchant portal — merchant self-service7999merchant

Both apps share the framework packages under packages/ (@core / effects / locales / stores / utils, etc.) and the packages/business/ui-biz business component library; portal-level isolation is achieved through menu client_code and permission codes.

dax-pay-ui/
├── apps/
│   ├── daxpay-admin/         # Operator portal app
│   └── daxpay-merchant/      # Merchant portal app
├── packages/                 # Core packages (@core / effects / business / locales ...)
├── internal/                 # Internal tooling (lint / tsconfig / vite-config)
└── scripts/                  # Scripts (deploy / turbo-run / vsh)

Tech stack — Vue 3.5 · Vite 8 · TypeScript 5.9 · antdv-next · vxe-table 4 · Vben Admin 5 · TailwindCSS 4 · vue-i18n 11 · pnpm 10 + Turbo 2.9

Internationalization — 10 locales (Chinese, Japanese, Korean + four ASEAN languages + Traditional Chinese for Taiwan/Hong Kong), with framework-layer and app-layer messages merged at load time

Startup:

bash
pnpm run dev:admin       # Operator portal, port 6999
pnpm run dev:merchant    # Merchant portal, port 7999

Mobile H5 Gateway dax-pay-h5 ​

The mobile gateway application: a single app carries two fully independent page sets for PC and mobile, dispatched by device detection at the entry.

  • Device detection — index.html writes window.__DEVICE__ ('pc' | 'mobile') before Vue mounts, with zero flicker
  • Directory separation — mobile code lives in src/mobile/, PC code in src/pc/, shared code in src/shared/
  • Mobile adaptation — postcss-mobile-forever for vw adaptation; PC source is excluded from vw conversion and uses native px + media queries
  • Three route buckets — real routes / opposite-end-only stubs / catch-all 404; a single URL space resolved independently by each end

Tech stack — Vue 3.5 · Vite 8 · Vue Router 5 · Vant 4 (mobile) · UnoCSS 66 · Pinia 3 · vue-i18n 11

Port (dev): 9500

Internationalization — 10 locales

Startup: pnpm run dev

Operator Cross-Platform App dax-pay-app-admin ​

A management-oriented uni-app application for platform operators, built on top of unibest 4 (uni-app + Vue 3): develop once, compile to multiple platforms. It corresponds to the Web operator portal (apps/daxpay-admin) and calls the /app-admin/ APIs to manage merchants, stores, users, apps, and other resources.

AspectImplementation
UI library@wot-ui/ui (wot-ui v2, component prefix wd-*)
Listsz-paging
StylingUnoCSS (carbon icon set)
Internationalizationvue-i18n

Compile targets — H5 / WeChat mini-program / Alipay mini-program / Douyin mini-program / App (Android / iOS)

Page structure — a three-item tabBar (Workbench / Apps / Me) + merchant management subpackage (pages-merchant) + payment configuration subpackage (pages-payment) + system settings subpackage (pages-system)

Internationalization — 10 locales on all ends; mini-program builds include only Chinese and English via conditional compilation (Traditional Chinese / Japanese / Korean / ASEAN languages are bundled only for H5 and App)

Startup and build: see Cross-Platform Apps.

Merchant Cross-Platform App dax-pay-app-merchant ​

A management-oriented uni-app application for merchant self-service, a counterpart to dax-pay-app-admin (operator end) on the same stack (unibest 4 + wot-ui v2). Merchants use it to manage their own orders, stores, users, apps, and payment configuration.

AspectImplementation
UI library@wot-ui/ui (wot-ui v2, component prefix wd-*)
Listsz-paging
StylingUnoCSS (carbon icon set)
Internationalizationvue-i18n

Compile targets — H5 / WeChat mini-program / Alipay mini-program / Douyin mini-program / App (Android / iOS)

Page structure — a three-item tabBar (Workbench / Apps / Me) + authentication subpackage + agreement pages (privacy policy / user agreement)

Startup and build: see Cross-Platform Apps.

Cashier Mini-Program dax-pay-mini-cashier ​

A cashier mini-program for end consumers. The stack is the same as dax-pay-app-admin, but it is positioned as a minimal cashier.

AspectImplementation
Compile targetsWeChat mini-program / Alipay mini-program / Douyin mini-program (no App / H5)
PagesHome / authentication / pay / result (4 pages, all with custom navigation)
SubpackagesNone (minimal)
InternationalizationChinese and English only

Differences from dax-pay-app-admin — the latter is a full-featured operator management app (30+ pages); the former is a minimal cashier for end consumers, with no tabBar, no subpackages, and a trimmed dependency set.

Startup: pnpm run dev:mp-weixin (WeChat mini-program by default)