如何修复 React-Native 中的 Firebase Cloud Functions 错误请求?

How to fix a Firebase Cloud Functions Bad Request in React-Native?

我对 Firebase 云功能相当陌生,我一直在尝试使用 FB 将 Stripe 集成到我的 RN 项目中,但一直收到错误的请求响应。当我尝试 运行 这个时,我会看到一些东西:

  1. 请求缺少正文。
  2. 请求无效,无法处理。
  3. 错误请求 (400)。

有人知道我应该从这里去哪里吗?

在我的 index.js 文件中:

exports.payWithStripe = functions.https.onCall(async (data, response) => {

try {
    const paymentIntent = await stripe.paymentIntents.create({
        data: {
            amount: 100,
            currency: "usd",
            payment_method_types: ["card"]
        }
    });

    const clientSecret = paymentIntent.client_secret;

    response.json({
        clientSecret: clientSecret,
    })
} catch (e) {
    console.log(e.message);
    response.json({ error: e.message });
}

})

在应用端:

const fetchPaymentIntentClientSecret = async () => {
    const response = await fetch(`${FUNCTION_URL}/create-payment-intent`, {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
    });

    const { clientSecret, error } = await response.json();
    return { clientSecret, error };

}

您的云函数是 Callable Cloud Function, as we can see from the code: functions.https.onCall(). As explained in the doc "HTTPS callable functions are similar but not identical to HTTP functions"

您应该使用 JS SDK 的特定方法从您的应用中调用它,如 here 所述。

可以通过 fetch(或用于从浏览器制作 XMLHttpRequests 的任何其他库)调用它,但是您需要遵循 Protocol specification for https.onCall,这并不简单。所以强烈推荐使用SDK。