Channels & Payment Methods
All codes below are taken from the open-source enum classes and are code-authoritative.
For concept distinctions (pay provider / pay method / payment channel / payment product / capability), see Glossary.
Payment Channel — ChannelEnum
Dictionary: channel. 17 channel enums are defined (in source declaration order).
- Implemented — full strategy implementation (pay / close / sync / refund) exists under the main app
daxpay-channel/; some are backed by independently-deployed channel sub-apps that carry the SDK calls. - Reserved — enum defined only, no implementation yet, extensible on demand.
| code | Channel | Status | Notes |
|---|---|---|---|
alipay | Alipay | Implemented ✅ | Supports direct + ISV |
wechat | WeChat Pay | Implemented ✅ | Supports direct + ISV |
union_pay | UnionPay | Reserved | — |
leshua_pay | Leshua | Implemented ✅ | — |
vbill_pay | VBILL (Suixingfu) | Implemented ✅ | — |
huifu | Huifu (Adapay/Dougong) | Implemented ✅ | Hosts two products ada_pay and dougong_pay (see Product table) |
hkrt_pay | HKRT | Implemented ✅ | — |
lakala_pay | Lakala | Implemented ✅ | — |
fuyou_pay | Fuiou | Implemented ✅ | — |
sheng_pay | Sheng Pay | Reserved | — |
ysep_pay | YSEP | Reserved | — |
quick_pay | Quick Pay (99Bill) | Reserved | — |
sand_pay | Sand | Implemented ✅ | Indirectly via the hm_pay product (see Product table) |
yee_pay | Yeepay | Implemented ✅ | Implemented in channel sub-app channel-two, not yet enabled in startup module |
ums_pay | UMS (UnionPay Merchant Services) | Implemented ✅ | — |
douyin | Douyin Pay | Implemented ✅ | Direct brand, no _pay suffix |
Naming convention
Direct-brand channels usually have no _pay suffix (wechat / alipay / douyin); ISV / aggregate channels may use xxx_pay (except lakala_pay / huifu). See Glossary.
Payment Product — ProductEnum
Dictionary: pay_product. 24 payment products are defined (in source declaration order). Each product binds to a channel (mapped via ProductEnum.getChannel()); the routing anchor is the product, not the channel (see Glossary).
- Implemented — has a corresponding
daxpay-channel-*strategy (pay / close / sync / refund), 20 in total. - Reserved — enum defined only, no implementation yet, 4 in total.
Alipay
| code | Product | Channel |
|---|---|---|
alipay | Alipay (Direct) | alipay |
alipay_isv | Alipay (ISV / Service Provider) | alipay |
WeChat Pay
| code | Product | Channel |
|---|---|---|
wechat_pay | WeChat Pay (Direct) | wechat |
wechat_isv | WeChat Pay (ISV / Service Provider) | wechat |
Douyin Pay
| code | Product | Channel |
|---|---|---|
douyin_pay | Douyin Pay | douyin |
UMS (UnionPay Merchant Services)
| code | Product | Channel |
|---|---|---|
ums_qrcode | UMS (C-scan-B) | ums_pay |
ums_jsapi | UMS (Official Account) | ums_pay |
ums_app | UMS (APP) | ums_pay |
ums_mini | UMS (Mini-program) | ums_pay |
ums_h5 | UMS (H5) | ums_pay |
ums_barcode | UMS (B-scan-C) | ums_pay |
Third-party Aggregate Channels
| code | Product | Channel | Status |
|---|---|---|---|
lakala_pay | Lakala | lakala_pay | Implemented ✅ |
leshua_pay | Leshua | leshua_pay | Implemented ✅ |
ada_pay | Adapay | huifu | Implemented ✅ |
dougong_pay | Dougong | huifu | Implemented ✅ |
hkrt_pay | HKRT | hkrt_pay | Implemented ✅ |
vbill_pay | VBILL (Suixingfu) | vbill_pay | Implemented ✅ |
fuyou_pay | Fuiou | fuyou_pay | Implemented ✅ |
hm_pay | HMPay (on Sand's rail) | sand_pay | Implemented ✅ |
yee_pay | Yeepay | yee_pay | Implemented ✅ |
sheng_pay | Sheng Pay | sheng_pay | Reserved |
ysep_pay | YSEP | ysep_pay | Reserved |
quick_pay | Quick Pay (99Bill) | quick_pay | Reserved |
One channel, multiple products
Some channels host multiple products — a key design of channel routing:
huifu→ada_pay+dougong_pay— two products share one Huifu channelums_pay→ 6 products — C-scan-B / Official Account / APP / Mini-program / H5 / B-scan-C, each onboarded independentlysand_pay→hm_pay— HMPay runs on Sand's railalipay/wechat→ 2 products each — Direct + ISV (Service Provider)
Payment Method — PayMethodEnum
Dictionary: pay_method. The code is globally unique and each method binds to exactly one pay provider (provider).
The aggregated
aggregate_pay_barcodeis no longer provided. When the merchant scans the user's barcode, the platform identifies the wallet by theauthCodeprefix and maps it towechat_barcode/alipay_barcode/union_barcode, then resolves routing.
Prefix rules: WeChat10–15, Alipay25–30, UnionPay62. Merchants may pass onlyauthCodewithoutmethod.
Aggregate Pay
| code | Method | Description |
|---|---|---|
aggregate_pay_qrcode | Aggregate QR pay | Native channel scan |
WeChat Pay
| code | Method |
|---|---|
wechat_cashier | WeChat mini-program cashier |
wechat_qr | WeChat Native QR |
wechat_jsapi | WeChat JSAPI |
wechat_mini | WeChat mini-program |
wechat_h5 | WeChat H5 |
wechat_app | WeChat in-app payment |
wechat_barcode | WeChat barcode (merchant scan) |
Alipay
| code | Method |
|---|---|
alipay_qr | Alipay scan (QR) |
alipay_jsapi | Alipay JSAPI (incl. mini-program; official product code JSAPI_PAY) |
alipay_pc | Alipay PC web pay |
alipay_h5 | Alipay H5 |
alipay_app | Alipay in-app payment |
alipay_barcode | Alipay barcode (merchant scan) |
UnionPay
| code | Method |
|---|---|
union_qr | UnionPay scan (QR) |
union_jsapi | UnionPay JSAPI |
union_h5 | UnionPay H5 |
union_barcode | UnionPay barcode (merchant scan) |
Douyin
| code | Method |
|---|---|
douyin_qr | Douyin scan pay |
douyin_jsapi | Douyin JSAPI pay |
douyin_h5 | Douyin H5 pay |
douyin_app | Douyin in-app pay |
Card Schemes (Visa / MasterCard)
| code | Method |
|---|---|
visa_card_gateway | Visa gateway pay |
visa_card_present | Visa card-present pay |
mastercard_card_gateway | MasterCard gateway pay |
mastercard_card_present | MasterCard card-present pay |
Other
| code | Method | Description |
|---|---|---|
other | Other | No fixed provider, provider is null |
Channel Implementation Architecture
The main app calls independently-deployed channel sub-apps over HTTP to isolate third-party SDK dependencies and allow independent upgrades and elastic scaling.
- Channel strategy layer — unified under the main app's
daxpay-channel/(pay / close / sync / refund orchestration, no SDK). - Channel sub-apps —
dax-pay-channel-one(Alipay / WeChat / Douyin / UMS, port 20100),dax-pay-channel-two(Lakala / HKRT / Dougong / Leshua / VBILL / HMPay / Adapay / Fuiou, port 20200).
To add a new channel, create an independent sub-app following the dax-pay-channel-one / dax-pay-channel-two pattern.