Skip to content

Channels & Payment Methods

Updated: 7/26/26, 5:36:13 PM

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.
codeChannelStatusNotes
alipayAlipayImplemented ✅Supports direct + ISV
wechatWeChat PayImplemented ✅Supports direct + ISV
union_payUnionPayReserved
leshua_payLeshuaImplemented ✅
vbill_payVBILL (Suixingfu)Implemented ✅
huifuHuifu (Adapay/Dougong)Implemented ✅Hosts two products ada_pay and dougong_pay (see Product table)
hkrt_payHKRTImplemented ✅
lakala_payLakalaImplemented ✅
fuyou_payFuiouImplemented ✅
sheng_paySheng PayReserved
ysep_payYSEPReserved
quick_payQuick Pay (99Bill)Reserved
sand_paySandImplemented ✅Indirectly via the hm_pay product (see Product table)
yee_payYeepayImplemented ✅Implemented in channel sub-app channel-two, not yet enabled in startup module
ums_payUMS (UnionPay Merchant Services)Implemented ✅
douyinDouyin PayImplemented ✅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

codeProductChannel
alipayAlipay (Direct)alipay
alipay_isvAlipay (ISV / Service Provider)alipay

WeChat Pay

codeProductChannel
wechat_payWeChat Pay (Direct)wechat
wechat_isvWeChat Pay (ISV / Service Provider)wechat

Douyin Pay

codeProductChannel
douyin_payDouyin Paydouyin

UMS (UnionPay Merchant Services)

codeProductChannel
ums_qrcodeUMS (C-scan-B)ums_pay
ums_jsapiUMS (Official Account)ums_pay
ums_appUMS (APP)ums_pay
ums_miniUMS (Mini-program)ums_pay
ums_h5UMS (H5)ums_pay
ums_barcodeUMS (B-scan-C)ums_pay

Third-party Aggregate Channels

codeProductChannelStatus
lakala_payLakalalakala_payImplemented ✅
leshua_payLeshualeshua_payImplemented ✅
ada_payAdapayhuifuImplemented ✅
dougong_payDougonghuifuImplemented ✅
hkrt_payHKRThkrt_payImplemented ✅
vbill_payVBILL (Suixingfu)vbill_payImplemented ✅
fuyou_payFuioufuyou_payImplemented ✅
hm_payHMPay (on Sand's rail)sand_payImplemented ✅
yee_payYeepayyee_payImplemented ✅
sheng_paySheng Paysheng_payReserved
ysep_payYSEPysep_payReserved
quick_payQuick Pay (99Bill)quick_payReserved

One channel, multiple products

Some channels host multiple products — a key design of channel routing:

  • huifuada_pay + dougong_pay — two products share one Huifu channel
  • ums_pay → 6 products — C-scan-B / Official Account / APP / Mini-program / H5 / B-scan-C, each onboarded independently
  • sand_payhm_pay — HMPay runs on Sand's rail
  • alipay / 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_barcode is no longer provided. When the merchant scans the user's barcode, the platform identifies the wallet by the authCode prefix and maps it to wechat_barcode / alipay_barcode / union_barcode, then resolves routing.
Prefix rules: WeChat 10–15, Alipay 25–30, UnionPay 62. Merchants may pass only authCode without method.

Aggregate Pay

codeMethodDescription
aggregate_pay_qrcodeAggregate QR payNative channel scan

WeChat Pay

codeMethod
wechat_cashierWeChat mini-program cashier
wechat_qrWeChat Native QR
wechat_jsapiWeChat JSAPI
wechat_miniWeChat mini-program
wechat_h5WeChat H5
wechat_appWeChat in-app payment
wechat_barcodeWeChat barcode (merchant scan)

Alipay

codeMethod
alipay_qrAlipay scan (QR)
alipay_jsapiAlipay JSAPI (incl. mini-program; official product code JSAPI_PAY)
alipay_pcAlipay PC web pay
alipay_h5Alipay H5
alipay_appAlipay in-app payment
alipay_barcodeAlipay barcode (merchant scan)

UnionPay

codeMethod
union_qrUnionPay scan (QR)
union_jsapiUnionPay JSAPI
union_h5UnionPay H5
union_barcodeUnionPay barcode (merchant scan)

Douyin

codeMethod
douyin_qrDouyin scan pay
douyin_jsapiDouyin JSAPI pay
douyin_h5Douyin H5 pay
douyin_appDouyin in-app pay

Card Schemes (Visa / MasterCard)

codeMethod
visa_card_gatewayVisa gateway pay
visa_card_presentVisa card-present pay
mastercard_card_gatewayMasterCard gateway pay
mastercard_card_presentMasterCard card-present pay

Other

codeMethodDescription
otherOtherNo 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-appsdax-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.

Released under the GNU LGPL v3.0