fix stripe payment flow

This commit is contained in:
2026-04-09 22:52:57 -06:00
parent 4d91d8b331
commit ae0ccfd45b
8 changed files with 66 additions and 40 deletions

View File

@@ -11,12 +11,14 @@ import {
useStripe,
useElements,
} from "@stripe/react-stripe-js";
import { apiCompleteCheckout } from "@/lib/cartApi";
const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY || "");
function PaymentForm({ clientSecret, totalAmount, onSuccess, onCancel }) {
const stripe = useStripe();
const elements = useElements();
const { token } = useAuth();
const [paying, setPaying] = useState(false);
const [payError, setPayError] = useState(null);
@@ -34,9 +36,14 @@ function PaymentForm({ clientSecret, totalAmount, onSuccess, onCancel }) {
if (error) {
setPayError(error.message);
setPaying(false);
}
}
else {
const paymentIntentId = clientSecret.split("_secret_")[0];
try {
await apiCompleteCheckout(token, paymentIntentId);
} catch {
}
onSuccess();
}
}
@@ -159,7 +166,7 @@ export default function CartPage() {
setCheckoutLoading(true);
setCheckoutError(null);
try {
const result = await checkout("pm_card_visa");
const result = await checkout();
if (result?.clientSecret) {
setClientSecret(result.clientSecret);
setCheckoutTotal(result.totalAmount);