diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index f1253ac09..828d0194b 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -83,6 +83,11 @@ import { type PointsPackage, type PointsSystemConfig, } from "@/lib/points/config"; +import { + defaultDulupayConfig, + normalizeDulupayConfig, + type DulupayConfig, +} from "@/lib/payment/dulupay-config"; const fetcher = (url: string) => fetch(url).then((res) => res.json()); @@ -193,6 +198,7 @@ type SiteSettings = { lovartComposerPreviewTexts: string[]; pointsSystemConfig: PointsSystemConfig; pointsPackages: PointsPackage[]; + dulupayConfig: DulupayConfig; lovartPromoText: string; lovartPromoActionText: string; lovartHeroTitle: string; @@ -433,6 +439,7 @@ export function AdminSettingsClient() { ], pointsSystemConfig: defaultPointsSystemConfig, pointsPackages: defaultPointsPackages, + dulupayConfig: defaultDulupayConfig, lovartPromoText: "现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠", lovartPromoActionText: "立即升级", lovartHeroTitle: "由壹点AI 让设计更简单", @@ -460,6 +467,9 @@ export function AdminSettingsClient() { const normalizedPointsPackages = normalizePointsPackages( (siteSettingsData as any).pointsPackages ); + const normalizedDulupayConfig = normalizeDulupayConfig( + (siteSettingsData as any).dulupayConfig + ); setSiteSettings({ siteName: siteSettingsData.siteName || "AI Chatbot", @@ -499,6 +509,7 @@ export function AdminSettingsClient() { ], pointsSystemConfig: normalizedPointsSystemConfig, pointsPackages: normalizedPointsPackages, + dulupayConfig: normalizedDulupayConfig, lovartPromoText: siteSettingsData.lovartPromoText || "现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠", @@ -3648,6 +3659,249 @@ export function AdminSettingsClient() { +
+
+
+ +
+ 用于积分充值支付。支持 V1(MD5)和 V2(SHA256WithRSA)两种签名模式。 +
+
+ +
+
+
+
+ +
+ 开启后允许前端发起 DuluPay 充值订单 +
+
+ + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + enabled: checked, + }, + }) + } + /> +
+
+ + +
+
+
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + baseUrl: e.target.value, + }, + }) + } + placeholder="https://www.dulupay.com" + /> +
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + notifyUrl: e.target.value, + }, + }) + } + placeholder="https://your-domain.com/api/payment/dulupay/notify" + /> +
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + returnUrl: e.target.value, + }, + }) + } + placeholder="https://your-domain.com/payment/success" + /> +
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + defaultType: e.target.value, + }, + }) + } + placeholder="alipay / wxpay" + /> +
+
+ {siteSettings.dulupayConfig?.version === "v1" ? ( +
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + pid: e.target.value, + }, + }) + } + placeholder="商户ID (pid)" + /> +
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + key: e.target.value, + }, + }) + } + placeholder="V1 签名密钥 key" + /> +
+
+ ) : ( +
+
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + mchId: e.target.value, + }, + }) + } + placeholder="V2 商户号" + /> +
+
+ + + setSiteSettings({ + ...siteSettings, + dulupayConfig: { + ...siteSettings.dulupayConfig, + appId: e.target.value, + }, + }) + } + placeholder="V2 应用ID" + /> +
+
+
+ +