Integracja frameworku Wicket z serwisem Platnosci.pl.

Transkrypt

Integracja frameworku Wicket z serwisem Platnosci.pl.
Integracja frameworku Wicket z serwisem Platnosci.pl.
Paweł Wąsowski, 157702
1. Wprowadzenie
Niniejszy dokument powstał w trakcie realizacji projektu SzukamNeta.pl. Dokument zawiera
praktyczne wskazówki implementacyjne do integracji dowolnego systemu napisanego z
wykorzystaniem Framework Wicket z serwisem płatności.pl.
Platnosci.pl to serwis adresowany do wszystkich serwisów o charakterze e-commerce, które
dla swojej aktywności wymagają profesjonalnych rozwiązań płatniczych. Ciężko wyobrazić sobie
dzisiaj jakikolwiek serwis o charakterze biznesowym bez uwzględnienia w nim ewidencji płatności,
dlatego właściwa implementacja tego modułu jest bardzo ważna.
2. Konfiguracja konta Płatności.pl
2.1 Konto testowe
Pierwszym krokiem jest założenie nowego konta w serwisie Platnosci.pl. W tym celu udajemy się
na stronę https://www.platnosci.pl/paygw/register.jsp i wypełniamy formularz zgłoszeniowy.
Przy rejestracji należy obligatoryjnie podać dane istniejącej firmy, które przed
otwarciem konta będą autoryzowane. Jeżeli nieposiadany takiej firmy, wypełniamy
formularz danymi spełniającymi wymagania, a w polu uwagi wpisujemy, że prośbę o
udostępnienie danych do konta testowego.
Po zalogowaniu się do serwisu należy włączyć opcję transakcje testowe. Typ test służy do
generowania płatności testowych, środki pozyskane z takich transakcji nie są
przekazywane do Sklepu, typ ten nie wymaga żadnych dodatkowych parametrów dla
nowej płatności. Transakcje testowe są domyślnie wyłączone, są również automatycznie
blokowane po 2 dniach od ostatniego ich użycia. W celu przeprowadzania testów należy
aktywować ten rodzaj płatności za pomocą opcji „Moje sklepy” ! „Nazwa sklepu” ! „Lista
punktów płatności” ! „Nazwa punktu”, następnie zmieniamy status dla „Płatności
testowej” poprzez klikniecie w kolumnie „Stan”.
2.2 Budowa adresów powrotu
Po zakończonym procesie płatności klient może zostać przekierowany pod podany przez
nas adres URL. W zależności od statusu transakcji zostanie wykorzystany odpowiedni
adres UrlPozytywny lub UrlNegatywny. Adresy powrotu do Sklepu maja tylko charakter
informacyjny, nie można na ich podstawie podejmować żadnych decyzji.
Adresy powrotu mogą zawierać następujące stałe, które zostaną zamienione na
odpowiednie wartości zgodnie z poniższa tabelka:
stała
%transId%
%posId%
%payType%
%sessionId%
%amountPS%
opis
identyfikator nowej transakcji utworzonej w aplikacji Platnosci.pl
wartości pos id
wartości pay type
wartości session id
wartości amount - jako separator kropka
%amountCS%
%orderId%
%error%
wartości amount - jako separator przecinek
wartości order id
numer błędu zgodnie z tabelka 2.1 (s. 3) z [1], jest wykorzystywany
tylko przy UrlNegatywny
Przykłady:
Załóżmy, że w naszym serwisie za informację dotyczące transakcji pozytywnej i
negatywnej odpowiadają odpowiednia klasy SuccessbackPage.class oraz
ErrorBackPage.class.
Aby wyświetlać na stronie powrotu informacje o numerze transakcji oraz dostać
powrotem numer sesji wpisujemy w polu URLNegatywny:
htp://www.szukakamneta.pl/?wicket:bookmarkablePage=:pl.szukamneta.ErrorBackPage?
pos id = %posId%&session id = %sessionId%
3. Implementacja modułu płatności
3.1 Nowa płatność
W celu utworzenia nowej płatności należy na swojej stronie umieścić odpowiedni
formularz, który przekieruje klienta do serwisu Platnosci.pl do procedury NewPayment.
Zalecane jest korzystanie z metody POST, jeżeli jest to utrudnione można ewentualnie
użyć metody GET. Lista wymaganych parametrów oraz ich znaczenie zawarta jest
poniżej:
parametr
Opis
pos_id
wartość nadana przez Platnosci.pl
pos_auth_key
wartość nadana przez Platnosci.pl
session_id
identyfikator płatności - unikalny dla klienta
amount
kwota w groszach
desc
krótki opis - pokazywany klientowi, trafia
first_name
imię
last_name
nazwisko
email
adres email
Pełna lista parametrów znajduję się w [1].
Musimy dla każdej płatności zaimplementować formularz, który utworzy nową płatność.
Przykładowy formularz z minimalna liczba parametrów, został zaimplementowany jako
nowy panel PayPanel.html.
<html>
<form action="https://www.platnosci.pl/paygw/ISO/NewPayment"
method="POST" name="payform">
<input type="hidden" name="first_name" value="pawel"><br />
<input type="hidden" name="last_name" value="gawel"><br />
<input type="hidden" name="email" value="[email protected]"><br />
<input type="hidden" name="pos_id" value="18347">
<input type="hidden" name="pos_auth_key" value="pmV6XVA">
<input type="hidden" name="session_id" value="1234565">
<input type="hidden" name="amount" value="1000">
<input type="hidden" name="desc" value="Opis płatnosci">
<input type="hidden" name="client_ip" value="123.123.123.123">
<input type="submit" value="Zapłac poprzez Platnosci.pl">
</form>
</wicket:panel>
</html>
PayPanel.java:
public class PayPanel extends Panel {
public PayPanel(String id, final int price, final IModel rowModel) {
super(id);
Form form = new Form("form");
form.add(new TextField("amount",price));
…
add(form);
}
}
W powyższym panelu w konstruktorze przekazywana jest wartość price, która określa
kwotę w groszach potrzebną do utorzenia nowej płatności. Analogicznie wypełniamy
wszystkie wymagane pola do założenia nowej płatności.
Naciśnięcie przycisku submit, w takim formularzu przeniesie nas do strony:
Dla kont o charakterze testowym, jedyną obsługiwaną operacją testową jest Płatność
testowa. Ponieważ konto nie jest prawdziwe, kliknięcie w taką ikonkę przeniesie nas do
zdefiniowanej wcześniej strony URLNegatywny.
htp://www.szukakamneta.pl/?wicket:bookmarkablePage=:pl.szukamneta.ErrorBackPage? pos id
= %posId%&session id = %sessionId%
3.2 Informacje na temat transakcji
Aby odczytać i wyświetlić zwrócone przez stronę płatności.pl parametry musimy
zaimplementować klasę ErrorBackPage.java:
public class ErrorBackPage extends WebPage{
public ErrorBackPage (PageParameters parameters) {
long posId = parameters.getLong("posId");
add(new Label("nr_transakcji", "nr transkacji:"+String.valueOf
(posId)));
long sessionId = parameters.getLong("sessionId");
add(new Label("nr_transakcji", posId));
add(new Label("nr_sesji", "nr sesji:"+String.valueOf(sessionId)));
}
}
Przykładowa strona ErrorBackPage.html:
<html>
<body>
<h2><span wicket:id="nr_transakcji"></span></h2>
<h2><span wicket:id="nr_sesji"></span></h2>
</body>
</html>
4. Literatura
[1] Dokumentacja techniczna płatności.pl.
http://www.platnosci.pl/download/platnosci_dokumentacja_techniczna.pdf