Instrukcja podłączenia płatności DOTPAY
Demonical Monk
Poniżej przedstawiam zaktualizowaną wersję integracji systemu Dotpay.pl
Artykuł przedstawia sposób integracji systemu DOTPAY w trybie automatycznym. Krótko pisząc. Klient wchodzi, płaci, dotpay przesyła do naszej strony dane, nasz skrypt księguje i dopisuje wpłatę np. do salda klienta. Jeśli chcesz jedynie odbierać wpłaty i nie zależy Ci na automatycznych ich księgowaniu skorzystać z podstawowej formy integracji.
Wcześniejsza wersja (1.0) którą opisałem jest już dość przestarzała zatem polecam skorzystać z poniższej.
Do integracji będziemy potrzebowali:
- konto hostingowe z obsługą php
- 30 minut wolnego czasu
- konto w Dotpay (aktywne)
Zaczynamy.
Transakcję będą obsługiwały trzy pliki, które są ze sobą pośrednio powiązane.
- formularz.php
- dotpay.php
- koniec.php
Omówmy każdy z nich.
-
formularz.php będzie posiadał w sobie dane, które użytkownik prześle do Dotpay`a. To w nim ustawimy nasz ID, kwotę transakcji, opis itd. Również w nim nasz klient będzie wprowadzał swoje dane.
-
dotpay.php to plik do połączeń poufnych pomiędzy naszą stroną a serwerem dotpay.pl. Połączenia poufne czyli takie, które są wykonywane wyłącznie pomiędzy serwerami (naszym i dotpay`a) a o którym jako internauta nawet nie musimy wiedzieć, że istnieją. To właśnie plik dotpay.php obsłuży naszą transakcję i zaksięguje płatność.
-
koniec.php jest to plik, który wyświetli informację po tym jak nasz klient zapłaci w dotpay`u za produkt. Jest to zazwyczaj tekst z rodzaju "dziękujemy za dokonanie płatności, prosimy oczekiwać na realizację zamówienia" itp.
Jak zatem w skrócie wygląda demonstracyjna transakcja ?
Prowadzimy przykładowo stronę kulinarną. Mamy w niej przepisy na ciasta, potrawy itd. Większość artykułów jest dostępna gratis. Jest natomiast strefa specjalna dla abonentów. Znajdują się tam specjalistyczne artykuły jak wykonać np. sushi czy ugotować zupę z płetwy rekina. Chcemy pobierać opłaty za dostęp do tych materiałów.
Tym samym tworzymy np. w menu zakładkę pt.: "opłać dostęp do strefy specjalnej", internauta klika i jest kierowany do pliku formularz.php
Poniżej przedstawiam przykładową zawartość tego pliku.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<title>gp.ESTATER.mini PRO</title>
<meta name="keywords" content="tutaj,slowa,kluczowe" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<form name="do_platnosci" method="POST" action="https://ssl.dotpay.eu">
<input type="hidden" name="id" value="1423" />
<input type="hidden" name="opis" value="Zasilenie konta w portalu PAWELDANIELEWSKI.PL" />
<input type="hidden" name="control" value="" />
<input type="hidden" name="amount" value="100" />
<input type="hidden" name="typ" value="3" />
<input type="hidden" name="URL" value="http://paweldanielewski.pl/koniec.php" />
<input type="hidden" name="URLC" value="http://paweldanielewski.pl/dotpay.php" />
<input type="submit" name="dalej" value="zapłać teraz" />
</form>
</body>
</html>
```
Czas omówić to co widzisz powyżej. Wskazany kod utworzy stronę z formularzem. input type="hidden" to ustanowienie zmiennej, która będzie niewidoczna. Pisząc krótko tylko przycisk "submit" będzie widoczny na takiej stronie.
Każda ze zmiennych hiden ma nazwę name="costam" oraz wartość value="costam". Są to zmienne niezbędne i wymagane przez Dotpay do poprawnej integracji.
Zmienna id o wartości 1423 określa Twój numer konta Dotpay. Możesz podmienić 1423 na swój numer lub wprowadzić adres email który podałeś podczas rejestracji w Dotpay.
Opis określa co będzie widział nasz klient na stronie Dotpay`a jako opis transakcji.
Control to dowolna wartość, która zostanie zwrócona przez serwer do naszego skryptu. Możesz tutaj wprowadzić dowolną wartość. Jeśli jesteś programistą PHP lub masz większe doświadczenie możesz w tej zmiennej przechować np. numer UID naszego abonenta. Tym samym nasz skrypt dotpay.php automatycznie dopisze dostęp do artykułów o sushi klientowi o wskazanym UID. Jeśli nie wiesz jak wprowadzić tutaj UID klienta lub chcesz jedynie otrzymywać wpłaty bez automatycznego księgowania powinieneś skorzystać z podstawowej formy integracji Dotpay czyli w trybie pół-automatycznym. Wystarczy zatem na stronie umieścić link:
Każdą wpłatę wykonaną za pomocą w/w odnośnika musisz księgować ręcznie. Moje współczucie jeśli masz transakcje na kwotę 2 - 3 zł w ilości np. 100 sztuk dziennie.
Kolejna zmienna "amount" w kodzie formularz.php określa kwotę na jaką ma zostać obciążony nasz klient. Domyślnie wprowadziłem 100 zł.
Zmiennej "typ" nie modyfikuj.
W dwóch pozostałych zmień adres domeny na swój tak aby prawidłowo kierował na pliki dotpay.php oraz koniec.php
Odpowiadając zatem na pytanie tytułowe. Klient wchodzi na formularz. Klika w przycisk "zapłać teraz" i jest kierowany do strony dotpay.pl
Jeśli wiesz jak, możesz taki przycisk dowolnie stylizować, zamienić np. na obazek, powodować podświetlenia po najechaniu (hover) itd. Wskazówka: szukaj w google pod hasłem "css"</li>
</ul>
... wracając. Klient klika i jest przekierowany na stronę dotpay`a. Tam wybiera swój bank, wprowadza imię, nazwisko itd. Klika na dole strony "dokonaj płatności" i jest kierowany do swojego banku. Tam wykonuje przelew i dalej jest kierowany na stronę dotpaya. Tutaj widzi przycisk "powrót do sklepu". Po kliknięciu trafia pod adres który wprowadziliśmy w zmiennej URL czyli na nasz plik koniec.php
W międzyczasie, chwilę po tym jak zapłaci w swoim banku, w połączeniu nieufnym bank przesyła potwierdzenie do dotpaya, a dotpay na nasz skrypt dotpay.php, który księguje płatność.
Aby prosto to wytłumaczyć:
Oficjalna droga</li>
</ol>
formularz.php -> dotpay.eu -> bank -> dotpay.eu -> koniec.php
Droga danych poufnych
dotpay.eu -> bank -> dotpay.eu -> dotpay.php</li>
</ol>
Poniżej przedstawiam to co interesuje Cię zapewne najbardziej czyli zawartość pliku dotpay.php
<?php
require("config.inc.php");
//Definiujemy tablicę IP z których połączenie jest dozwolone
//Patrz - serwerów dotpay
$allow_server = array('217.17.41.5', '195.150.9.37');
//Sprawdzamy czy w/w tablica zawiera numer IP klienta który właśnie się z nami łączy
if (!in_array($_SERVER['REMOTE_ADDR'], $allow_server)) {
exit('You are not authorized to do this operation!'); //Jeśli nie, to kończymy skrypt
}
//Jeśli wszystko jest OK, to zaczynamy księgowanie
if ($_POST['t_status'] == 2 && $_POST['amount'] != '' && $_POST['control'] != '') {
$control = cln($_POST['control']);
$amount = cln($_POST['amount']);
if (is_numeric($control) && is_numeric($amount)) {
/* tabela mysql [transid w primary z autoinkrementem], [uid], [kwota], [czas] */
mysql_query('INSERT INTO `transakcje` VALUES ("", "'.$control.'", "'.$amount.'", "'.time().'")');
echo('OK');
}
}
mysql_close($dbh);
?>
Jeśli nie znasz podstaw PHP i SQL dojście do tego co napisałem powyżej będzie dla Ciebie drogą przez mękę.
Powyższy kod należy zaznaczyć, skopiować i wkleić do dotpay.php
Spowoduje on zaksięgowanie płatności na koncie naszego abonenta.
UWAGA ** powyższy kod NIE SPRAWDZA jaka powinna być kwota transakcji a to oznacza, że jakiś cwaniak może przy pomocy odpowiedniego narzędzia zmodyfikować zmienną amount w taki sposób, że zasili nam konto na 1 zł mimo, że wprowadziliśmy np. kwotę abonamentu 20 zł a skrypt i tak zaksięguje go jako poprawną płatność. Niestety takie próby stanowią około 0.5% wszystkich transakcji. Napisanie zabezpieczenia niestety jest już dla bardziej zaawansowanych i celowo nie zostało tutaj zastosowane. Jeśli jednak zależy Ci na jego wprowadzeniu skorzystaj z poniższej podpowiedzi.</li>
</ul>
wprowadź tabelę temp_transakcje w mysql identyczną z tabelą główną transakcji
</li>
po kliknięciu w przycisk skieruj internautę na plik tranzit.php, w pliku tym zrób odwołanie do mysql aby zapamiętał szczegół transakcji w temp_transakcje, w tym aby zapisał kwotę. Plik ten musi również po załadowaniu automatycznie wysyłać postem formularz dalej do ssl.dotpay.eu. Jako control wprowadź numer ID transakcji z temp_transakcje
</li>
w pliku dotpay.php napisz kod php/mysql który zrobi odwołanie do mysql i sprawdzi czy to co przedstawia dotpay w zmiennej $_POST['amount'] równa się kwocie z wpisu w tabeli mysql temp_transakcje. Jeśli tak może zaczynać księgowanie jeśli nie wykonaj exit;
</li>
</ol>
Pamiętaj również aby w ustawieniach zaznaczyć (zezwolić) na przekazywanie zmiennej URLC.
Zrobisz to tutaj https://ssl.dotpay.pl/index.php?show=parametry
Zaznaczamy na TAK: "Zezwól na przyjęcie parametru URLC z zewnętrznego serwisu"
Wszelkie szczegóły integracji znajdziesz w dokumentacji na stronie:
https://ssl.dotpay.pl/index.php?show=documentation
To wszystko, zapraszam do komentarzy.
http://www.paweldanielewski.pl/index.php/2010/01/18/poradnik-podlaczenie-dotpay-v2/#post-tabs