我正在使用stripe进行开发。我创建了一个 checkout 会话,但出现了以下错误。如何解决此问题?
Access to fetch at 'https://xxx.cloudfunctions.net/createCheckoutSession' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
src/Purchase.ts
import React from "react";
import { httpsCallable } from "firebase/functions";
import { functions } from "../firebase";
function Purchase() {
// ...
const createCheckoutSession = httpsCallable(functions, "createCheckoutSession");
createCheckoutSession({
priceId: "price id",
});
}
export default Purchase;
functions/indes.ts
import * as functions from "firebase-functions";
从“stripe”导入Stripe;
const stripe = new Stripe(functions.config().stripe.secret, {
apiVersion: "2022-11-15",
});
export const createCheckoutSession = () => functions
.region("asia-northeast1")
.https.onCall(async (data) => {
const priceId = data.priceId;
const session = await stripe.checkout.sessions.create({
line_items: [{
price: priceId,
quantity: 1,
}],
mode: "payment",
success_url: "",
cancel_url: "",
payment_method_types: ["card"],
});
return session;
});
src/firebase.ts
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getStorage } from "firebase/storage";
import { getAuth } from "firebase/auth";
import { getFunctions } from "firebase/functions";
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_APIKEY,
authDomain: process.env.REACT_APP_FIREBASE_DOMAIN,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_FIREBASE_SENDER_ID ,
appId: process.env.REACT_APP_FIREBASE_APP_ID,
};
const app = initializeApp(firebaseConfig);
export const db = getFirestore(app);
export const storage = getStorage(app);
export const auth = getAuth(app);
export const functions = getFunctions(app, "asia-northeast1");
export default app;
1条答案
按热度按时间fnvucqvd1#
功能未展开。
之前
之后