【问题标题】:Ionic3 + Firebase Database security + PayPalIonic3 + Firebase 数据库安全 + PayPal
【发布时间】:2017-10-04 21:09:22
【问题描述】:

我正在使用 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 的后端做到这一点?任何有关如何解决此问题的建议将不胜感激!非常感谢!

【问题讨论】:

  • 您当前的规则有什么问题? IE。哪些操作(首选代码)被允许但不应该(反之亦然)?

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


【解决方案1】:

您应该创建一个云函数来执行付款处理,并在付款成功时将商品标记为已售出。例如,您可以为user-purchases/{uid}/{listing} 创建一个onCreate 事件侦听器,当触发该事件侦听器时会尝试付款。

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

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

【讨论】:

  • 如何从后端调用 PayPal 插件?我正在使用本机插件ionicframework.com/docs/native/paypal。用户/买家是否可以从前端调用 PayPal,然后将返回的对象传递给 Cloud Function 进行进一步处理并以管理员身份写入数据库?
猜你喜欢
  • 2018-05-02
  • 2018-02-02
  • 2016-09-16
  • 2018-08-27
  • 2020-08-08
  • 2021-12-22
  • 2018-12-15
  • 1970-01-01
相关资源
最近更新 更多