在Firestore中實作Stripe支付的方法,無需使用firebase.auth
P粉731861241
P粉731861241 2023-09-01 22:10:29
0
1
495
<p>我正在嘗試在我的node.js應用程式中使用Stripe支付,在whatsapp上向用戶銷售產品。 </p> <p>我安裝了stripe擴充功能:stripe/firestore-stripe-payments@0.3.3,並且依照文件中的說明進行了操作:</p> <pre class="brush:php;toolbar:false;">const docRef = await db .collection('customers') .doc(currentUser.uid) .collection('checkout_sessions') .add({ price: 'price_1GqIC8HYgolSxxxxxxxxx', success_url: window.location.origin, cancel_url: window.location.origin, }); // 等待擴充附加CheckoutSession docRef.onSnapshot((snap) => { const { error, url } = snap.data(); if (error) { // 向客戶顯示錯誤,並在Firebase控制台中檢查雲端函數日誌。 alert(`發生錯誤:${error.message}`); } if (url) { // 我們有一個Stripe Checkout URL,讓我們重新導向。 window.location.assign(url); } });</pre> <p>我在雲端控制台中收到以下錯誤:</p> <p><code>❗️[錯誤]:為文件[maxxxxxxxxxA]建立Checkout會話失敗:提供的識別碼沒有對應的使用者記錄。 </code></p> <p>我發現我需要使用來自Firebase身份驗證的userId,但由於我在函數(後端伺服器)中運行我的服務,所以在auth中沒有客戶端/用戶。 </p> <p>是否有另一種方法來建立(個別的)stripe結帳連結?是否有一種在沒有客戶端的情況下使用Firebase身份驗證的方法? </p> <p>提前感謝。 </p> <p>我嘗試使用auth,</p> <pre class="brush:php;toolbar:false;">import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser;</pre> <p>但我收到以下錯誤:<code>FirebaseError: Firebase: 需要提供選項,當不透過來源部署到託管時。 (app/no-options)</code></p> <p>我嘗試了這個:https://stackoverflow.com/a/74732162/21612440</p> <p>並且得到<code>TypeError: 無法讀取未定義的屬性'getProvider'(讀取'getProvider')</code></p>
P粉731861241
P粉731861241

全部回覆(1)
P粉821274260

雲端函數(原則上)在沒有目前經過身份驗證的使用者上下文的情況下運行。因此,在雲端函數中,auth.currentUser幾乎沒有意義,因為每個請求可能來自不同的使用者。

但是,您可以將任何您想要的UID傳遞到這裡的Firestore資料庫.doc(currentUser.uid)。因此,如果您可以以某種其他(安全)方式確定相關的UID,您可以傳遞該值,Stripe擴充將為使用者處理它。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板