diff --git a/apps/admin/app/dashboard/order/page.tsx b/apps/admin/app/dashboard/order/page.tsx
index 373ad5b..a52803f 100644
--- a/apps/admin/app/dashboard/order/page.tsx
+++ b/apps/admin/app/dashboard/order/page.tsx
@@ -116,7 +116,7 @@ export default function Page(props: any) {
-
{t('method')}
- {t(`methods.${row.original.method}`)}
+ {row.original?.payment?.name || row.original?.payment?.platform}
diff --git a/apps/admin/services/admin/index.ts b/apps/admin/services/admin/index.ts
index f9e3438..37cdd29 100644
--- a/apps/admin/services/admin/index.ts
+++ b/apps/admin/services/admin/index.ts
@@ -1,5 +1,5 @@
// @ts-ignore
-
+
// API 更新时间:
// API 唯一标识:
import * as ads from './ads';
diff --git a/apps/admin/services/admin/typings.d.ts b/apps/admin/services/admin/typings.d.ts
index 72cceb8..286059b 100644
--- a/apps/admin/services/admin/typings.d.ts
+++ b/apps/admin/services/admin/typings.d.ts
@@ -224,7 +224,7 @@ declare namespace API {
coupon_discount?: number;
commission: number;
fee_amount: number;
- method?: string;
+ payment_id: number;
trade_no?: string;
status?: number;
subscribe_id?: number;
@@ -493,7 +493,7 @@ declare namespace API {
};
type GetAvailablePaymentMethodsResponse = {
- list: PaymenMethod[];
+ list: PaymentMethod[];
};
type GetCouponListParams = {
@@ -921,7 +921,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
- method: string;
+ payment: PaymentMethod;
fee_amount: number;
trade_no: string;
status: number;
@@ -943,6 +943,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
+ payment: PaymentMethod;
method: string;
fee_amount: number;
trade_no: string;
@@ -961,17 +962,6 @@ declare namespace API {
list?: OrdersStatistics[];
};
- type PaymenMethod = {
- id: number;
- name: string;
- platform: string;
- description: string;
- icon: string;
- fee_mode: number;
- fee_percent: number;
- fee_amount: number;
- };
-
type PaymentConfig = {
id: number;
name: string;
@@ -986,6 +976,17 @@ declare namespace API {
enable: boolean;
};
+ type PaymentMethod = {
+ id: number;
+ name: string;
+ platform: string;
+ description: string;
+ icon: string;
+ fee_mode: number;
+ fee_percent: number;
+ fee_amount: number;
+ };
+
type PaymentMethodDetail = {
id: number;
name: string;
@@ -1520,7 +1521,7 @@ declare namespace API {
type UpdateOrderStatusRequest = {
id: number;
status: number;
- method?: string;
+ payment_id?: number;
trade_no?: string;
};
diff --git a/apps/admin/services/common/index.ts b/apps/admin/services/common/index.ts
index 73b3bda..61ba129 100644
--- a/apps/admin/services/common/index.ts
+++ b/apps/admin/services/common/index.ts
@@ -1,5 +1,5 @@
// @ts-ignore
-
+
// API 更新时间:
// API 唯一标识:
import * as auth from './auth';
diff --git a/apps/admin/services/common/typings.d.ts b/apps/admin/services/common/typings.d.ts
index e91d415..9b3c09c 100644
--- a/apps/admin/services/common/typings.d.ts
+++ b/apps/admin/services/common/typings.d.ts
@@ -195,7 +195,7 @@ declare namespace API {
};
type GetAvailablePaymentMethodsResponse = {
- list: PaymenMethod[];
+ list: PaymentMethod[];
};
type GetGlobalConfigResponse = {
@@ -328,7 +328,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
- method: string;
+ payment: PaymentMethod;
fee_amount: number;
trade_no: string;
status: number;
@@ -350,6 +350,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
+ payment: PaymentMethod;
method: string;
fee_amount: number;
trade_no: string;
@@ -360,17 +361,6 @@ declare namespace API {
updated_at: number;
};
- type PaymenMethod = {
- id: number;
- name: string;
- platform: string;
- description: string;
- icon: string;
- fee_mode: number;
- fee_percent: number;
- fee_amount: number;
- };
-
type PaymentConfig = {
id: number;
name: string;
@@ -385,6 +375,17 @@ declare namespace API {
enable: boolean;
};
+ type PaymentMethod = {
+ id: number;
+ name: string;
+ platform: string;
+ description: string;
+ icon: string;
+ fee_mode: number;
+ fee_percent: number;
+ fee_amount: number;
+ };
+
type PaymentMethodDetail = {
id: number;
name: string;
diff --git a/apps/user/app/(main)/(user)/payment/page.tsx b/apps/user/app/(main)/(user)/payment/page.tsx
index 5075d24..efa3a7e 100644
--- a/apps/user/app/(main)/(user)/payment/page.tsx
+++ b/apps/user/app/(main)/(user)/payment/page.tsx
@@ -1,6 +1,7 @@
'use client';
import { Display } from '@/components/display';
+import StripePayment from '@/components/payment/stripe';
import { SubscribeBilling } from '@/components/subscribe/billing';
import { SubscribeDetail } from '@/components/subscribe/detail';
import useGlobalStore from '@/config/use-global';
@@ -25,7 +26,6 @@ import { useTranslations } from 'next-intl';
import Link from 'next/link';
import { QRCodeCanvas } from 'qrcode.react';
import { useEffect, useState } from 'react';
-import StripePayment from './stripe';
export default function Page() {
const t = useTranslations('order');
@@ -106,7 +106,7 @@ export default function Page() {
-
- {data?.method && {data?.method}}
+ {data?.payment.name || data?.payment.platform}
@@ -223,7 +223,7 @@ export default function Page() {
)}
- {data?.status === 1 && payment?.type === 'Stripe' && (
+ {data?.status === 1 && payment?.type === 'stripe' && (
{t('waitingForPayment')}
{countdownDisplay}
diff --git a/apps/user/app/(main)/purchasing/order/page.tsx b/apps/user/app/(main)/purchasing/order/page.tsx
index 1e3096f..8a53187 100644
--- a/apps/user/app/(main)/purchasing/order/page.tsx
+++ b/apps/user/app/(main)/purchasing/order/page.tsx
@@ -1,6 +1,7 @@
'use client';
import { Display } from '@/components/display';
+import StripePayment from '@/components/payment/stripe';
import { SubscribeBilling } from '@/components/subscribe/billing';
import { SubscribeDetail } from '@/components/subscribe/detail';
import useGlobalStore from '@/config/use-global';
@@ -25,7 +26,6 @@ import { useTranslations } from 'next-intl';
import Link from 'next/link';
import { QRCodeCanvas } from 'qrcode.react';
import { useEffect, useState } from 'react';
-import StripePayment from './stripe';
export default function Page() {
const t = useTranslations('order');
@@ -111,7 +111,7 @@ export default function Page() {
-
- {data?.payment && {t(`methods.${data?.payment}`)}}
+ {data?.payment.name || data?.payment.platform}
@@ -228,19 +228,19 @@ export default function Page() {
)}
- {data?.status === 1 && payment?.type === 'stripe' && (
+ {data?.status === 1 && payment?.type === 'Stripe' && (
-
{t('scanToPay')}
+
{t('waitingForPayment')}
{countdownDisplay}
{payment.stripe &&
}
-
-
-
-
+ {/*
+
+
+
*/}
)}
diff --git a/apps/user/app/(main)/purchasing/order/stripe.tsx b/apps/user/app/(main)/purchasing/order/stripe.tsx
deleted file mode 100644
index 62f5741..0000000
--- a/apps/user/app/(main)/purchasing/order/stripe.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import { Elements, useStripe } from '@stripe/react-stripe-js';
-import { loadStripe, PaymentIntentResult } from '@stripe/stripe-js';
-import { QRCodeCanvas } from 'qrcode.react';
-import React, { useCallback, useEffect, useMemo, useState } from 'react';
-
-interface StripePaymentProps {
- method: string;
- client_secret: string;
- publishable_key: string;
-}
-
-const StripePayment: React.FC = ({
- method,
- client_secret,
- publishable_key,
-}) => {
- const stripePromise = useMemo(() => loadStripe(publishable_key), [publishable_key]);
-
- return (
-
-
-
- );
-};
-
-const CheckoutForm: React.FC> = ({
- client_secret,
- method,
-}) => {
- const stripe = useStripe();
- const [errorMessage, setErrorMessage] = useState(null);
- const [qrCodeUrl, setQrCodeUrl] = useState(null);
- const [isSubmitted, setIsSubmitted] = useState(false);
-
- const handleError = useCallback((message: string) => {
- setErrorMessage(message);
- setIsSubmitted(false);
- }, []);
-
- const confirmPayment = useCallback(async (): Promise => {
- if (!stripe) {
- handleError('Stripe.js is not loaded.');
- return null;
- }
-
- if (method === 'alipay') {
- return await stripe.confirmAlipayPayment(
- client_secret,
- { return_url: window.location.href },
- { handleActions: false },
- );
- }
-
- return await stripe.confirmWechatPayPayment(
- client_secret,
- {
- payment_method_options: { wechat_pay: { client: 'web' } },
- },
- { handleActions: false },
- );
- }, [client_secret, method, stripe, handleError]);
-
- const autoSubmit = useCallback(async () => {
- if (isSubmitted) return;
-
- setIsSubmitted(true);
-
- try {
- const result = await confirmPayment();
- if (!result) return;
-
- const { error, paymentIntent } = result;
- if (error) return handleError(error.message!);
-
- if (paymentIntent?.status === 'requires_action') {
- const nextAction = paymentIntent.next_action as any;
- const qrUrl =
- method === 'alipay'
- ? nextAction?.alipay_handle_redirect?.url
- : nextAction?.wechat_pay_display_qr_code?.image_url_svg;
-
- setQrCodeUrl(qrUrl || null);
- }
- } catch (error) {
- handleError('An unexpected error occurred');
- }
- }, [confirmPayment, isSubmitted, handleError, method]);
-
- useEffect(() => {
- autoSubmit();
- }, [autoSubmit]);
-
- return qrCodeUrl ? (
-
- ) : (
- errorMessage
- );
-};
-
-export default StripePayment;
diff --git a/apps/user/app/(main)/(user)/payment/stripe.tsx b/apps/user/components/payment/stripe.tsx
similarity index 95%
rename from apps/user/app/(main)/(user)/payment/stripe.tsx
rename to apps/user/components/payment/stripe.tsx
index f1eb134..99028be 100644
--- a/apps/user/app/(main)/(user)/payment/stripe.tsx
+++ b/apps/user/components/payment/stripe.tsx
@@ -145,9 +145,9 @@ const CardPaymentForm: React.FC = ({ clientSecret, onError
value={cardholderName}
onChange={(e) => setCardholderName(e.target.value)}
placeholder={t('name_placeholder')}
- className={errors.name ? 'border-red-500' : ''}
+ className={errors.name ? 'border-destructive' : ''}
/>
- {errors.name && {errors.name}
}
+ {errors.name && {errors.name}
}
{/* Card Number */}
@@ -166,7 +166,7 @@ const CardPaymentForm: React.FC = ({ clientSecret, onError
/>
- {errors.cardNumber && {errors.cardNumber}
}
+ {errors.cardNumber && {errors.cardNumber}
}
@@ -184,7 +184,9 @@ const CardPaymentForm: React.FC = ({ clientSecret, onError
onChange={(e) => handleChange(e, 'cardExpiry')}
/>
- {errors.cardExpiry && {errors.cardExpiry}
}
+ {errors.cardExpiry && (
+ {errors.cardExpiry}
+ )}
{/* Security Code */}
@@ -201,7 +203,7 @@ const CardPaymentForm: React.FC = ({ clientSecret, onError
onChange={(e) => handleChange(e, 'cardCvc')}
/>
- {errors.cardCvc && {errors.cardCvc}
}
+ {errors.cardCvc && {errors.cardCvc}
}
diff --git a/apps/user/package.json b/apps/user/package.json
index 4a562e1..676025c 100644
--- a/apps/user/package.json
+++ b/apps/user/package.json
@@ -10,8 +10,8 @@
"start": "next start"
},
"dependencies": {
- "@stripe/react-stripe-js": "^3.1.1",
- "@stripe/stripe-js": "^5.5.0",
+ "@stripe/react-stripe-js": "^3.4.0",
+ "@stripe/stripe-js": "^6.0.0",
"@tanstack/react-query": "^5.63.0",
"@tanstack/react-query-next-experimental": "^5.63.0",
"@workspace/ui": "workspace:*",
diff --git a/apps/user/services/common/index.ts b/apps/user/services/common/index.ts
index 73b3bda..61ba129 100644
--- a/apps/user/services/common/index.ts
+++ b/apps/user/services/common/index.ts
@@ -1,5 +1,5 @@
// @ts-ignore
-
+
// API 更新时间:
// API 唯一标识:
import * as auth from './auth';
diff --git a/apps/user/services/common/typings.d.ts b/apps/user/services/common/typings.d.ts
index e91d415..9b3c09c 100644
--- a/apps/user/services/common/typings.d.ts
+++ b/apps/user/services/common/typings.d.ts
@@ -195,7 +195,7 @@ declare namespace API {
};
type GetAvailablePaymentMethodsResponse = {
- list: PaymenMethod[];
+ list: PaymentMethod[];
};
type GetGlobalConfigResponse = {
@@ -328,7 +328,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
- method: string;
+ payment: PaymentMethod;
fee_amount: number;
trade_no: string;
status: number;
@@ -350,6 +350,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
+ payment: PaymentMethod;
method: string;
fee_amount: number;
trade_no: string;
@@ -360,17 +361,6 @@ declare namespace API {
updated_at: number;
};
- type PaymenMethod = {
- id: number;
- name: string;
- platform: string;
- description: string;
- icon: string;
- fee_mode: number;
- fee_percent: number;
- fee_amount: number;
- };
-
type PaymentConfig = {
id: number;
name: string;
@@ -385,6 +375,17 @@ declare namespace API {
enable: boolean;
};
+ type PaymentMethod = {
+ id: number;
+ name: string;
+ platform: string;
+ description: string;
+ icon: string;
+ fee_mode: number;
+ fee_percent: number;
+ fee_amount: number;
+ };
+
type PaymentMethodDetail = {
id: number;
name: string;
diff --git a/apps/user/services/user/index.ts b/apps/user/services/user/index.ts
index f988131..12fe8d0 100644
--- a/apps/user/services/user/index.ts
+++ b/apps/user/services/user/index.ts
@@ -1,5 +1,5 @@
// @ts-ignore
-
+
// API 更新时间:
// API 唯一标识:
import * as announcement from './announcement';
diff --git a/apps/user/services/user/typings.d.ts b/apps/user/services/user/typings.d.ts
index f73f042..93a654e 100644
--- a/apps/user/services/user/typings.d.ts
+++ b/apps/user/services/user/typings.d.ts
@@ -204,7 +204,7 @@ declare namespace API {
};
type GetAvailablePaymentMethodsResponse = {
- list: PaymenMethod[];
+ list: PaymentMethod[];
};
type GetLoginLogParams = {
@@ -354,7 +354,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
- method: string;
+ payment: PaymentMethod;
fee_amount: number;
trade_no: string;
status: number;
@@ -376,6 +376,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
commission?: number;
+ payment: PaymentMethod;
method: string;
fee_amount: number;
trade_no: string;
@@ -386,17 +387,6 @@ declare namespace API {
updated_at: number;
};
- type PaymenMethod = {
- id: number;
- name: string;
- platform: string;
- description: string;
- icon: string;
- fee_mode: number;
- fee_percent: number;
- fee_amount: number;
- };
-
type PaymentConfig = {
id: number;
name: string;
@@ -411,6 +401,17 @@ declare namespace API {
enable: boolean;
};
+ type PaymentMethod = {
+ id: number;
+ name: string;
+ platform: string;
+ description: string;
+ icon: string;
+ fee_mode: number;
+ fee_percent: number;
+ fee_amount: number;
+ };
+
type PaymentMethodDetail = {
id: number;
name: string;
@@ -588,7 +589,7 @@ declare namespace API {
coupon: string;
coupon_discount: number;
fee_amount: number;
- payment: string;
+ payment: PaymentMethod;
status: number;
created_at: number;
token?: string;
diff --git a/bun.lockb b/bun.lockb
index 71fc117..0037f43 100755
Binary files a/bun.lockb and b/bun.lockb differ