gucio1
18.01.2017, 12:20:48
Witam,
przeszukałem wątki o Dotpayu tu na forum ale nie znalazłem odpowiedzi na moje pytanie.
Przekazuję różne zmienne Dotpayowi w linku jak i adres urlc.
Chce odebrać dane zwrotne na temat statusu przelewu.
Nie rozumiem do końca instrukcji ale z tego co udało mi się ustalić to:
Rzucam w eter echo "OK";
i pobieram dane metodą S_POST.
Napisałem kilka takich linijek wrzuciłem na serwer ale nic nie odbieram. Co muszę dodać, może jakąś zmienną kontrolną?
<?php
echo "Kwota: ".$_POST['operation_amount']." \nStatus: ".$_POST['operation_status']." \nID: ".$_POST['id']." \n";
?>
viking
18.01.2017, 12:31:59
Ty tylko i wyłącznie odpowiadasz OK. Nic więcej w odpowiedzi nie moze być.
gucio1
18.01.2017, 12:37:42
Ok więc dlaczego nie odbieram danych?
Na profilu dotpay mam odznaczone weryfikowanie https i oraz ssl. Mam też odznaczone blokowanie zewnętrznych urlc.
Gdzie może leżeć błąd?
Pyton_000
18.01.2017, 12:42:58
W Dotpay albo w formularzu wysylki podajesz URL na który DotPay po jakimś czasie rzuci POST z danymi. Ty w odpowiedzi na tego posta musisz wystawić "OK" i nic więcej. czyli po prostu na koniec np. die('OK')
Zrób sobie w skrypcie zapisanie do pliku wszystkiego co leci z Post np.
file_put_contents
('dotpay.log', var_export($_POST, true), FILE_APPEND
);
W pliku powineneś wtedy mieć wszystko co DP do Ciebie wysyła.
gucio1
18.01.2017, 13:04:29
Ok zrobiłem tak jak napisałeś. I faktycznie dotpay wysyła mi informacje.
array(
'id' => '790591',
'operation_number' => 'M9107-1520',
'operation_type' => 'payment',
'operation_status' => 'completed',
'operation_amount' => '1500.00',
'operation_currency' => 'PLN',
'operation_original_amount' => '1500.00',
'operation_original_currency' => 'PLN',
'operation_datetime' => '2017-01-18 12:53:28',
'control' => '',
'description' => 'Pakiet księgowości. 4 miesiące.
'p_info' => 'Test User (grzegorz@interia.pl)',
'p_email' => 'grzegorz@interia.pl',
'channel' => '1',
'signature' => 'b9c16651542af533e62f77e91ae16ef0f7f45ea76685e825622c220410abaa66',
)
Jak teraz coś z tego wyświetlić? Głupio pytać mi o tak banalne rzeczy ale męczę się z tym od wczoraj.
viking
18.01.2017, 13:20:22
Po swojej stronie zapisujesz dane transakcji, z urlc weryfikujesz czy wpłata przebiegła poprawnie. Wrzuć to sobie do bazy czy gdzieś i później wyświetl. A jeśli chcesz faktyczną płatność wprowadzić to raczej ci odradzam to robić, chyba że lubisz za darmo sprzedawać.
gucio1
18.01.2017, 13:29:07
Nie rozumiem co znaczy faktyczną płatność.
No ale plan jest taki że pobrane dane wrzucę właśnie do bazy potem pobiorę odpowiedni rekord zweryfikuję tak jak mówisz czy wszystko się zgadza i dopiero generuję fakturę itp.
Tylko nie wiem czy dobrze odnoszę się do tych danych z urlc.
Jak bd chciał wrzucić to do bazy to np tak to ma wyglądać?
INSERT INTO dotpay VALUES ($_POST['operation_number'],$_POST['operation_amount']).
Czy jak odnieść się do tych zmiennych? Zwłaszcza że są w tablicy "array"?
Pyton_000
18.01.2017, 13:41:48
Dokładnie tak jak pokazałeś.
viking
18.01.2017, 13:43:42
Przez faktyczną miałem na myśli rzeczywistą płatność za usługi a nie tylko celem nauczenia się czegoś. Bo wybacz, ale skoro masz takie pytania to mało realne że zrobisz to dobrze - co zapewne będzie oznaczać darmowe zakupy dla włamywacza. Ludziom się wydaje że parę linijek kodu i mają płatność na stronie.
Pyton_000
18.01.2017, 13:53:02
@viking nie przesadzajmy. Jeśli zapisze odpowiednie dane i poprawnie zweryfikuje to nie ma problemu.
gucio1
18.01.2017, 13:56:58
No cóż.. naprawdę zamierzam wprowadzić rzeczywiste płatności

.
No wiadomo że to wygląda dziwnie skoro zadaję takie podstawowe pytania a biorę się za płatności.
Chodziło mi tylko o to jak funkcjonują te przelewy bez żadnych zabezpieczeń.
A weryfikacje czy użytkownik faktycznie przelał kasę, czy odpowiednia ilość i czy produkt dostanie to już zostawiam sobie na potem

.
Nie jestem super doświadczonym gościem i coś robiąc uczę się na bieżąco ale jak na razie żadnych zastrzeżeń do swoich projektów (odpukać) nie miałem.
I chętnie wysłucham jeśli chciałbyś coś podpowiedzieć ze swojego doświadczenia odnośnie bezpieczeństwa przy zakupach przez dotpay.
Pyton_000
18.01.2017, 14:09:06
Przy dotpay przelewy robisz od razu, i dotpay wysyła Ci to co dostał od usera + to co przelał, i z tego wylicza hash. więc sprawdzając hash jesteś w stanie zweryfikować czy płatność nastąpiła i czy jest poprawna
Dokumentacja DotPay jest w miarę ok.
PS. Jeśli w DotPay są inne metody wyliczania hash niż MD5 to uzyj innego.
viking
18.01.2017, 14:10:00
Polecam ci przejrzeć integrację w sklepach
https://github.com/dotpay/ Zobaczysz jak to powinno być zrobione. Ja osobiście za dotpay nie przepadam. Już jakiś czas nie korzystałem ale miałem swego czasu wątpliwości co do ich bezpieczeństwa ogólnie. Może dlatego że patrzyłem przez pryzmat pracy w banku i brakowało mi pewnych podstawowych rzeczy (nawet takie głupoty w jaki sposób sumy kontrolne generowali).
gucio1
18.01.2017, 17:10:11
Coś źle robię.
czy na pewno tak powinno wyglądać odwołanie do tych zmiennych?
$number = $_POST['operation_number'];
$amount = $_POST['operation_amount'];
INSERT INTO dotpay VALUES ('$number' , '$amount' , '$email')
zmienna $email dodaje się do bazy bo jest zmienna sesyjną a przed mam dwa puste miejsca. Czyli nie pobieram tych danych od urlc mimo że w logu mam że je odbieram.
już sobie poradziłem, zanim pobrałem dane z $_POST sprawdzałem czy użytkownik jest zalogowany. wywaliłem to zostawiłem tylko wysyłanie $_POSTów do bazy i poszło.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.