fix(subscription): return chat paywalls after payment

This commit is contained in:
2026-06-25 10:20:13 +08:00
parent 9555a173b5
commit c8f0827e40
7 changed files with 58 additions and 14 deletions
@@ -24,11 +24,13 @@ export interface SubscriptionCheckoutButtonProps {
/** 是否可用(未选套餐 / 未勾选协议 → false) */
disabled?: boolean;
subscriptionType: "vip" | "voice";
returnTo?: "chat" | null;
}
export function SubscriptionCheckoutButton({
disabled = false,
subscriptionType,
returnTo = null,
}: SubscriptionCheckoutButtonProps) {
const payment = usePaymentState();
const paymentDispatch = usePaymentDispatch();
@@ -67,6 +69,7 @@ export function SubscriptionCheckoutButton({
orderId: payment.currentOrderId,
paymentUrl,
subscriptionType,
returnTo,
onFailed: (errorMessage) =>
paymentDispatch({ type: "PaymentLaunchFailed", errorMessage }),
});
@@ -87,6 +90,7 @@ export function SubscriptionCheckoutButton({
payment.launchNonce,
payment.payParams,
paymentDispatch,
returnTo,
subscriptionType,
]);
@@ -150,6 +154,7 @@ export function SubscriptionCheckoutButton({
orderId: payment.currentOrderId,
paymentUrl: ezpayPaymentUrl,
subscriptionType,
returnTo,
onFailed: (errorMessage) => {
setIsConfirmingEzpay(false);
paymentDispatch({ type: "PaymentLaunchFailed", errorMessage });
@@ -241,6 +246,7 @@ interface RedirectToEzpayInput {
orderId: string | null;
paymentUrl: string;
subscriptionType: "vip" | "voice";
returnTo?: "chat" | null;
onFailed: (errorMessage: string) => void;
}
@@ -248,6 +254,7 @@ async function launchEzpayRedirect({
orderId,
paymentUrl,
subscriptionType,
returnTo,
onFailed,
}: RedirectToEzpayInput): Promise<void> {
log.debug("[subscription-checkout] launchEzpayRedirect START", {
@@ -272,6 +279,7 @@ async function launchEzpayRedirect({
orderId,
payChannel: "ezpay",
subscriptionType,
...(returnTo ? { returnTo } : {}),
createdAt: Date.now(),
});
if (Result.isErr(saveResult)) {