0

Dans mon application, les utilisateurs sont en mesure d'acheter via des listes PayPal offertes par d'autres utilisateurs sur l'App (marketplace). J'ai rencontré des problèmes avec les bonnes règles de base de données Firebase que je dois implémenter pour ma base de données. D'une part, quand une liste donnée est achetée, l'acheteur doit mettre à jour le statut de la liste à VENDU (afin que personne d'autre ne l'achète à nouveau). D'autre part, sur le propriétaire de la liste devrait être autorisé à modifier sa liste. Il y a les règles que j'ai en ce moment, qui ne résolvent pas vraiment mon dilemme.Ionic3 + Firebase Base de données de sécurité + PayPal

"explore": { 
     ".read": "auth.provider === 'facebook'", 
     "$listing": { 
     ".write": "auth.provider === 'facebook' && ((!data.exists() && newData.exists()) || root.child('explore/'+$listing+'/UID').val() === auth.uid)", 
     } 
    }, 

Peut-être y a-t-il un moyen de le faire depuis le backend de Firebase Functions? Tout conseil sur la façon de résoudre ce problème sera grandement apprécié! Merci beaucoup!

+0

Quel est le problème avec vos règles actuelles? C'est à dire. quelle action (code préféré) est autorisé qui ne devrait pas être (ou vice versa)? –

Répondre

1

Vous devez créer une fonction Cloud qui effectue le traitement des paiements et marque la liste telle que vendue si le paiement a réussi. Par exemple, vous pouvez créer un écouteur d'événement onCreate pour user-purchases/{uid}/{listing} qui, lorsqu'il est déclenché, tente de payer.

Si le paiement est un succès, écrivez l'ID de transaction à user-purchases/{uid}/{listing} avec toute autre information spécifique à l'achat, et en utilisant firebase-admin définissez le statut de la liste telle que vendue, et effectuez toute autre action corrélative.

Sinon, si le paiement échoue, écrivez le message d'erreur renvoyé par PayPal.

+0

Comment puis-je appeler le plugin PayPal à partir du backend? J'utilise Native Plugin http://ionicframework.com/docs/native/paypal/. Existe-t-il un moyen pour l'utilisateur/l'acheteur d'appeler PayPal à partir de l'interface client, puis de transmettre l'objet retourné à la fonction Cloud pour traitement ultérieur et écriture dans la base de données en tant qu'administrateur? – Dimitri