firebase - Ionic3 + Firebase 数据库安全 + PayPal

标签 firebase paypal firebase-realtime-database ionic3 firebase-security

我使用 Ionic 3 与 Firebase 数据库和 PayPal 进行支付。在我的应用程序中,用户可以通过应用程序(市场)上其他用户提供的 Paypal 列表进行购买。我遇到了需要为我的数据库实现的正确 Firebase 数据库规则的问题。

一方面,当给定的listing被购买时,买家需要将listing的状态更新为SOLD(这样就没有其他人再次购买)。另一方面,列表的所有者应该被授权编辑他/她的列表。我现在拥有的规则并不能真正解决我的困境。

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

也许有一种方法可以从 Firebase Functions 的后端做到这一点?将不胜感激有关如何解决此问题的任何建议!非常感谢!

最佳答案

您应该创建一个执行支付处理并在支付成功后将列表标记为已售出的 Cloud Functions。例如,您可以为 user-purchases/{uid}/{listing} 创建一个 onCreate 事件监听器,当它被触发时将尝试付款。

如果支付成功,将交易 ID 连同任何其他购买特定信息一起写回 user-purchases/{uid}/{listing},并使用 firebase-admin 将列表状态设置为已售出,并执行任何其他相应操作。

否则,如果支付失败,写入PayPal返回的错误信息。

关于firebase - Ionic3 + Firebase 数据库安全 + PayPal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565112/

相关文章:

android - Firebase 归因跟踪

ios - Value of type 'QuerySnapshot' has no member 会出现 'data'错误

php - PayPal 的 PayPal 沙盒在确认时挂起

ios - 闭包无法隐式捕获变异的 self 参数

javascript - 谷歌助手的事实应用程序

android - Firebase 崩溃报告电子邮件

php - Magento:删除 "paypal/express/review"步骤的简单方法

javascript - Parse.com 和 Paypal 整合

listview - NativeScript Angular 2 Firebase 列表不起作用

swift - 从 firebase 数据库查询数据时的奇怪行为