From 114fdcf181d147f5400c393d4692b381f43a189c Mon Sep 17 00:00:00 2001 From: eric Date: Tue, 10 Mar 2026 07:58:10 -0500 Subject: [PATCH] 's' --- README.md | 4 +++- app/api/pay/route.ts | 23 ++++------------------- app/page.tsx | 5 ++++- config/services.config.ts | 5 ++++- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 35539c7..d7e03b1 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ ZPAY、PocketBase、MinIO 配置与 `C:\project\digital` 保持一致,复制 ` | `NEXT_PUBLIC_API_URL` / `PAYMENT_API_URL` | payjsapi 地址 | `https://api.hackrobot.cn` | | `PAYMENT_PROVIDER` | 支付提供商(payjsapi 环境变量) | `xorpay` / `zpay` | -**XorPay**:直接调用 payh5,无 redirect 中转,表单提交至 xorpay 收银台。payjsapi 需设置 `PAYMENT_PROVIDER=xorpay`。 +**XorPay**:直接调用 payh5,无 redirect 中转,表单提交至 xorpay 收银台。payjsapi 需设置 `PAYMENT_PROVIDER=xorpay`。切换渠道仅需前端改参数,后端 payjsapi 标准化接口。 + +**设备逻辑**:PC 显示二维码 + 支付状态轮询;手机/微信无中转页,直接跳转收银台。默认价格 8.8 元(880 分)。 | `MINIO_ENDPOINT` | MinIO 端点 | `minioweb.hackrobot.cn` | | `MINIO_BUCKET` | 存储桶 | `hackrobot` | diff --git a/app/api/pay/route.ts b/app/api/pay/route.ts index 730850c..c3feaef 100644 --- a/app/api/pay/route.ts +++ b/app/api/pay/route.ts @@ -37,25 +37,10 @@ function buildPayHtml( .map(([k, v]) => ``) .join("\n"); const direct = options?.directToCashier; - // 微信内:显示加载提示,避免 visibility:hidden 导致部分 WebView 表单提交异常 + // 手机/微信:无中转页,直接提交表单跳转收银台 return direct - ? `支付

正在跳转至微信支付...

${inputs}
` - : ` - - - - - 跳转支付... - - - -

正在跳转到支付页面...

-
- ${inputs} -
- - -`; + ? `支付
${inputs}
` + : `支付
${inputs}
`; } function setPayOrderCookie(res: NextResponse, orderId: string) { @@ -127,7 +112,7 @@ export async function POST(request: NextRequest) { } } const return_url = String(body?.return_url || "").trim(); - const total_fee = Number(body?.total_fee) || 8800; + const total_fee = Number(body?.total_fee) || payConfig.defaultAmount || 880; const type = String(body?.type || "vip"); const channel = String(body?.channel || "wxpay"); const device = String(body?.device || "pc"); diff --git a/app/page.tsx b/app/page.tsx index c0406ef..07bb85c 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -7,6 +7,8 @@ import PocketBase from "pocketbase"; import { indexMd } from "./index-content"; import styles from "./index.module.css"; import { getPayEnv, getDeviceFromEnv } from "@/app/lib/payEnv"; +import { getPaymentConfig } from "@/config/services.config"; +import { getPaymentConfig } from "@/config/services.config"; import { usePayStatusPoll } from "@/app/lib/usePayStatusPoll"; const PB_URL = @@ -160,10 +162,11 @@ export default function Home() { const returnUrl = `${window.location.origin}/paid`; const env = getPayEnv(); const device = getDeviceFromEnv(env); + const totalFee = getPaymentConfig().defaultAmount ?? 880; redirectToPay({ user_id: userId, return_url: returnUrl, - total_fee: 8800, + total_fee: totalFee, type: "vip", channel: "wxpay", device, diff --git a/config/services.config.ts b/config/services.config.ts index d0b719a..359226d 100644 --- a/config/services.config.ts +++ b/config/services.config.ts @@ -13,7 +13,9 @@ export interface PaymentConfig { apiUrl: string; provider: "zpay" | "xorpay"; zpaySubmitUrl: string; - /** nomadvip 专用接口路径(固定 ZPAY,不影响 digital/cnomadcna) */ + /** 默认金额(分),8.8 元 = 880 */ + defaultAmount?: number; + /** nomadvip 专用接口路径 */ nomadvipPayPath: string; } @@ -54,6 +56,7 @@ export function getPaymentConfig(): PaymentConfig { provider: (process.env.PAYMENT_PROVIDER as "zpay" | "xorpay") || "zpay", zpaySubmitUrl: process.env.ZPAY_SUBMIT_URL || "https://zpayz.cn/submit.php", + defaultAmount: 880, nomadvipPayPath: "/nomadvip/payh5", }; }