Comment implémenter le paiement Stripe dans Firestore sans utiliser firebase.auth
P粉731861241
2023-09-01 22:10:29
<p>J'essaie d'utiliser les paiements Stripe dans mon application node.js pour vendre des produits aux utilisateurs sur WhatsApp. </p>
<p>J'ai installé l'extension Stripe : stripe/firestore-stripe-payments@0.3.3 et suivi les instructions de la documentation : </p>
<pre class="brush:php;toolbar:false;">const docRef = attendre la base de données
.collection('clients')
.doc (utilisateur actuel.uid)
.collection('checkout_sessions')
.ajouter({
prix : 'price_1GqIC8HYgolSxxxxxxxxx',
success_url : window.location.origin,
Cancel_url : window.location.origin,
});
// Attendez que l'extension attache CheckoutSession
docRef.onSnapshot((instantané) => {
const { erreur, url } = snap.data();
si (erreur) {
// Affiche l'erreur au client et vérifie les journaux de la fonction cloud dans la console Firebase.
alert(`Une erreur s'est produite : ${error.message}`);
}
si (url) {
// Nous avons une URL Stripe Checkout, redirigeons.
window.location.assign(url);
}
});</pré>
<p>Je reçois l'erreur suivante dans la console cloud : </p>
<p><code>❗️[Erreur] : échec de la création d'une session de paiement pour le document [maxxxxxxxxxA] : l'identifiant fourni n'a pas d'enregistrement utilisateur correspondant. </code></p>
<p>J'ai découvert que je devais utiliser l'ID utilisateur de l'authentification Firebase, mais comme j'exécute mon service dans une fonction (serveur backend), il n'y a pas de client/utilisateur dans l'authentification. </p>
<p>Existe-t-il un autre moyen de créer des liens de paiement Stripe (individuels) ? Existe-t-il un moyen d'utiliser l'authentification Firebase sans client ? </p>
<p>Merci d'avance. </p>
<p>J'ai essayé d'utiliser auth,</p>
<pre class="brush:php;toolbar:false;">importer { getAuth } depuis "firebase/auth" ;
const auth = getAuth();
const user = auth.currentUser;</pre>
<p>Mais j'obtiens l'erreur suivante : <code>FirebaseError : Firebase : Option requise lors du déploiement sur un hébergement sans source. (application/pas d'options)</code></p>
<p>J'ai essayé ceci : https://stackoverflow.com/a/74732162/21612440</p>
<p>et get<code>TypeError : impossible de lire la propriété 'getProvider' d'un élément non défini (lire 'getProvider')</code></p>
Les fonctions Cloud (en principe) s'exécutent sans le contexte de l'utilisateur actuellement authentifié. Par conséquent, dans les fonctions cloud,
auth.currentUser
n’a presque aucun sens puisque chaque requête peut provenir d’un utilisateur différent.Cependant, vous pouvez transmettre n'importe quel UID de votre choix à la base de données Firestore ici
.doc(currentUser.uid)
. Donc, si vous pouvez déterminer l'UID pertinent d'une autre manière (sûre), vous pouvez transmettre cette valeur et l'extension Stripe la gérera pour ceutilisateur.