我正在使用Ionic 3与Firebase数据库和PayPal进行付款。在我的应用程序中,用户可以通过App(marketplace)上的其他用户提供的PayPal列表进行购买。我遇到了需要为我的数据库实现的正确Firebase数据库规则的问题。
一方面,当购买给定的商品时,买家需要将商品的状态更新为已售出(以便其他人不会再次购买)。另一方面,应该授权列表的所有者编辑他/她的列表。我现在有一些规则,这些规则并没有真正解决我的困境。
"explore": {
".read": "auth.provider === 'facebook'",
"$listing": {
".write": "auth.provider === 'facebook' && ((!data.exists() && newData.exists()) || root.child('explore/'+$listing+'/UID').val() === auth.uid)",
}
},
也许有一种方法可以从Firebase功能的后端执行此操作?任何关于如何解决这个问题的建议将不胜感激!非常感谢!
答案 0 :(得分:1)
您应创建一个执行付款处理的云功能,并在付款成功时将商家信息标记为已售出。例如,您可以为onCreate
创建user-purchases/{uid}/{listing}
事件侦听器,触发后会尝试付款。
如果付款成功,请将交易ID写回user-purchases/{uid}/{listing}
以及任何其他购买特定信息,并使用firebase-admin
将商家信息的状态设置为已售出,并执行任何其他后续操作动作。
否则,如果付款失败,请写下PayPal返回的错误消息。