Połączenie Partnera z serwisem JustPay poprzez
Transkrypt
Połączenie Partnera z serwisem JustPay poprzez
Połączenie Partnera z serwisem JustPay poprzez - METODĘ 2 Generowanie kodów: po stronie Partnera Weryfikacja kodów: po stronie Partnera Spis treści 1. Kolejne kroki w stworzeniu własnego serwisu 2. Jak skonfigurować i wdrożyć przykładowe lub własne skrypty 3. Sposób generacji kodów + przykłady 1. Kolejne kroki w stworzeniu własnego serwisu 1. Rejestracja w serwisie JustPay i poczekanie na maila potwierdzającego rejestrację. 2. Po zalogowaniu - zdefiniowanie komend oraz numerów SMS Premium. a. zakładka 'komendy' - przycisk 'dodaj nową komendę' b. wybrać prefiks z listy i sufiks komendy c. zatwierdzić przyciskiem 'OK' (system automatycznie przekieruje do punktu 3) 3. Dodanie numeru do komendy (link 'dodaj numer' w zakładce 'komendy') a. wybór numeru SMS Premium z listy dostępnych b. wybór metody generacji; w tym przypadku: 'Metoda 2' c. przygotowanie opisu URL zgodnie ze schematem. URL ma kierować do skryptu, znajdującego się u Partnera, generującego kody d. definicja SMS'a zwrotnego: w okienku należy wpisać treść SMS'a zwrotnego; ciąg znaków '$1' zostanie zastąpiony jednym z kodów z paczki e. zatwierdzenie numeru przyciskiem 'OK' 4. Po zdefiniowaniu wszystkich potrzebnych numerów (można ich dodać więcej niż jeden), należy zamówić aktywację komendy. 5. Po zaakceptowaniu komendy przez administratora systemu, użytkownik zostanie poinformowany e-mail'em. Podczas oczekiwania na akceptację można przystąpić do realizacji dalszych kroków – przygotowanie skryptów do generacji i weryfikacji kodów. Po otrzymaniu przez system JustPay SMSa Użytkownika: 1. Justpay analizuje opis URL, generuje odpowiedni link i pobiera kod od Partnera ("puka" metodą GET w serwer Partnera). 2. Partner zwraca wygenerowany kod (ew. treść SMS-a). 3. Justpay odsyła SMS-a Użytkownikowi z dostarczonym kodem (ew. treścią). 4. Użytkownik wpisuje kod na stronie www Partnera 5. Partner sprawdza, czy kod wpisany przez klienta jest taki sam, jaki został wysłany do JustPay. 6. Jeśli kod jest prawidłowy, Partner zezwala na dostęp do chronionych treści. 2. Jak skonfigurować i wdrożyć przykładowe lub własne skrypty 1. Utworzenie skryptu generującego kody. Generacja kodów może być uzależniona od komendy, numeru SMS Premium itp. Dodatkowo do skryptu można przekazywać treść sms'a i numeryczny identyfikator wiadomości. Opis URL utworzony w punkcie 4 powinien kierować na ten właśnie skrypt i powinien dostarczać odpowiednich parametrów metodą GET. W szczególnym przypadku, można za każdym razem zwracać taką samą treść SMS'a (bez generacji kodu) - umożliwia to realizację stron typu 'płatne ogłoszenia przez SMS'. 2. Przygotowanie strony zabezpieczonej. Sposób zabezpieczenia jest w dużej mierze zależny od tego jak został zrealizowany skrypt w pkt 1 powyżej. 3. Dla metody tej przygotowano przykładowe skrypty: a. plik sms_import.php realizuje przykładowy 'generator' odpowiedzi zwrotnych b. ExampleKeyResponse.php - klasa implementująca przykładowy generator. W celu dostosowania skryptu do własnych potrzeb, wystarczy rozszerzyć klasę ExampleKeyResponse i przeciążyć odpowiednio metody getSmsText() oraz getCode(). c. Metod a validate() została rozszerzona o zapis informacji : - Numer LA – numer na który został wysłany sms, - smscode – kod który zwracany jest w smsie zwrotnym - msisdn – numer telefonu z którego wysłany został sms - text – treść smsa wysłanego przez użytkownika informacje te zapisywane są w bazie mysql w celu późniejszej weryfikacji przy logowaniu się przez użytkownika do części zamkniętej swerwisu Informacje gromadzone w trakcie rejestracji przechowywane są w tabeli o następującej strukturze: CREATE TABLE `registered` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `la` VARCHAR(50) NOT NULL, `code` VARCHAR(50) NOT NULL, `msisdn` VARCHAR(14) NOT NULL, `txt` VARCHAR(50) NOT NULL, `session_start` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `used` TINYINT(1) NOT NULL, PRIMARY KEY (`code`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM ROW_FORMAT=DEFAULT 3. Sposób generacji kodów Generacja kodu (unikalnego hasła), za który użytkownik płaci jest skonstruowana w ten sposób, iż kody są pobierane każdorazowo z serwisu Partnera poprzez odpowiednio zbudowany URL. W celu uruchomienia zaawansowanego sposobu generacji kodów, należy przygotować dokument XML'owy z opisem URL'a. Dokument ten musi być zgodny ze schematem zamieszczonym pod adresem: http://data.avantis.pl/schema/urlDescription.xsd Jedynymi obowiązkowymi elementami są: proto (protokół) oraz host (nazwa domenowa lub IP komputera, który generuje kody), jednakże najprawdopodobniej użytkownik będzie wypełniał element path (pełna ścieżka do skryptu), oraz listę parametrów (elementy param). • Parametry Każdy parametr ma dwa obowiązkowe atrybuty: nazwę (name) oraz wartość (value - o prawidłowych wartościach niżej). Dodatkowo wartość można poddać dowolnej liczbie transformacji takich jak: - toUpper: zamiana wszystkich liter na wielkie, toLower: zamiana wszystkich liter na małe, trim: obcięcie białych znaków przed i za tekstem subst: zamiana ciągów znaków - transformacja z dwoma parametrami: a) regex: wyrażenie regularne (wzorzec) b) replace: wyrażenie, na którym ma zostać zastąpione wszystko co pasuje do wzorca • Wartości parametrów Wiadomości przetwarzane przez serwis "widziane są" jako obiekty. Wartością może być dowolne pole dostępne w dostarczonej wiadomości. Z punktu widzenia Użytkownika najbardziej przydatne pola to: - messageID - czyli unikalny identyfikator każdej wiadomości payload.operator.operatorCode - operator GSM payload.text - treść wiadomości (SMS'a) payload.sender - numer Użytkownika z którego wiadomość "przyszła" payload.recipient - numer na który wiadomość została przysłana payload.sendDate - data wysłania SMSa Wymieniono tylko podstawowe pola, które w większości przypadków w zupełności wystarczą do prawidłowego przetworzenia wiadomości i wygenerowania kodu. W razie potrzeby dostępu do dodatkowych informacji, prosimy o kontakt. Przykład 1 Powiedzmy, ze do generacji unikatowego hasła nie są potrzebne żadne informacje - skrypt generuje nowe kody przy każdym zapytaniu. Dodatkowo autor serwisu chce przechowywać w swojej bazie danych informacje o identyfikatorze wiadomości po stronie JustPay (na przykład dla ułatwienia obsługi reklamacji). Komunikacja ma zachodzić przy pomocy protokołu http, skrypt o nazwie generate.do jest umieszczony na komputerze przyklad1.pl. Zamierzony URL wygląda następująco: http://przyklad1.pl/generate.do?mid=XXX Gdzie XXX to identyfikator wiadomości po stronie JustPay. W celu uzyskania w/w funkcjonalności, należy przygotować następujący opis: <?xml version="1.0" encoding="UTF-8"?> <url xmlns="http://kody.avantis.pl/smscodes/schema/url" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://kody.avantis.pl/smscodes/schema/url http://data.avantis.pl/schema/urlDescription.xsd"> <proto>http</proto> <host>przyklad1.pl</host> <path>/generate.do</path> <param name="mid" value="messageID"/> </url> Przykład 2 Wraz z rozwojem serwisu, Klient może potrzebować więcej danych (jak na przykład wysłana komenda, czy też numer SMS Premium, na który został przysłany SMS - numer identyfikuje cenę, więc jest to informacja istotna). Przez analogię, wymagany URL to: http://przyklad2.pl/generate.jsp?la=XXX&command=YYY Gdzie XXX to numer, a YYY to komenda. W celu uzyskania w/w funkcjonalności, należy przygotować następujący opis: <?xml version="1.0" encoding="UTF-8"?> <url xmlns="http://kody.avantis.pl/smscodes/schema/url" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://kody.avantis.pl/smscodes/schema/url http://data.avantis.pl/schema/urlDescription.xsd"> <proto>http</proto> <host>przyklad1.pl</host> <path>/generate.do</path> <param name="la" value="payload.recipient"/> <param name="command" value="payload.text"> <trim/> <toUpper/> </param> </url> Użytkownik może dowolnie przekształcać za pomocą transformacji wartości przed generacją URL'a. Prawidłowa odpowiedź System po stronie Partnera powinien odpowiadać dokumentem XML zgodnym ze schematem zamieszczonym pod adresem: http://data.avantis.pl/schema/keyResponse.xsd Jedynym wymaganym elementem odpowiedzi jest wygenerowany kod. Dla przykładu, jeśli wygenerowanym kodem jest XY, to odpowiedź wyglądać powinna następująco: <?xml version="1.0" encoding="UTF-8"?> <keyResponse xmlns="http://kody.avantis.pl/smscodes/schema/keyResponse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://kody.avantis.pl/smscodes/schema/keyResponse http://data.avantis.pl/schema/keyResponse.xsd"> <code>XY</code> </keyResponse> W przypadku niezgodności odpowiedzi ze schematem, bądź też jakichkolwiek problemów komunikacyjnych (odpowiedź serwera inna niż 200, brak odpowiedzi, timeout, itp.) wiadomość przysłana przez Użytkownika zostaje opóźniona i przetworzona w późniejszym terminie. W przypadku powtarzających się problemów, Użytkownik może zostać wpisany na "czarną listę" - komunikaty są wtedy kolejkowane (opóźniane) aż do rozwiązania problemu, przy czym kolejne próby pozyskania kodu są coraz bardziej odległe od siebie. Aplikacja justpay.pl komunikuje się z Partnerem z poniższego zakresu IP: Network: 81.210.48.32/27 HostMin: 81.210.48.33 HostMax: 81.210.48.62 W razie pytań prosimy o kontakt: [email protected]