- 12 Apr, 2026 6 commits
-
-
shaw authored
-
Wesley Liddick authored
fix: handle Anthropic credit balance exhausted (400) as account error
-
Wesley Liddick authored
fix(sidebar): smooth sidebar collapse behavior
-
Wesley Liddick authored
fix(frontend): 补全 messages 调度国际化文案
-
Wesley Liddick authored
docs(payment): add built-in payment configuration guide and settings links
-
bot authored
When an Anthropic API key's credit balance is depleted, the upstream returns HTTP 400 with message containing "credit balance". Previously, the 400 handler only checked for "organization has been disabled", so credit-exhausted accounts kept being scheduled — every request returned the same error. Treat this case identically to 402 (Payment Required): call handleAuthError → SetError to stop scheduling the account until an admin manually recovers it after topping up credits. Closes #1586
-
- 11 Apr, 2026 22 commits
-
-
qingyuzhang authored
# Conflicts: # frontend/src/components/layout/AppSidebar.vue
-
erio authored
-
erio authored
-
erio authored
-
erio authored
-
erio authored
-
erio authored
-
erio authored
- Fix webhook URLs: /payment/webhook/<provider> not /payment/<provider>/notify - Remove notifyUrl/returnUrl from provider config tables (auto-generated by UI) - Adjust wxpay publicKeyId/certSerial to match frontend optional marking
-
erio authored
- Add docs/PAYMENT.md and docs/PAYMENT_CN.md with full payment setup guide - Mark Sub2ApiPay as deprecated in ecosystem tables (payment is now built-in) - Add built-in payment system to features list in all 3 READMEs
-
Wesley Liddick authored
feat(payment): add complete payment system with multi-provider support
-
erio authored
-
erio authored
# Conflicts: # frontend/src/api/admin/settings.ts # frontend/src/stores/app.ts # frontend/src/types/index.ts # frontend/src/views/admin/SettingsView.vue
-
erio authored
Upstream removed sora feature (090_drop_sora.sql) but left i18n keys and wire.go references. Clean up: - Remove entire sora i18n block from en.ts and zh.ts (~190 lines) - Remove sora nav key and unused 'data' settings tab key - Remove sora_client_enabled from settings (fork-specific) - Remove SoraMediaCleanupService from wire.go
-
erio authored
The API client's error interceptor was dropping the reason and metadata fields from backend error responses. This caused PaymentView to miss specific error codes (TOO_MANY_PENDING, CANCEL_RATE_LIMITED) and fall back to generic error messages.
-
erio authored
-
erio authored
Stripe payment path was setting expiresAt to empty string, causing PaymentStatusPanel to fall back to hardcoded 30-minute default when the popup redirect switches to the waiting view.
-
Wesley Liddick authored
fix: 修复多个 UI 和功能问题 - 表格排序搜索、导出逻辑、分页配置和状态筛选
-
erio authored
Backend: - Parse EasyPay `payurl2` field, prefer H5 link on mobile - Add `device=mobile` to EasyPay submit.php (popup) mode - Expand isMobile detection keywords (add ipad/ipod) Frontend: - Add `isMobileDevice()` utility (userAgentData + UA regex) - Mobile + pay_url: direct redirect instead of QR/popup - Popup blocked fallback: auto-redirect when window.open fails - Stripe WeChat Pay: dynamic client param (mobile_web vs web)
-
erio authored
Backend: - Split payment_order.go (546→314 lines) into payment_order_lifecycle.go - Replace magic strings with constants in factory, easypay, webhook handler - Add rate limit/validity unit constants in payment_order_lifecycle, payment_service - Fix critical regression: add PaymentEnabled to GetPublicSettings response - Add missing migration 099_fix_migrated_purchase_menu_label_icon.sql Frontend: - Fix StripePopupView.vue: replace `as any` with typed interface, use extractApiErrorMessage - Fix AdminOrderTable.vue: replace hardcoded column labels with i18n t() calls - Fix SubscriptionsView.vue: replace hardcoded Today/Tomorrow with i18n - Extract duplicate statusBadgeClass/canRefund/formatOrderDateTime to orderUtils.ts - Add missing i18n keys: common.today, common.tomorrow, payment.orders.orderType/actions - Remove dead PurchaseSubscriptionView.vue (replaced by PaymentView)
-
erio authored
The built-in payment system replaces the old external purchase subscription iframe approach. Remove purchase_subscription_enabled/url from admin settings interface and form defaults, as the Payment tab now handles this functionality. Kept in stores/app.ts fallback to match backend DTO response structure.
-
erio authored
- Add payment navigation to AppSidebar (user orders + admin payment menu group with collapse) - Add 5 missing nav i18n keys (myOrders, orderManagement, paymentDashboard, paymentConfig, paymentPlans) - Renumber payment migrations 090-100 → 092-102 to avoid conflict with upstream 090/091 - Remove non-payment sora_client_enabled change, restore upstream purchase_subscription fields - Remove extra 'data' from SettingsTab type union
-
erio authored
Add a full payment and subscription system supporting EasyPay (Alipay/WeChat), Stripe, and direct Alipay/WeChat Pay providers with multi-instance load balancing.
-
- 10 Apr, 2026 5 commits
-
-
IanShaw027 authored
-
IanShaw027 authored
-
IanShaw027 authored
-
IanShaw027 authored
-
IanShaw027 authored
-
- 09 Apr, 2026 7 commits
-
-
qingyuzhang authored
-
IanShaw027 authored
-
IanShaw027 authored
-
IanShaw027 authored
-
IanShaw027 authored
-
IanShaw027 authored
-
Wesley Liddick authored
fix: 同步 LoadFactor 到调度快照缓存
-