2013-05-05 31 views
7

Buduję aplikację internetową, która umożliwia naszym użytkownikom sprzedaż biletów na koncerty muzyczne. Aby obsłużyć płatności między kupującymi bilety i pokazywać podżegaczy, używam Stripe. Zasadniczo program uruchamiający show tworzy stronę swojego programu w mojej aplikacji, a użytkownicy mogą kupować bilety na ten program.Pasek: Sprawdzanie poprawności publikowanych i tajnych kluczy interfejsu API

Aby stworzyć spektakl, osoba inicjująca wypełnia formularz (nazwa spektaklu, data pokazu, miejsce, w którym odbędzie się pokaz, jakie zespoły będą grać itp.) Ta forma wymaga również inicjatora pokazu jego klucze Publishable i Secret Stripe. Moja aplikacja używa obu tych tokenów do pobierania informacji o karcie kredytowej (po stronie klienta) i przetwarzania płatności (po stronie serwera).

Problem polega na tym, że chcę się upewnić, że inicjatorzy show podali ważne i istniejące klucze pasków. Nie chcę, aby moi użytkownicy natknęli się na błędy w płatnościach, ponieważ inicjatorzy show nie dostarczyli prawidłowych kluczy w paski.

Moje pytanie brzmi: Jak mogę sprawdzić, czy klucze Publishable i Secret są poprawne i istniejące? Jaka jest najlepsza strategia, aby to osiągnąć? Dzięki!

Odpowiedz

0

Nie znam żadnego udokumentowanego wywołania api, które może zostać wykonane specjalnie w celu sprawdzania poprawności kluczy. Oto sugestia, którą możesz wypróbować:

Poproś swoich partnerów o dostarczenie ważnej karty kredytowej i poinformuj ich, że w celu sprawdzenia ich kluczy paskowych, dokonasz opłaty 0,50 USD za swoją kartę, która zostanie natychmiast zwrócona.

W ramach sprawdzania formularza, po podaniu obu kluczy, submit a hidden form, który zawiera wszystkie dane niezbędne do utworzenia tokena karty. Powinieneś być w stanie zbadać odpowiedź w swoim create card token response handler i ustalić, czy klucz do publikacji jest prawidłowy.

Jeśli otrzymasz pomyślną odpowiedź od serwera pasków zawierającego token karty, skręć w prawo i submit a test charge za 0,50 USD (minimalna kwota doładowania).

Upewnij się, że prawidłowo łapiesz wszystkie wyjątki pasków. Wierzę, że z nieprawidłowym kluczem tajnym, powinieneś złapać Stripe_InvalidRequestError. Jeśli zostanie zgłoszony wyjątek, możesz zgłosić to użytkownikowi.

Jeśli nie zostaną zgłoszone żadne błędy, zostanie naliczona opłata. Ponieważ nie chcesz obciążać swoich partnerów, będziesz chciał przechwycić identyfikator obciążenia z odpowiedzi na pasek i natychmiast refund the charge.

+0

Proste, czyste wyjaśnienie. Wielkie dzięki! Chociaż to rozwiązanie jest poprawne, właśnie odkryłem Strip Connect https://stripe.com/docs/connect. Jest o wiele bezpieczniejsze i prostsze niż samodzielne zarządzanie kluczami API. – spg

8

Gotowy!

Aby zweryfikować swoje klucze do publikacji, wystarczy poprosić pasek o nowy token za pomocą cURL. Jeśli podany klucz jest nieprawidłowy, odpowiedź będzie zawierała komunikat o błędzie zaczynający się od "Podano nieprawidłowy klucz API".

Oto przykład napisany w PHP:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://api.stripe.com/v1/tokens"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2017&card[cvc]=123"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_USERPWD, $publishableKey . ":"); 

$response = json_decode(curl_exec($ch),true); 

if(curl_errno($ch)){ 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch); 

if(substr($response["error"]["message"],0, 24) == "Invalid API Key provided"){ 
    echo "Invalid API Key provided"; 
} 

sam pomysł na sprawdzanie swoich tajnych kluczy.

+0

Po dotarciu do tego punktu końcowego pojawia się komunikat "Nierozpoznany adres URL żądania (GET:/v1/tokeny). Proszę zobaczyć https://stripe.com/docs lub możemy pomóc na https://support.stripe.com/. "' '' –

+2

@AdamParkin/v1/tokeny akceptuje tylko POST, a nie żądania GET. 'curl_setopt ($ ch, CURLOPT_POST, true)' zbyt – Niall

+0

Nie działa z post $ url = „https://api.stripe.com/v1/tokens?key='.$publishableKey;. "error" : { "type": "invalid_request_error", "message": "Musisz podać kartę, klienta, dane pii lub konto bankowe, aby utworzyć token." } – Savoo