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}에 트랜잭션 ID를 다시 쓰고 firebase-admin을 사용하여 판매 상태를 판매로 설정하고 기타 필연적 인 조치를 수행하십시오.

그렇지 않으면 지불이 실패하면 PayPal에서 반환 한 오류 메시지를 작성하십시오.

+0

백엔드에서 PayPal 플러그인을 호출하려면 어떻게해야합니까? Native Plugin http://ionicframework.com/docs/native/paypal/을 사용하고 있습니다. 사용자/구매자가 프론트 엔드에서 PayPal을 호출 한 다음 반환 된 객체를 클라우드 기능에 전달하여 추가 처리하고 관리자로 데이터베이스에 쓸 수있는 방법이 있습니까? – Dimitri