Skip to content

Features ​

Updated: 10/15/26, 12:07:28 PM

These are the core feature highlights implemented in the DaxPay open-source edition, covering payment capabilities, unified channel encapsulation, pay methods, security mechanisms, and internationalization with time zones.

Core Payment Capabilities ​

DaxPay covers the full lifecycle of payment transactions:

  • Pay — unified order creation, supporting mainstream pay providers and multiple pay methods
  • Refund — full / partial refunds, with refund sync and discrepancy handling
  • Transfer — merchant transfer disbursement over the Alipay / WeChat / Douyin direct channels, transfer scenes and initiating-app configuration, and WeChat confirm-payment links
  • Allocation — allocation orders; open APIs to initiate / query / sync allocations; allocation receiver binding management
  • Query — order status, transaction details, and channel flow queries
  • Callback — asynchronous payment result notification to business systems, no polling required
  • Sync — actively query order status from the channel to compensate for lost callbacks
  • Close — order timeout closing, with gateway-timeout fallback
  • Merchant notify — merchant callback message dispatching, retry strategy, and notify task scheduling
  • EasyPay protocol compatibility — a built-in EasyPay universal merchant access module compatible with mainstream EasyPay protocols; V1 (MD5) kept for legacy compatibility, V2 (RSA) recommended — small merchants and individual developers can integrate quickly

Channel Architecture: Orchestration Separated from Integration ​

DaxPay's channel system uses a layered architecture of main-app orchestration + sub-app integration — the core design that distinguishes it from a monolithic payment system:

LayerResponsibilityImplementation
Orchestration layer (main app daxpay-channel)Channel declaration, channel routing, payment strategy orchestration, configuration data CRUD, callback assemblyContains no third-party SDKs
Integration layer (sub-apps channel-one / channel-two / channel-three)Direct third-party SDK calls, signing/verification, channel-specific protocol adaptationIndependently deployed

The main app and the sub-apps communicate over internal HTTP interfaces, with AES-GCM transport encryption on the whole path and a unified response format. Benefits of this design:

  • SDK dependency isolation — third-party SDKs never pollute the main app, avoiding version conflicts
  • Independent upgrades — sub-apps can release per channel without affecting the main payment path
  • Elastic scaling — high-volume channels (Alipay, WeChat) can scale out independently with multiple instances

Channel Count and Distribution ​

DaxPay ships 20+ payment channel capabilities across three categories — direct, aggregate, and international; the exact availability follows the corresponding extension packages, delivery versions, and license terms:

  • Direct channels (channel-one) — Alipay, WeChat Pay, Douyin Pay, UMS, UnionPay (Cloud QuickPass)
  • Aggregate channels (channel-two) — Lakala, HKRT, Dougong (Huifu), Leshua, VBILL (Suixingfu), HMPay (Sand), Adapay, Fuiou, Yeepay, etc., provided per version through channel extension packages
  • International channels (channel-three) — Stripe and other international channels, provided per version through the corresponding channel extension packages

Pay Methods ​

Covering mainstream payment scenarios:

  • Aggregate pay — one QR for multiple wallets, automatically routed to the user's wallet
  • QR code payment — user-scan and merchant-scan modes
  • JSAPI payment — invoked inside WeChat / Alipay / Douyin official accounts and mini-programs
  • H5 payment — invokes the wallet from a mobile browser
  • APP payment — invoked through native SDKs
  • Mini-program payment — WeChat / Alipay / Douyin
  • Barcode payment — the merchant scans the user's dynamic payment code
  • Douyin payment — QR / JSAPI / H5 / APP
  • International card payment — Visa / MasterCard and other international cards, in two modes: Stripe Checkout and Stripe.js Elements

Multi-Merchant and Multi-Client Management ​

  • Dual-portal architecture — an admin portal (for platform operators) and a merchant portal (for merchant self-service): two independent portals compiled from the same codebase, with menus and data fully isolated
  • Multi-app management — a single merchant can configure multiple payment apps, each with independent credentials and callback URLs
  • Row-level data isolation — each merchant's data is isolated automatically by merchant number and is invisible to other merchants

Channel Routing and Risk Control ​

  • Dynamic routing — matches the final channel dynamically by conditions such as pay product, pay method, and merchant app
  • Product strategy — automatically matches the corresponding payment flow per pay method (QR / JSAPI, etc.)
  • Environment consistency check — the routing layer double-checks that the merchant environment matches the product's current environment (sandbox/production)
  • Basic risk checks — daxpay-plugin-risk provides IP blacklists, overseas IP blocking, province/city region lists, pre-payment risk checks, and hit records; user-identity blacklists, store geofencing, and post-payment backfill are enhanced capabilities outside the open-source defaults

Security Mechanisms ​

DaxPay builds its defenses across the API, transport, storage, and authentication layers:

  • Tamper-proof signing — API requests and responses support RSA signatures
  • Field-level encryption — sensitive fields encrypted at rest with AES-256-GCM
  • Transport encryption — AES-GCM encryption on every hop between the main app and the channel sub-apps
  • Authentication and authorization — role-based access control built on Sa-Token and RBAC, with menus and data isolated by role
  • Two-factor authentication — TOTP one-time passwords + backup codes, compatible with Google Authenticator
  • Social login — OAuth login with 11 third-party platforms: WeCom, DingTalk, Feishu, Alipay, WeChat Official Account (QR code on PC / in-app authorization on WeChat), WeChat Open Platform, GitHub, and more
  • Sandbox / production isolation — deployment switches separate the environments completely; on startup, a production deployment automatically resets any leftover sandbox configuration back to production, so test data can never leak in

Internationalization and Time Zones ​

  • 10 languages — Simplified Chinese, Traditional Chinese (Taiwan / Hong Kong), English, Japanese, and Korean, plus Indonesian, Vietnamese, Thai, and Malay; switchable at any time in both the admin console and the merchant portal
  • Unified time zones — all transaction times are stored in Coordinated Universal Time (UTC); pages convert them to the viewer's time zone automatically, so operators and merchants in different countries always see their own local time
  • Translation fallback — texts temporarily missing in a language automatically fall back to Simplified Chinese — no blank pages or raw translation keys

Full Client Coverage ​

ClientAppTech Stack
Admin Webdaxpay-adminVue 3.5 · Vite 8 · antdv-next · Vben Admin 5
Merchant Webdaxpay-merchantSame as above, compiled from the same source
Mobile H5dax-pay-h5Vue 3.5 · Vant 4 · UnoCSS (PC + mobile dual-endpoint)
Admin cross-platform appdax-pay-app-adminuni-app · wot-ui v2 (H5 / WeChat / Alipay / Douyin / App)
Merchant cross-platform appdax-pay-app-merchantuni-app · wot-ui v2 (H5 / WeChat / Alipay / Douyin / App)
Cashier mini-programdax-pay-mini-cashieruni-app · wot-ui v2 (WeChat / Alipay / Douyin)

Observability and Operations ​

  • Tracing — OpenTelemetry integration: all logs of one request carry the same trace ID, so cross-service troubleshooting chains up in one click
  • Audit logs — critical operations are fully recorded, with operator, time, IP, and IP geolocation
  • In-app notifications — announcements, personal messages, and real-time SSE push
  • One-click deployment — a single-binary operations panel guides you through installation, build, deployment, and daily operations
  • Graceful shutdown — on release or restart, in-flight requests are drained before the service goes down, never interrupting ongoing transactions