Rozpakuj i skonfiguruj :)
Moduł wymaga biblioteki curl do komunikacji z serwisem platnosci.pl. Istnieje możliwość implementacji innego mechanizmu do przesyłania danych metodą HTTP POST - w tym celu wystarczy dopisać własną funkcję w pliku post.php
Jeśli już używasz tego modułu i masz pierwszą jego wersję ze stycznia 2007!!!
bardzo ważna uwaga! Nieznacznej zmianie uległa struktura tabel w bazie danych w stosunku do pierwszej wersji ze stycznia 2007. wszystkie nazwy pól pozostały bez zmian, jednakże każde pole zawierające datę (datetime lub timestmp) zostało zamienione na typ int aby przechowywać datę w formacie jakiego używa drupal, czyli timestamp zapisany w sekundach. Wszystkich dotychczasowych użytkowników przepraszam za tą zmianę, ale w moim przekonaniu jest ona niezbędna dla zachowania spójności z samym drupalem. Najprostszym sposobem uaktualnienia jest stworzenie tymczasowej tabeli i przekopiowanie do niej danych selectem, który będzie zmieniał daty na unixowy timestamp a następnie zamiana starej tabeli z tą tymczasową.
Przejdź do /admin/settings/platnosci_pl i podaj wszystkie parametry swojego konta w systemie platnosci.pl i wybierz rodzaje płatności, które mają być dostępne w twoim serwisie. Na chwilę obecną moduł obsługuje tylko pojedynczy POS systemu platnosci.pl
masz możliwość ustawienia automatycznego zatwierdzania transakcji (jeśli ta funkcja nie jest włączona po stronie serwisu platnosci.pl), ponadto możesz podać link wiążący transakcję z konkretnym zamówienie, który będzie widoczny w na stronie ze szczegółami transakcji.
Dodatkowo na stronach serwisu platnosci.pl należy skonfigurować swój POS podając następujące parametry:
| urlPozytywny | http://twójserwis.pl/platnosci_pl/ok/%transId%/%posId%/%payType%/%sessionId%/%amountPS%/%orderId% |
| urlNegatywny | http://twójserwis.pl/platnosci_pl/error/%transId%/%posId%/%payType%/%sessionId%/%amountPS%/%orderId%/%error% |
| urlReport | http://twójserwis.pl/platnosci_pl/report |
pod adresem admin/platnosci_pl znajduje się panel administracyjny pozwalający przeglądać transakcje i logi
(uwaga: wszystkie wymienione tutaj stałe są zdefiniowane w pliku definitions.php i tam właśnie odsyłam po wyjaśnienia wszystkich dociekliwych) Pierwszym krokiem na drodze do zrealizowania płatności jest wybór jej rodzaju. Aby wyświetlić listę dostępnych typów płatności wywołaj funkcję platnosci_pl_getPaymentTypes(&$form) podając jako parametr formularz do którego chcesz dopiąć listę dostępnych płatności. Dzięki temu masz możliwość dołączenia do tego samego formularza innych form płatności, nieobsługiwanych przez ten moduł (np. płatność gotówką). Gdy klient dokona wyboru płatności masz możliwość sprawdzenia czy dana forma płatności jest poprawna (ułatwia to wykrycie ewentualnych nieprawidłowości w działaniu serwisu lub użytkownika) - do tego celu służy funkcja platnosci_pl_validatePaymentType($type) Następnym krokiem jest przygotowanie transakcji. W tym celu wywołaj funkcję platnosci_pl_prepareTransaction($amount, $desc, $type, $clientData, $orderId)
| platnosci_pl_prepareTransaction($amount, $desc, $type, $clientData = array(), $orderId = 0) | |
| amount | wartość transakcji w złotych (uwaga - system platnosci.pl przyjmuje kwoty w groszach, więc podana tutaj wartość zostanie przemnożona przez 100 a wszystko co zostanie po przecinku będzie obcięte.) |
| desc | opis transakcji dla klienta max 50 znaków. |
| type | typ transakcji |
| clientData | dane klienta, domyślnie opcjonalne. Jeśli klient płaci kartą kredytową, to dane te są obowiązkowe i muszą być zgodne z danymi na karcie kredytowej klienta. Tablica ta musi mieć następujące pola: PPPRM_FIRSTNAME, PPPRM_LASTNAME oraz PPPRM_EMAIL (zdefiniowane w pliku definitions.php) |
| orderId | opcjonalny numer zlecenia za które płaci klient. |
| Funkcja zwraca unikalny id sesji dla nowo utworzonej transakcji. Jeśli coś pójdzie nie tak (np. będzie problem z połączeniem z systemem platnosci.pl) funkcja zwróci false. | |
Kolejnym etapem jest przekierowanie klienta na strony systemu platnosci.pl gdzie dokona płatności. Aby wygenerować formularz, który przeniesie klienta pod odpowiedni adres wywołaj funkcję platnosci_pl_getPaymentFormContent(&$sessId, $submit, $submitClass, $amount, $desc, $type, $orderId, $clientData) Uwaga: funkcji tej można użyć bez wcześniejszego wywoływania platnosci_pl_prepareTransaction w takiej sytuacji moduł automatycznie ją wywoła z odpowiednimi parametrami.
| platnosci_pl_getPaymentFormContent(&$sessId, $submit, $submitClass = 'form-submit', $amount = 0, $desc = '',$type = PPPT_INVALID, $orderId = 0, $clientData = array()) | |
| sessId | Id sesji dla danej transakcji. Jeśli parametr będzie miał wartość 0 zostanie stworzona nowa sesja i parametrowi temu przypisane będzie nowe Id. Jeśli podane Id sesji będzie poprawne, to dane dla parametrów amount, desc, type, orderId i clientData zostaną pobrane z bazy. |
| submit | tekst, który ma być umieszczony na przycisku przekierowującym do serwisu paltnosci.pl |
| submitClass | styl który ma być przypisany do przycisku 'submit' - domyślnie ma wartość 'form-submit'. |
| amount | kwota transakcji. Użyj tego parametru tylko gdy Id sesji ma wartość 0 i moduł ma stworzyć nową sesję. |
| desc | opis transakcji. Użyj tego parametru tylko gdy Id sesji ma wartość 0 i moduł ma stworzyć nową sesję. |
| type | rodzaj płatności. Użyj tego parametru tylko gdy Id sesji ma wartość 0 i moduł ma stworzyć nową sesję. |
| orderId | opcjonalny Id zlecenia za które płaci klient. Użyj tego parametru tylko gdy Id sesji ma wartość 0 i moduł ma stworzyć nową sesję. |
| clientData | dane klienta (tak jak w funkcji platnosci_pl_validatePaymentType). Użyj tego parametru tylko gdy Id sesji ma wartość 0 i moduł ma stworzyć nową sesję. |
| Funkcja zwraca formularz przekierowujący klienta na strony serwisu platnosci.pl - formularz ten ma tylko jeden widoczny przycisk, wszystkie jego pozostałe pola są ukryte. Jeśli w czasie wykonywania tej funkcji wystąpi błąd, to zwrócona zostanie wartość false. | |
Jeśli moduł ma ustawione automatycznie potwierdzanie płatności to w zasadzie na tym kończy się minimum, które trzeba zaimplementować, żeby wszystko działało.
| platnosci_pl_getSessionData($sessId) | zwraca tablicę danych dotyczących sesji o podanym Id. Tablica zawiera pola PPPRM_USER_ID, PPPRM_PAYMENT_TYPE, PPPRM_AMOUNT, PPPRM_DESCRIPTION, PPPRM_IP, PPPRM_TRANSACTION_STATUS, PPPRM_CREATED, PPPRM_LAST_UPDATE, PPPRM_FIRSTNAME, PPPRM_LASTNAME, PPPRM_EMAIL, PPPRM_ORDER_ID (zdefiniowane w pliku definitions.php). |
| platnosci_pl_checkTransactionState($sessId) | zwraca stan danej transakcji odczytując go z bazy danych. |
| platnosci_pl_forceTransactionStateCheck($sessId) | zwraca stan danej transakcji pobierając go z serwisu platnosci.pl. Funkcja jednocześnie nadpisuje aktualnie zapisany stan transakcji. |
| platnosci_pl_confirmPayment($sessId, $confirm) | potwierdza bądź odrzuca daną transakcję. Aby potwierdzić parametr confirm musi mieć wartość true, w przeciwnym razie false. |
| hook_platnosci_pl_stateChange | możesz podłączyć się do tego zdarzenia aby być powiadamianym o każdej zmianie stanu transakcji. |
Ze względu na to, że system platnosci.pl przesyła informacje do modułu z wykorzystaniem HTTP POST, to twój serwis musi być w trybie on-line, żeby moduł był w stanie odebrać przesyłane komunikaty. Z tego co mi wiadomo nie ma chyba sensownej metody obejścia tego problemu poza modyfikacją tej funkcji: http://api.drupal.org/api/4.7/function/_menu_site_is_offline - niestety jest to grzebanie w jądrze drupala, więc raczej nie polecam. Jeśli goście od platnosci.pl zechcą dorzucić do swojego systemu obsługę XML-RPC to sprawa będzie o wiele prostsza, ponieważ moduł XML-RPC Drupala działa zawsze, bez względu na to, czy serwis jest offline czy online.
Zmiany w stosunku do wersji z 14.11.2007 (v1.0.1)