2015-04-28 11 views
6

Po pierwsze widzę tutaj kilka pytań Parse/Stripe, jednak żadne z nich mi nie pomogą.Aktualizacja Parse.com Użytkownik z Stripe Webhook

Mam aplikację mobilną, która ma zarówno darmowe, jak i płatne funkcje. Zmienna jest przechowywana w klasie User w Parse.com i jest sprawdzana pod kątem uprawnień podczas uruchamiania funkcji. Chciałbym skonfigurować portal kont (oddzielny od mojej aplikacji), więc gdy użytkownicy chcą się zarejestrować, są wysyłani do przeglądarki i mogą rejestrować się w abonamencie za pośrednictwem SSL itp. Itd.

Dla portalu kont mam dostęp Witryna Wordpress z wtyczką Stripe, która wykona dla mnie rachunkowość, fakturowanie i tworzenie formularzy.

Po rejestracji na stronie Wordpress chciałbym otrzymać webhook na Parse.com i uruchomić funkcję aktualizacji klasy User. W idealnym przypadku będzie to funkcja catch all, która zmieni użytkownika na wiele stanów w zależności od statusu konta (tj. Przestaną płacić, a plan zostanie wstrzymany).

Moje pytanie jest dwojakie:

  1. Jakie dane (URL itp) muszę umieścić w moich ustawieniach webhook paskiem wysłać wszystkie zdarzenia do mojego Parse.com kodu chmurze?

  2. Jak mogę otrzymać/uruchomić moją funkcję w kodzie Cloud po otrzymaniu webhooka od Parse.com?

Jestem otwarty na krytykę i pozostaję elastyczny w mojej implementacji, jeśli masz sugestie dotyczące działania mojej aplikacji.

Wielkie dzięki z góry.

Odpowiedz

5

Ok po pewnym eksperymentowaniu:

  1. stworzenia webhook na w obszarze Accounts Stripe pomocą adresu URL: https://**APPLICATION_ID**:javascript-key=**JAVASCRIPT_KEY**@api.parse.com/1/functions/update_user

  2. W kodzie cloud używanie tej samej nazwy funkcji w końcowej części twój adres URL. w moim przypadku update_user.

  3. Utwórz testową wersję webhook i umieścić to w kodzie cloud do testowania:

Parse.Cloud.define("update_user", function(request, response) { response.success('** WEBHOOK WORKING **' + request); });

Po uruchomieniu testu w desce rozdzielczej paskiem powinieneś zobaczyć:

enter image description here

Mam nadzieję, że to pomoże komuś - Byłbym wdzięczny za wszelkie uwagi, które ktoś ma do y implementacja lub łatwa funkcja do uruchomienia na mojej aktualizacji klasy User.

+0

Zobacz odpowiedź Geoffa McIvera poniżej. Jest to ogromne zagrożenie dla bezpieczeństwa, jeśli nie chcesz ujawniać użytkownikom programu Stripe dostępu do zapisu za pomocą nieuwierzytelnionego żądania w chmurze. – namuol

1

Głównie myślę, że twoje rozwiązanie będzie działać.

Myślę, że używanie klucza javascript może stanowić zagrożenie bezpieczeństwa, jeśli nie sprawdzasz poprawności zdarzeń pochodzących z pasków.

Twoje klucze javascript będą obecne na Twojej stronie internetowej. Ktoś może go pobrać i zadzwonić do funkcji kodu w chmurze. Użyłbym klucza głównego, więc znasz go tylko ze źródeł, którym ufasz. Mogą być w stanie zmienić ważne informacje rozliczeniowe.

W definicji funkcji w chmurze można sprawdzić, czy został użyty klucz główny.

Parse.Cloud.define('stripeEvents', function (request, response) { 
if (request.master){ 
    return response.success('stripeEvents - master'); 
} 
response.error('stripeEvents - must use master key');}); 
+0

Nie wiem, gdzie używasz klucza głównego? W jaki sposób sprawdzasz, czy żądanie pochodzi z paska? – Taylorsuk

+0

Używam go tutaj. Umieszczasz go w konfiguracji haka sieciowego na pasku. Jest to tajemnica i jest zapakowany w SSL ... Tak, jak wiesz, że pochodzi z paska https: // ** ID_POZIOMU ​​APLIKACJI **: **MASTER_KEY**@api.parse.com/1/functions/update_user –