oak-pay-business 更新日志
4.1.0 未发布(区间:4.0.0..HEAD)
- 新增 Waffo、Stripe、Epay、Creem、PayPal 支付渠道,并补齐对应的账号实体、产品实体、支付记录实体、配置组件和 endpoint。
- 新增微信、支付宝、Epay、Stripe、Creem、Waffo、PayPal 回调模块;当前
src/endpoints/index.ts默认导出空对象,项目必须按实际启用渠道显式注入,依赖包不会自动暴露全部支付回调。 payClazz内置注册新增epProduct、spProduct、cpProduct、wfProduct、ppProduct,并对自定义支付渠道校验 account/product schema:账号金额、费率字段必须是 decimal,产品必须关联 application 并提供启用状态。- 金额字段迁到
Price/Decimal语义,支付、退款、账户、提现、结算、系统账户流水等路径改用 decimal helper / BigNumber,避免以 JS number 直接计算金额。 - 新增
upgrade/4.1.0/accounts.sql和upgrade/4.1.0/priceDecimal.sql:前者创建新渠道表,后者把历史金额列扩成decimal(32,10)。 - 前端支付渠道选择支持 web redirect 类支付,
redirectPay会识别pay.meta中的payUrl、htmlUrl、checkoutUrl、paymentUrl。 features/Pay、订单支付组件和payConfig/system配置界面同步扩展到新渠道;系统账户 survey、应用 projection 和 relation 配置也加入新账号 / 产品关系。System、User适配oak-general-business6.x:System继续保留translation、translateState、translationError和translate/translateSuccess/translateFailaction alias,同时追加支付账号、提现账号和payConfig。- 修复退款取消 /
stopRefunding后订单状态回滚问题,避免从refunding错走支付成功分支并重复触发订单已支付副作用。 - 账户支付、充值、退款、提现和提现转账相关 trigger 改用 decimal 值收敛,并补齐部分零金额退款和退款失败回滚路径。
- 小程序组件配置从
index.json批量迁到index.config.ts/CreateComponentConfig,样式变量迁到--oak-*主题变量。 components/pay/list支持传入分页覆盖项,支付详情、账单、账号和渠道配置组件做了 UI 与投影同步。- 包元数据升级为
oak.package、oak.i18n、oak.business.module和oak.compiler.transform,peer 对齐 React 19、AntD 6、oak-domain6、oak-frontend-base6、oak-general-business6。 Order/Pay增加多货币字段与配置链路;支付产品 draft 初始化、Alipay 不支持独立退款 callback 的边界也已修正。- ES 构建启用 XML、render 注入和 Less Module 严格检查,组件已迁移到编译器推导的 props;旧手写 render 合同和未声明 XML/style 使用会在构建阶段暴露。
主要 diff 文件:
package.json、src/entities/*、src/endpoints/*、src/checkers/*、src/triggers/*、src/features/Pay.ts、src/utils/payClazz/*、src/utils/redirectPay.ts、src/components/*、src/configuration/*、upgrade/4.1.0/*.sql4.0.0(tag:4.0.0,区间:3.5.1..4.0.0)
- 适配 React 19,并把迁移构建切到 ESM。
- 包 metadata 补齐
oak.package/isLib,feature 初始化转为 package metadata 语义。 - 移除旧 alias / build scripts,并补充英文 locale。
- 适配新的
oak-general-business和oak-domain依赖方式。
主要 diff 文件:
package.json、src/locales/*、src/initialize*、构建配置。升级注意
数据库升级:4.1.0 需要审阅并执行
upgrade/4.1.0/accounts.sql 与 upgrade/4.1.0/priceDecimal.sql。前者新增渠道表并手写物理外键,后者把金额列改成 decimal(32,10);生产库升级前应确认历史金额单位、精度和外键策略。金额语义:支付、退款、账户、提现和结算金额不应继续按普通 JS number 计算。消费项目里的金额写入、比较、加减、格式化和 update expression 需要迁到 decimal 字符串 / helper 语义。
覆盖实体兼容:支付项目覆盖
System、User、支付配置、支付产品或支付状态时,需要保留 general-business 字段、支付字段、旧 action/state 和翻译 alias。尤其是退款状态流转,不要只按新渠道字段重写旧状态机。自定义支付渠道:
registerPayClazz 现在会校验 product/account schema。自定义账号实体必须提供 decimal price 和费率字段、systemId、提现转账开关等字段;自定义产品实体必须关联 application 并提供 enabled、税费、退款和收款配置字段。Redirect 支付:Epay、Stripe、Creem、Waffo、PayPal 等 redirect 类渠道主要面向 web 平台,前端可用性依赖当前 application 和
pay.meta 中的跳转 URL。升级后需要检查支付成功 / 取消 URL、webhook secret、notify URL 和沙箱配置。