Commit Graph
3625 Commits
Author SHA1 Message Date
erio 8e4641e176 chore: bump version to 0.1.108.124 2026-04-09 16:39:22 +08:00
erio 5ae2061d05 fix(admin): fix payment provider settings issues
- Remove "at least one payment type required" validation, allow
  saving providers with no payment types selected
- Auto-fill current domain for empty notify/return URL on save
  (trim whitespace, fall back to window.location.origin)
- Add type="button" to all buttons inside the settings form that
  are not submit buttons (edit, delete, refresh, create provider)
  to prevent accidental form submission triggering main settings save
2026-04-09 16:39:22 +08:00
erio 9fdc7c92e2 chore: bump version to 0.1.108.123 2026-04-09 16:07:26 +08:00
erio 11ba3b6ecd fix(payment): restore Stripe popup flow, fix WeChat double QR dialog
Restore popup handling for Stripe Alipay/WeChat (reverts inline-only change).
Fix WeChat double QR issue by passing handleActions: false to
confirmWechatPayPayment, which prevents Stripe's built-in QR dialog
and lets our popup render the QR code directly.

Flow after fix:
- Stripe Alipay: popup → redirects to Alipay
- Stripe WeChat: popup → directly shows QR code (no Stripe dialog)
- Stripe Card: inline confirm → success page
2026-04-09 16:07:26 +08:00
erio 1ffea8faec chore: bump version to 0.1.108.122 2026-04-09 15:41:24 +08:00
erio 8b4e6bf317 refactor(payment): unify Stripe payment flow, remove StripePopupView dependency
All Stripe methods now use confirmPayment({redirect: 'if_required'}):
- Card: confirms inline, shows success page
- WeChat: Stripe shows QR modal overlay on same page, no popup
- Alipay: Stripe redirects to Alipay page, returns to result page

Removes POPUP_METHODS, StripePopupView postMessage handshake, and
onStripeRedirect handler. Eliminates double-popup issue for WeChat
(3 windows → 1) and simplifies Alipay (2 windows → 1 redirect).
2026-04-09 15:41:07 +08:00
erio 7505c745d2 chore: bump version to 0.1.108.121 2026-04-09 15:21:44 +08:00
erio 8a98f726b9 fix(payment): show success screen after Stripe card payment instead of auto-returning
Stripe card payment now shows a success page with order details and a
manual confirm button, matching the QR code payment success flow.
Previously it auto-returned to the recharge page after 1.5 seconds.
2026-04-09 15:21:23 +08:00
IanShaw027 fe211fc563 fix(ui): 修复在 macOS 系统下数据表格横向滚动条闪隐和消失的问题
问题原因:
原本的 `style.css` 代码全局使用了 W3C 标准属性 (`scrollbar-width`)。而在 Chrome 121+ 以及 Safari 环境下,一旦匹配到 W3C 标准属性,浏览器就会放弃 WebKit 的定制样式,全面交由操作系统原生渲染。因为 macOS 原生的滚动条特性就是“不滚动时自动隐藏”,加之原本又配置了全局 hover 时才显色的透明度逻辑,最终导致在苹果系统下数据表常常无法明显看出横向滚动条。

修复方式:
1. 在 `style.css` 中增加 `@supports (-moz-appearance:none)`,将对全局 `scrollbar-width` 的干预严格隔离限制在 Firefox 浏览器内,防止误伤 Chrome 等 WebKit 系浏览器。
2. 移除旧版代码中对 `.table-wrapper` 直接定义的 `scrollbar-width` 和透明覆盖。
3. 在 `DataTable.vue` 内部,通过 `!important` 将 Webkit 专属定制外观(12px高度,实心圆角灰色轨道)的优先权推至最高,强制覆盖透明隐身规则。
4. 为底层 table 添加了 `min-w-max` 属性,强制阻止内容宽度受限于屏幕边界带来的收缩,充分保证合理超出范围而触发常驻横向溢出。
2026-04-09 15:13:16 +08:00
erio 5c94b51d04 chore: bump version to 0.1.108.120 2026-04-09 14:56:38 +08:00
erio 03b97f14ad fix(payment): add return_url verification for popup payment mode
EasyPay popup mode relies on notify_url (webhook) to update order status,
but if the callback is missed, orders stay PENDING forever. This adds:

- POST /api/v1/payment/orders/verify endpoint that actively queries
  the upstream provider to check payment status
- Frontend PaymentResultView calls verify when receiving EasyPay
  return_url params (out_trade_no)
- Fix checkPaid to fall back to OutTradeNo when PaymentTradeNo is empty
  (popup mode doesn't have trade_no until the notify callback)
2026-04-09 14:56:24 +08:00
erio 6575fc1d1c chore: bump version to 0.1.108.119 2026-04-09 13:09:28 +08:00
erio 3844c8688e refactor(payment): remove DB ID from order number, use out_trade_no lookup
Order ID format changed from sub2_5 to sub2_20250409aB3kX9mQ
(prefix + date + 8-char random, no DB ID embedded).

- Add out_trade_no column to payment_orders table
- Store generated external ID on order creation
- Webhook handler looks up order by out_trade_no instead of parsing DB ID
- Fallback to legacy sub2_N format for existing orders
2026-04-09 13:09:27 +08:00
IanShaw027 7d008bd5b6 fix(test): 修正 admin service 分组测试平台字段赋值 2026-04-09 12:42:37 +08:00
IanShaw027 66ff2def8c fix(test): 补充 admin service 分组测试字符串指针辅助函数 2026-04-09 12:39:05 +08:00
IanShaw027 de9b9c9dfb feat(admin): 增加分组 messages 调度映射配置界面 2026-04-09 12:30:25 +08:00
IanShaw027 d765359f4b test(admin): 增加messages调度表单状态转换测试 2026-04-09 12:30:06 +08:00
IanShaw027 4de4823a65 feat(openai): 支持messages模型映射与instructions模板注入 2026-04-09 12:29:49 +08:00
IanShaw027 23c4d592f8 feat(group): 增加messages调度模型映射配置 2026-04-09 12:29:28 +08:00
erio a7a7257603 chore: bump version to 0.1.108.118 2026-04-09 12:21:13 +08:00
erio f211c7f22b fix: order ID format sub2_20250409aB3kX9mQ_N, parse via last underscore 2026-04-09 12:21:13 +08:00
erio 7ef11b3180 chore: bump version to 0.1.108.117 2026-04-09 11:58:49 +08:00
erio 6c9fd2ed00 fix: prevent settings save on provider edit, randomize order IDs
- Remove saveSettings() call from handleSaveProvider - editing a
  provider should not save the entire settings form
- Change order ID format from sub2_5 to sub2_20250409_5_aB3kX9mQ
  (prefix + date + dbID + 8-char alphanumeric random) to avoid
  collisions with external payment providers
- parseOrderID supports both legacy and new format
2026-04-09 11:58:49 +08:00
erio 7de6de09d7 chore: bump version to 0.1.108.116 2026-04-09 11:44:32 +08:00
erio 53bcd4ce53 fix(admin): compact provider dialog layout, fix broken template 2026-04-09 11:44:32 +08:00
Glorhop 311f06745a chore: clean up deprecated Sora settings after rebase 2026-04-09 03:06:53 +00:00
Wesley Liddick 1b79f6a7cf Merge pull request #1522 from xvhuan/fix/redis-snapshot-meta-fix
优化调度快照缓存,避免 1.5 万账号场景下 Redis 大 MGET
2026-04-09 10:25:33 +08:00
Glorhop 8e1a7bdfff fix: fixed an issue where OIDC login consistently used a synthetic email address 2026-04-09 02:20:51 +00:00
ruiqurm 02a66a01c3 feat: support OIDC login. 2026-04-09 02:20:51 +00:00
octo-patch ce833d91ce fix: include home_content URL in CSP frame-src origins (fixes #1519) 2026-04-09 09:47:27 +08:00
shaw 155d3474d6 chore: update Sponsors 2026-04-09 09:21:55 +08:00
erio 1d8f39e473 chore: bump version to 0.1.108.115 2026-04-09 03:35:38 +08:00
erio 7c2dbb07b5 fix(admin): skip null values when loading settings from backend
Backend returns null for unconfigured fields. Object.assign overwrites
form defaults (e.g. payment_enabled_types: []) with null, causing
"Cannot read properties of null" errors. Now only non-null values
are applied, preserving safe defaults for unconfigured environments.
2026-04-09 03:35:38 +08:00
erio 7d45fad287 chore: bump version to 0.1.108.114 2026-04-09 03:20:53 +08:00
erio 382b96b7b4 feat(payment): support alipay_direct/wxpay_direct in method selector
Add alipay_direct and wxpay_direct to METHOD_ORDER so they appear
in the correct position when enabled. The checkout API already returns
these types from direct provider instances; the method selector's
icon/style matching (includes('alipay')) already handles them.
2026-04-09 03:20:52 +08:00
erio 2fc413c82e chore: bump version to 0.1.108.113 2026-04-09 03:13:35 +08:00
erio 7f2877363d feat(payment): lightweight Stripe popup with postMessage credentials
Create StripePopupView.vue - a standalone minimal page (no AppLayout)
that receives clientSecret/publishableKey via postMessage from parent:
- Alipay: auto-calls confirmAlipayPayment(), shows "正在跳转..."
- WeChat: calls confirmWechatPayPayment(), shows QR code inline
- Much faster than loading full StripePaymentView (no API calls needed)
2026-04-09 03:13:35 +08:00
erio dd87c273da chore: bump version to 0.1.108.112 2026-04-09 03:00:49 +08:00
erio f50b48c482 fix(payment): restore easypay toggle, disable instances when provider disabled
- Add easypay back to enabled provider toggles (alongside alipay, wxpay, stripe)
- Disabling a provider toggle now also disables all matching provider instances
- Simplify enabledProviderKeyOptions - direct mapping instead of special cases
- Label: "启用的服务商" with hint about instance auto-disable
2026-04-09 03:00:49 +08:00
erio 173aa9325e chore: bump version to 0.1.108.111 2026-04-09 02:29:18 +08:00
erio a8a98cc5a1 fix: order expiry cancels upstream, subscription layout, popup & label fixes
- ExpireTimedOutOrders now cancels upstream payment (Stripe PaymentIntent)
  before marking order as expired
- Active subscriptions moved below plan list with compact inline style
- StripePaymentView uses minimal layout (no AppLayout) in popup mode
- Fix misleading "服务商" label → "支持的支付方式" for payment type toggles
2026-04-09 02:29:18 +08:00
erio 302e6acbd9 chore: bump version to 0.1.108.110 2026-04-09 02:13:34 +08:00
erio 21bcc04356 fix(payment): widen Stripe popup for Alipay checkout page (1250px) 2026-04-09 02:13:34 +08:00
erio 74a38ead49 chore: bump version to 0.1.108.109 2026-04-09 02:04:23 +08:00
erio fbdb68a0aa refactor(payment): direct Stripe confirm for alipay/wechat popup
Instead of opening a popup that renders the full Payment Element again
(forcing users to re-select payment method), pass the selected method
via query param. The popup now directly calls:
- confirmAlipayPayment() for Alipay (redirects to Alipay page)
- confirmWechatPayPayment() for WeChat (displays QR code)
Card and Google Pay remain inline on the main page.
2026-04-09 02:04:23 +08:00
erio 204fa00bf5 chore: bump version to 0.1.108.108 2026-04-09 01:50:48 +08:00
erio 090f2e721f fix(payment): show result inline for all terminal states instead of auto-returning
Success, cancelled, and expired states now all display a result screen
in-place. User must click confirm to return, matching sub2apipay behavior.
2026-04-09 01:50:48 +08:00
ius 265687b56d fix: 优化调度快照缓存以避免 Redis 大 MGET 2026-04-08 10:39:15 -07:00
erio ad2b240fd8 chore: bump version to 0.1.108.107 2026-04-09 01:24:30 +08:00
erio 373464db26 fix(payment): add cid and fix double-slash in easypay redirect mode
createRedirectPayment was missing the cid parameter (channel ID) that
createAPIPayment already included via resolveCID(). This caused EasyPay
to use a default channel instead of the configured one (e.g. 13256/13264).

Also trim trailing slash from apiBase to prevent double-slash in URLs.
2026-04-09 01:24:15 +08:00