2017-10-04 32 views
0

私はFirebase DatabaseとPayPalでIonic 3を使って支払いしています。私のアプリケーションでは、ユーザーは、アプリケーション(マーケットプレイス)上の他のユーザーから提供されたPayPalのリストを介して購入することができます。私は自分のデータベースに実装する必要のある正しいFirebaseデータベースのルールに問題がありました。Ionic3 + Firebaseデータベースセキュリティ+ PayPal

一方、特定のリスティングを購入した場合、買い手はリスティングのステータスをSOLDに更新する必要があります(他の誰もそれを購入しないようにする必要があります)。一方、リスティングの所有者は、リスティングを編集する権限を持つ必要があります。私のジレンマを本当に解決していない現在のルールがあります。

"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

支払い処理を実行するクラウド機能を作成し、支払いが成功した場合はリストを売却済みとしてマークする必要があります。たとえば、user-purchases/{uid}/{listing}onCreateイベントリスナーを作成し、トリガーされたときに支払いを試みることができます。

お支払いが成功した場合は、user-purchases/{uid}/{listing}に他の購入固有の情報とともに書き込んでください。firebase-adminを使用して、リストのステータスを販売済みに設定し、その他の結果的な処置を行ってください。

支払いが失敗した場合は、PayPalから返されたエラーメッセージを書き込みます。

+0

バックエンドからPayPalプラグインを呼び出すにはどうすればよいですか?ネイティブプラグインhttp://ionicframework.com/docs/native/paypal/を使用しています。ユーザー/バイヤーがフロントエンドからPayPalを呼び出して、返されたオブジェクトをクラウド機能に渡して、後で処理して管理者としてデータベースに書き込む方法はありますか? – Dimitri

関連する問題