Cara melaksanakan pembayaran Stripe dalam Firestore tanpa menggunakan firebase.auth
P粉731861241
2023-09-01 22:10:29
<p>Saya cuba menggunakan pembayaran Stripe dalam apl node.js saya untuk menjual produk kepada pengguna di whatsapp. </p>
<p>Saya memasang sambungan jalur: stripe/firestore-stripe-payments@0.3.3 dan mengikut arahan dalam dokumentasi: </p>
<pre class="brush:php;toolbar:false;">const docRef = tunggu db
.collection('pelanggan')
.doc(currentUser.uid)
.collection('checkout_sessions')
.Tambah({
harga: 'harga_1GqIC8HYgolSxxxxxxxxx',
success_url: window.location.origin,
cancel_url: window.location.origin,
});
// Tunggu sambungan untuk melampirkan CheckoutSession
docRef.onSnapshot((snap) => {
const { ralat, url } = snap.data();
jika (ralat) {
// Paparkan ralat kepada klien dan semak log fungsi awan dalam konsol Firebase.
alert(`Ralat berlaku: ${error.message}`);
}
jika (url) {
// Kami mempunyai URL Stripe Checkout, mari kita ubah hala.
window.location.assign(url);
}
});</pre>
<p>Saya menerima ralat berikut dalam konsol awan: </p>
<p><kod>❗️[Ralat]: Gagal membuat sesi Checkout untuk dokumen [maxxxxxxxxxA]: Pengecam yang diberikan tidak mempunyai rekod pengguna yang sepadan. </code></p>
<p>Saya mendapati bahawa saya perlu menggunakan userId daripada Firebase Authentication, tetapi memandangkan saya menjalankan perkhidmatan saya dalam fungsi (pelayan belakang), tiada klien/pengguna dalam pengesahan. </p>
<p>Adakah terdapat cara lain untuk membuat pautan daftar keluar (individu)? Adakah terdapat cara untuk menggunakan Pengesahan Firebase tanpa pelanggan? </p>
<p>Terima kasih terlebih dahulu. </p>
<p>Saya cuba menggunakan pengesahan,</p>
<pre class="brush:php;toolbar:false;">import { getAuth } daripada "firebase/auth";
const auth = getAuth();
pengguna const = auth.currentUser;</pre>
<p>Tetapi saya mendapat ralat berikut: <kod>FirebaseError: Firebase: Pilihan diperlukan semasa mengatur penggunaan ke pengehosan tanpa sumber. (apl/tiada-pilihan)</kod></p>
<p>Saya mencuba ini: https://stackoverflow.com/a/74732162/21612440</p>
<p>dan dapatkan<kod>TypeError: Tidak boleh membaca sifat 'getProvider' yang tidak ditentukan (baca 'getProvider')</code></p>
Fungsi awan (pada dasarnya) berjalan tanpa konteks pengguna yang sedang disahkan. Oleh itu, dalam fungsi awan,
auth.currentUser
hampir tidak bermakna kerana setiap permintaan mungkin datang daripada pengguna yang berbeza.Walau bagaimanapun, anda boleh menghantar mana-mana UID yang anda mahu ke pangkalan data Firestore di sini
.doc(currentUser.uid)
. Jadi, jika anda boleh menentukan UID yang berkaitan dengan cara lain (selamat), anda boleh lulus nilai itu dan sambungan Stripe akan mengendalikannya untuk pengguna itu.