我使用 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/