Skip to content

order · 订单/支付

ts
import { OrderDomain } from '@hfyidu/api/order'

订单/支付领域负责商品列表拉取、权益商品拉取、下单、订单查询、微信小程序虚拟支付及其支付成功回调,服务前缀 order

用例总览

用例说明请求方式
OrderDomain.cases.products获取商品列表GET order/products
OrderDomain.cases.benefits获取权益(免广告)商品列表GET order/equity
OrderDomain.cases.query查询订单支付状态GET order/query
OrderDomain.cases.wxVirtualPay微信小程序虚拟支付下单POST order/VirtualPayOrder
OrderDomain.cases.wxVirtualPaySuccess微信小程序虚拟支付成功回调POST order/VirtualPayOrderSuccess
OrderDomain.cases.create创建订单(通用下单)POST order

productsbenefits 两个用例继承自 ModuleUseCase(区别于 query/wxVirtualPay/wxVirtualPaySuccess/create 所继承的 BaseUseCase),但两者都是一次性请求,调用方式与响应结构({ data, updatedAt })与普通 BaseUseCase 用例完全一致,不涉及分页状态,本领域下没有继承 PaginatorUseCase 的用例。

products · 获取商品列表

ts
const { data } = await OrderDomain.cases.products.run({
  page_type: PayPageType.VIDEO.value,
})

console.log(data) // OrderProductsDto[]

请求参数 OrderProductsQueryParams

字段类型必填说明
page_typePayPageType['value'](即 number当前发起下单的页面场景
class_codestring商品分类编码,用于筛选指定分类下的商品
length_categoryNovelType['value'](即 number小说篇幅分类,仅在 page_type 为阅读页场景时生效

响应 OrderProductsDto[]

OrderProductsDto

字段类型后台原始字段说明
idnumber | stringid商品 ID,必填
productTypeProductTypeproduct_type商品大类,默认 ProductType.coins
typeProductTypeproduct_typeproductType 同源,默认 ProductType.coins
classstringclass_code商品细分类编码(字符串形式),默认 ''
productClassProductClassclass_code商品细分类,默认 ProductClass.COINS
vipDaysnumberget_member_days兑换的会员天数,默认 0
coinsnumberget_coin兑换的币数量,默认 0
couponsnumbergive_num额外赠送的券数量,默认 0
namestringproduct_name商品名称,默认 ''
describestringproduct_describe商品描述,默认 ''
pricestringprice商品价格(字符串形式),默认 '0.00'
pivotOrderProductsStyleDto商品展示样式配置,默认新建一个 OrderProductsStyleDto 实例
wxGoodsKeystringvirtually_good_id微信虚拟支付商品 Key,默认 ''
wxGoodsIdnumbervirtually_id微信虚拟支付商品 ID,默认 0
wxGoodsIconstringvirtually_item_url微信虚拟支付商品图标地址,默认 ''
templateIdnumbertemplate_id模板 ID,默认 0
templateNumbernumbertemplate_number模板编号,默认 0
__tagInfoOrderProductsTagInfoDto角标标签信息,默认新建一个 OrderProductsTagInfoDto 实例
customStyleRecord<string, any>非后台字段,由实例方法 convert() 在本地计算填充,用于自定义展示样式

OrderProductsDto 还额外提供若干便捷计算属性(非后台原始字段):bgStyle/textStyle(读取 pivot.style 的展示样式)、tagInfo(角标信息,优先取 pivot.style.tagInfo,否则回退 __tagInfo.tagInfo)、isVip/groupKey/obtain/give/desc(基于 productType 派生的业务文案)、mpLayout(组装出小程序展示所需的 MpLayoutProps 结构)。

OrderProductsStyleDto

字段类型说明
styleOrderProductsStylePivotDto具体样式字段,默认新建一个 OrderProductsStylePivotDto 实例

OrderProductsStylePivotDto

字段类型后台原始字段说明
tagTextstring | nulltag角标文案,默认 null
tagBgColorstring | nulltag_bg_color角标背景色,默认 null
tagTextColorstring | nulltag_color角标文字颜色,默认 null
tagIconstring | nulltag_icon角标图标地址,默认 null
productBgColorstring | nullproduct_bg_color商品卡片背景色,默认 null
productBgImgstring | nullproduct_bg_img商品卡片背景图,默认 null
productPriceColorstring | nullproduct_price_color商品价格文字颜色,默认 null

提供计算属性 bgStyle/textStyle(拼接内联样式字符串)与 tagInfo(组装为 OrderProductTagProps 结构,仅当 tagText 存在时返回,否则为 null)。

OrderProductsTagInfoDto

字段类型后台原始字段说明
bgColorstring | nullbg_color角标背景色,默认 null
colorstring | nullcolor角标文字颜色,默认 null
iconstring | nullicon角标图标地址,默认 null
tagstring | nulltag角标文案,默认 null
sortnumbersort排序值,默认 0

提供计算属性 tagInfo:仅当 tag 存在时组装为 OrderProductTagProps 结构,否则为 null

benefits · 获取权益商品列表

ts
const { data } = await OrderDomain.cases.benefits.run({
  page_type: PayPageType.READER.value,
})

console.log(data) // OrderBenefitsDto[]

请求参数 OrderBenefitsQueryParams

字段类型必填说明
page_typePayPageType['value'](即 number当前发起下单的页面场景

响应 OrderBenefitsDto[]

OrderBenefitsDto

字段类型后台原始字段说明
idnumber | stringid权益商品 ID,必填
typenumberproduct_type商品类型原始数值(对应 ProductType 枚举 value,未做类型转换)
codestringclass_code权益分类编码,默认 ''
daysnumbernum权益使用天数,默认 0
pricestringprice商品价格(字符串形式),默认 '0.00'
namestringproduct_name商品名称,默认 ''
describestringproduct_describe商品描述,默认 ''
sortnumbersort排序值,默认 0
createdAtstringcreated_at创建时间,默认 '2099-12-31'
pivotOrderProductsStyleDto商品展示样式配置,默认新建一个 OrderProductsStyleDto 实例(与 products 用例共用同一 DTO)
__tagInfoOrderProductsTagInfoDto角标标签信息,默认新建一个 OrderProductsTagInfoDto 实例(与 products 用例共用同一 DTO)

同样提供便捷计算属性:bgStyle/textStyle/tagInfo(含义与 OrderProductsDto 一致)、desc(当 type 等于 ProductType.benefit.value 时返回“免广告权益”,否则返回“不能适用与免除广告”)。

query · 查询订单支付状态

ts
const { data } = await OrderDomain.cases.query.run({
  order_no: '202601010000001',
})

console.log(data) // OrderQueryDto

请求参数 OrderQueryQueryParams

字段类型必填说明
order_nostring待查询的订单号

响应 OrderQueryDto(不可变,@Freeze

字段类型后台原始字段说明
idnumber | stringid订单主键 ID,必填
uidnumber | stringuid下单用户 ID,无装饰器、无默认值
orderNostringorder_no订单号,默认 ''
spreadIdnumber | stringspread_id推广 ID,默认 0
orderStatusOrderStatuspay_status订单支付状态,默认 OrderStatus.UNPAID
payTypePayTypepay_type支付方式,默认 PayType.MH_WX
productTypeProductTypeproduct_type商品大类,默认 ProductType.coins
sourceTypePaySourceTypesource_term支付来源场景,默认 PaySourceType.THEATRE

request_params/order_query_query_params.ts 中还额外导出了一个非请求体类型 OrderQueryCallbackParams{ payCompleted: boolean; productType: ProductType }),随该领域一并对外暴露,供业务代码约定“支付结果回调”场景下的参数结构使用,不对应任何后台接口。

wxVirtualPay · 微信小程序虚拟支付下单

ts
const { data } = await OrderDomain.cases.wxVirtualPay.run({
  code: 'wx_login_code_xxx',
  product_id: 1001,
})

console.log(data) // OrderWxVirtualPayDto

请求参数 OrderWxVirtualPayBodyParams

字段类型必填说明
codestring微信登录票据
product_idnumber商品 ID
product_typeProductGroup['value'](即 number商品前端分组(coins/vip
theatre_idnumber | string短剧 ID
theatre_titlestring短剧标题
theatre_collect_idnumber | string短剧合集 ID
theatre_collect_numbernumber | string短剧合集编号
source_termPaySourceType['value'](即 number支付来源场景
book_namestring小说名称
book_idnumber小说 ID
book_chapter_idnumber | string小说章节 ID
book_chapter_numbernumber | string小说章节编号
template_idnumber模板 ID
template_numbernumber模板编号
pay_typenumber支付方式(对应 PayType 枚举 value

响应 OrderWxVirtualPayDto

字段类型说明
idstring微信虚拟支付下单成功后返回的支付标识,用于拉起微信小程序虚拟支付,必填

wxVirtualPaySuccess · 微信小程序虚拟支付成功回调

ts
const { data } = await OrderDomain.cases.wxVirtualPaySuccess.run({
  orderId: '202601010000001',
})

console.log(data) // OrderWxVirtualPaySuccessDto

请求参数 OrderWxVirtualPaySuccessBodyParams

字段类型必填说明
orderIdstring | number待确认的订单 ID

响应 OrderWxVirtualPaySuccessDto

字段类型后台原始字段说明
orderStatusOrderStatuspay_status订单支付状态,默认 OrderStatus.UNPAID
orderNostringorder_no订单号,默认 ''
payTimenumberpay_time支付完成时间戳,默认 0
transactionNostringtransaction_no微信支付交易流水号,默认 ''

create · 创建订单

ts
const { data } = await OrderDomain.cases.create.run({
  product_id: 1001,
  source_term: PaySourceType.THEATRE.value,
  theatre_id: 2001,
})

console.log(data) // OrderCreateDto

请求参数 OrderCreateBodyParams

字段类型必填说明
codestring微信登录票据,微信虚拟支付场景下必填
product_idnumber商品 ID
product_typeProductGroup['value'](即 number商品前端分组(coins/vip
theatre_idnumber | string短剧 ID
theatre_titlestring短剧标题
theatre_collect_idnumber | string短剧合集 ID
theatre_collect_numbernumber | string短剧合集编号
source_termPaySourceType['value'](即 number支付来源场景
book_namestring小说名称
book_idnumber小说 ID
book_chapter_idnumber | string小说章节 ID
book_chapter_numbernumber | string小说章节编号
template_idnumber模板 ID
template_numbernumber模板编号
pay_typenumber支付方式(对应 PayType 枚举 value
returnUrlstring支付完成后的跳转地址
returnFormatstring米花支付宝 H5 / 微信 H5 下单时指定返回格式,支持 DEEPLINK/URL(对应 PayReturnFormatType,默认为 URL

响应 OrderCreateDto

不同支付渠道只会返回其中一部分字段,业务代码应结合实际使用的 PayType/PayProvider 只读取对应分组的字段。

公共参数

字段类型说明
signTypestring | null支付签名类型,默认 null

微信小程序支付数据

字段类型说明
nonceStrstring | null随机字符串,默认 null
paySignstring支付签名,默认 ''
packagestring | null统一下单接口返回的 prepay_id 参数值,默认 null
timeStampstring | null时间戳,默认 null

微信米大师虚拟支付数据

字段类型说明
modestring支付模式,默认 'short_series_goods'
paySigstring支付签名,默认 ''
signDataOrderCreateWxvirtualSignDataDto参与签名的原始数据,默认新建一个 OrderCreateWxvirtualSignDataDto 实例
signaturestring最终签名值,默认 ''

米花微信小程序半屏支付返回参数

字段类型说明
miniProgramOrgIdstring半屏支付机构 ID,默认 ''
miniProgramPathstring半屏支付跳转路径,默认 ''
prePayTnstring预支付交易号,默认 ''
uniqueOrderNostring唯一订单号,默认 ''

非收银台支付数据

字段类型说明
orderIdstring | null订单 ID,默认 null
payUrlstring | null支付跳转链接,默认 null
mhPayInfostring | null米花支付信息(JSON 字符串),后台原始字段为 payInfo,默认 null,可通过计算属性 formatMhPayInfo 解析为对象
refererstring | null来源页地址,默认 null

拉取 vivo 收银台所需的支付数据

字段类型说明
appIdstringvivo 收银台 appId,默认 ''
bizContentstringvivo 收银台业务参数,默认 ''
methodstringvivo 收银台接口方法名,默认 ''
signstringvivo 收银台签名,默认 ''
timestampstringvivo 收银台时间戳,默认 ''
versionstringvivo 收银台接口版本,默认 ''

拉取 oppo 收银台所需的支付数据

字段类型说明
attachstringoppo 收银台附加参数,默认 ''
detailCodestringoppo 收银台明细编码,默认 ''
prePayTokenstringoppo 收银台预支付 token,默认 ''

掌中付微信半屏支付

字段类型说明
appidstring掌中付微信半屏支付 appid,默认 ''
appletInfostring半屏支付小程序信息(JSON 字符串),默认 '',可通过计算属性 formatZzfPayInfo 解析为对象
charsetstring字符集,默认 ''
mchIdstring商户号,默认 ''
moneynumber支付金额,默认 1
outTradeNostring商户订单号,默认 ''
zzfPayInfostring掌中付支付信息,后台原始字段为 pay_info,默认 ''
pdorderidstring掌中付订单 ID,默认 ''

OrderCreateWxvirtualSignDataDto

字段顺序敏感

该 DTO 的字段声明顺序必须与后台返回的字段顺序保持一致,否则微信支付签名会校验失败,新增/调整字段时务必谨慎。

字段类型说明
offerIdstring应用宝 Offer ID,默认 ''
buyQuantitynumber购买数量,默认 1
envnumber环境标识,默认 0
currencyTypestring货币类型,默认 'CNY'
platformstring平台标识,默认 'android'
outTradeNostring商户订单号,默认 ''
attachstring附加数据(JSON 字符串),默认 '[]'
productIdstring米大师虚拟支付商品 ID,默认 ''
goodsPricenumber商品价格,默认 0

枚举

OrderStatus 订单状态

枚举成员valuecode说明
CANCELED0canceled取消支付
UNPAID1unPaid未支付
PAID2paid已支付
PENDING_REFUND3pendingRefund未退款
REFUND4refund已退款
FAILED_REFUND5failedRefund退款失败
CONFIRMING100confirming确认中
ERROR-1error未知错误

PayType 支付方式

枚举成员valuecode说明
MH_WX1mh_wx米花微信 H5
MH_ZFB2mh_zfb米花支付宝 APP
WX3wx微信原生
ZFB4zfb支付宝原生
H5_WX5h5wx微信 H5 原生
KS6ks快手担保支付
WX_VIRTUAL7wx_virtual微信小程序虚拟支付原生
MH_MP8mh_mp米花微信小程序
DY9douyin抖音通用交易
DY_DIAMOND10douyin_diamond抖音钻石支付
H5_ZFB11h5zfb米花支付宝 H5
MH_JSAPI12mh_jsapi米花微信 jsapi
JSAPI13jsapi微信 jsapi 原生
VIVO20vivoVIVO 钱包支付
OPPO21oppoOPPO 钱包支付
HUAWEI22huawei华为支付
XIAOMI23xiaomi小米支付
HONOR24honor荣耀支付
YEE_H5_WX30yee_h5_wx易宝微信 H5 支付
YEE_JSAPI31yee_jsapi易宝微信 jsapi
YEE_MP_WX32yee_mp_wx易宝微信小程序支付
ZZF_JSAPI50zhang_jsapi掌中付微信 jsapi
ZZF_MP51zhang_wx_embedding掌中付微信小程序半屏支付
ZZF_WX52zhang_wx_mini掌中付微信小程序支付
ZZF_H5_WX53zhang_wx_h5掌中付微信 H5 支付
ZZF_ZFB54zhang_alipay掌中付支付宝 APP 支付
ZZF_ZFB_H555zhang_alipay_h5掌中付支付宝 H5 支付
WX_KF60wx_kf微信客服消息支付

PaySourceType 支付来源场景

枚举成员valuecode说明
DEFAULT0default默认
THEATRE1theatre短剧
NOVEL2novel书城

ProductType 商品大类

枚举成员valuecode说明
coins1coins币产品类
vip2vip会员产品类
unlock3unlock批量解锁类
benefit99benefit权益产品类

ProductClass 商品细分类

枚举成员valuecode说明
WEEK_VIP4week_vip周会员
QUARTER_VIP5quarter_vip季度会员
MONTH_VIP6month_vip月会员
HALF_YEAR_VIP7half_year_vip半年会员
YEAR_VIP8year_vip年会员
SINGLE_VIDEO9single_video解锁全集
COINS10coins充值币
TWO_MONTH_VIP11two_month_vip两月会员
DAY_VIP12day_vip天会员
TWO_DAYS_VIP13two_days_vip两天会员
HALF_MONTH_VIP14half_mouth_vip半月会员
BENEFITS99benefits免广告权益

ProductGroup 商品前端分组

枚举成员valuecode说明
COINS1coins币产品
VIP2vip会员产品

该枚举用于前端本地分组展示,后台接口暂未直接返回对应字段,属于预留/备用枚举。

PayPageType 支付页面场景类型

枚举成员valuecode说明
UNKNOWN0unknown默认充值页
VIDEO1video短剧播放页
READER2reader小说阅读页

NovelType 小说篇幅分类

枚举成员valuecode说明
UNKNOWN0unknown不指定
SHORT1short短篇小说
MIDSHORT2middle-short中短篇小说
MIDIUM3middle中篇小说
MIDFULL4middle-full中长篇小说
FULL5full长篇小说

PayProvider 支付服务商

枚举成员valuecode说明
mhpay1mhpay米花支付
yeepay2yeepay易宝支付
qingmpay3qingmpay掌中付
wechatpay4wechatpay微信原生
wxVirtualPay5wxVirtualPay微信小程序虚拟支付
kfIssuePay6kfIssuePay微信小程序客服消息
alipay7alipay支付宝原生
unknown-1unknown未知

该枚举未在本领域任何请求参数/响应字段中直接引用,作为公共导出类型供业务代码自行归类判断支付渠道使用。

PaySceneType 支付发起端场景

枚举成员valuecode说明
UNKNOWN0unknown未知场景
ANDROID1android安卓
IOS2ios苹果

该枚举未在本领域任何请求参数/响应字段中直接引用,作为公共导出类型供业务代码自行判断发起支付的客户端场景使用,后续可能补充更多场景(如小程序、快应用、H5 等)。

PayReturnFormatType 支付跳转返回格式

枚举成员valuecode说明
DEEPLINK1DEEPLINK支付 scheme 唤起
HTTPS2h5https 链接

对应 create 用例请求参数 returnFormat 字段的取值约定(该字段类型为 string,未直接使用枚举类型标注,此处枚举供参考取值)。

内部工具包 · 未开源授权,仅限公司内部授权团队使用