Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Problem z integracją PayU
MotuH
post 26.10.2013, 12:15:27
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Witajcie koledzy smile.gif

Mam problem z integracja PayU ze swoją stroną www.

Otóz wysyłanie danych jest wporządku. PayU pokazuje platnosc oraz wszelkie dane z formularzy. Po kliknieciu akceptacji platnosci w przykladzie testowym, wraca mi na podstrone "przyklad.pl/index.php?wynik=ok".

Jak jest blad to "wynik=blad".

I teraz pytanie. W przykladach ktore znalazlem w necie jezeli platnosc jest ok to payu powinno przeslaes $_POST z danymi do weryfikacji... wrzucam sobie var_dum($_POST) i wyskakuje mi komunikat ze array(0). Co robie nie tak? Moge prosic o krotkie info?

Z gory dziekuje za wszelka pomoc, a jezeli cos niejasno opisalem to zamiast z*ebki dajcie znac to rozpisze wszystko bardziej szegolowo smile.gif
Go to the top of the page
+Quote Post
Damonsson
post 26.10.2013, 12:33:59
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


PayU przesyła to na stronę którą podałeś tam gdzieś w ustawieniach.

Nie da się odczytać tego co przesyła przez przeglądarkę, bo to PayU wysyła, a nie Ty. Podejrzeć sobie może na stronie PayU w historii transakcji i wybrać płatności testowe.
Albo możesz na tej stronie, na którą PayU wysyła POSTA, zrobić zapis tego $_POSTa do pliku czy bazy i później sobie go przejrzeć.
Go to the top of the page
+Quote Post
MotuH
post 26.10.2013, 13:50:38
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Pokminilem i przesylam sobie getem kilka parametrow na strone wynikowa gdzie jest ok i tam dokonuje sprawdzania na jakim etapie jest transakcja. tak chyba ma byc prawda?
Go to the top of the page
+Quote Post
Damonsson
post 26.10.2013, 13:57:18
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Może inaczej. Z czym masz problem? Bo pytasz co robisz nie tak, czy tak ma być, ale nie piszesz co chcesz osiągnąć.
Go to the top of the page
+Quote Post
MotuH
post 26.10.2013, 14:06:12
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Chce zeby pokazywalo mi stan platnosci.

Laczy sie z payu, wraca na moja strone ze statusem ok. i teraz chce sprawdzic na jakim etapie jest platnosc. czy jest zrealizowana, w trakcie, czy sie nie udalo itp itd. smile.gif
Go to the top of the page
+Quote Post
Damonsson
post 26.10.2013, 14:34:25
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No to przy Payment/get dostajesz zwrotkę i musisz ją przeanalizować po stronie serwera i sobie gdzieś wypluć wynik.

Zresztą automatycznie po zrobieniu transakcji przez chyba godzinę transakcja próbuje się odbyć i za każdym razem dostajesz $_POSTa od PayU (dopóki nie jest, że zapłacono), na tej podstawie analizujesz czy płatność jest zrealizowana czy nie i zapisujesz to sobie gdzieś. Po 2 dniach płatność będzie miała taki sam status jak ta ostatnia próba która się wykonała z automatu, więc po co sprawdzać ponownie.
Go to the top of the page
+Quote Post
MotuH
post 26.10.2013, 14:44:46
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Moj kod lapiacy wynik w pliku z payu wyglada tak:

"switch ($_GET['wynik']) {

case 'ok':

$bledy = array();

if (isset($_GET['pos']) && isset($_GET['sesja']) && isset($_GET['zamowienie'])) { cos tam dalej..."

jak daje odbior jako $_post to nic sie kompletnie nie dzieje. nie wiem czy jest to spowodowane tym ze jestem w trybie testowym czy cos poprostu robie zle :/

Parametry dla get ustawilem w payu w sekcji "Adres powrotu pozytywnego".
Go to the top of the page
+Quote Post
wujek2009
post 26.10.2013, 16:42:56
Post #8





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


http://www.payu.pl/_old/view/admin/ckedito..._2011-05-16.pdf
+ przykładowy plik raportu (pliku, który aktualizuje Ci statusy zamówień - plik, do którego payu "łączy się" i wysyła dane $_POSTem)
http://www.payu.pl/pliki/raport.phps.html

w tej dokumentacji technicznej masz punkt 3.7.2 - i tam masz spis danych, które PayU wysyła do Ciebie
- status transakcji możesz sprawdzić po przez: $_POST['status']
Go to the top of the page
+Quote Post
MotuH
post 28.10.2013, 20:35:49
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Dzieki wuja. W sumie czytalem dokumentacje ale cos i tak mi nie idzie - moze poprostu nastapilo zmeczenie materialu smile.gif Przysiade do tego jeszcze raz po chwili odpoczynku a jak mi nie pojdzie to jeszcze troche pomarudze smile.gif

Witajcie ponownie smile.gif

No wiec tak:
platnosc idealnie idzie do payu smile.gif jak jest zle to wraca mi na strone np. blad.php a jak jest ok to na ok.php i wyswietla komunikat ze alles jest dobrze. no i teraz mam trzecia podstrone "raport". obojetnie gdzie bym nie wrzycil var_dump($_POST) w celu sprawdzenia co przychodzi z payu - nic sie nie dzieje - wyswietla array(0). czy jest to powodem ze dzialam na sandboxie z platnoscia testowa? uzylem skryptu to sprawdzania stanu platnosci tego ktory jest na stronie payu - oczywiscie modyfikujac i dostosowujac pod swoj skrypt i wlasnie tez nei wiem czy on ma byc w podstronie z raportem czy tam gdzie jest ok? doczytalem sie w innym poscie ze wlasnie podstrona raport to serce integracji wiec wydaje mi sie ze skrypt powinien byc tam - nie zmienia to jednak faktu ze i tak var dump wypluwa ze payu nie przesyla zadnych danych.

Prosze o jakies wskazowki i z gory dzieki smile.gif
Go to the top of the page
+Quote Post
wujek2009
post 28.10.2013, 21:31:29
Post #10





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


Zgadza się. Podstrona raportu to serce integracji - tam PayU wysyła dane metodą $_POST (dane, odnośnie które zamówienie zostało opłacone, gdzie płatność została autoryzowana, itd). To działa na takiej zasadzie:

1) TWÓJ SERWIS: KLIENT -> PAYU -> (................) -> OPERACJA (SUKCES LUB ERROR)
2) SERWIS PAYU: Payu łączy się z raportem - żadnej klient, żadnej administrator nie widzi tego ruchu, PayU samo wybiera czas kiedy się połączy i poinformuje o dokładnym statusie płatności (identyfikator płatności, jakie zamówienia, itd)

Ad1) *(................) - w tym miejscu PayU weryfikuje PODSTAWOWE dane (np. imię, nazwisko, sig, itd)
Ad2) I teraz drugi punkt to odpowiedź na Twoje pytanie związane z pustą tablicą array. Oczywiście, że gdy wejdziesz na podstronę: raport.php i wyświetlisz var_dump($_POST) to dostaniesz pustą tablice - bo Ty łączysz się jako KLIENT, zwykły "zjadacz chleba" - raport.php (podstrona raportu) to podstrona dla PayU to ONA się łączy z tą podstronę nie Ty.
To PayU wysyła dane $_POSTem, nie Ty.

Więc jakbyśmy mieli się uprzeć to tylko jeśli PayU wejdzie na stronę raport.php i będzie tam kod var_dump($_POST) to tylko PayU zobaczy zawartość tablicy, nie Ty.
Jeśli chcesz wiedzieć jakie dane przychodzą (co jest pokazane w dokumentacji, chyba nawet podałem Ci paragraf który) to zrób coś na zasadzie:
Cytat
zrobić zapis tego $_POSTa do pliku czy bazy i później sobie go przejrzeć.


czyli otwórz sobie raport.php i zrób w nim zapis w stylu:

  1. if ( count($_POST) )
  2. {
  3. $string = NULL;
  4.  
  5. foreach ( $_POST as $k => $v )
  6. {
  7. $string .= 'Klucz: '. $k .' wartosc: '. $v .'<br />';
  8. }
  9.  
  10.  
  11. mysql_query('insert into raporttabela .....); // insertujemy do bazy dane z posta
  12. }
Go to the top of the page
+Quote Post
MotuH
post 2.11.2013, 10:26:44
Post #11





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


O kurcze smile.gif Super podpowiedz! Dzieki wujek smile.gif teraz wszystko jest jasne. a ja juz myslalem ze ja cos zle robie... zrobie jak napisales i zobacze co z tego wyjdzie smile.gif

ps. Sprawdziłem smile.gif Działa biggrin.gif Przekazuje dane smile.gif Jeszcze raz podziekował smile.gif

Hello ponownie smile.gif

Jeszcze jedno i (chyba) juz ostatnie pytanie smile.gif

Apropo:

/* TODO: zmiana statusu transakcji w systemie Sklepu */

/* przykladowo:
if ( $result['code'] == '99' ) {
if ( rozliczamy_zamowienie_srodki_wplynely ) {
// udalo sie zapisac dane wiec odsylamy OK
echo "OK";
exit;
}
} else if ( $result['code'] == '2' ) {
// transakcja anulowana mozemy również anulować zamowienie
} else {
// inne akcje
}
*/

// jezeli wszytskie operacje wykonane poprawnie wiec odsylamy ok
// w innym przypadku należy wygenerować błąd
// if ( wszystko_ok ) {
echo "OK";
exit;
// } else {
//
// }

wystarczy ze zrobie cos takiego?
if ( $result['code'] == '99' ) { echo 'OK'; exit; }

+ ewentualnie zmiana w bazie danych statusu zamowienia z 0 na 1?

?

Nie jest to sklep wiec teoretycznie zadne inne komunikaty mnie nie interesuja.

Zasada bedzie taka ze jezeli sie komus cos spodoba - placi przez pay u. wtedy jego dane zapisuja sie w bazie. i jezeli platnosc bedzie odebrana to status w bazie 1 w przeciwnym wypadku 0.

Dobrze mysle o rozwiazaniu?


Puk puk smile.gif Pomoże ktoś?smile.gif

Ten post edytował MotuH 28.10.2013, 22:48:07
Go to the top of the page
+Quote Post
wujek2009
post 2.11.2013, 16:09:12
Post #12





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


Nie do końca - PayU ma kilka statusów (płatność zaakceptowana, płatność w toku, płatność anulowana, płatność odrzucona i tam jeszcze kilka). Więc ograniczenie tego do "0" i "1" to dość uproszczone informacje - najgorzej będzie jeśli płatność się z jakiegoś powodu nie uda, a Ty nigdzie nie zapiszesz sobie ID statusu i nie będziesz miał w panelu informacji o błędzie. Ja to zrobiłem w stylu (plik/kontroler raportu, czyli podstrona dla PayU):

  1. (...)
  2.  
  3. // definicja możliwych statusów
  4. $pending = array(1,4,5); // 1-nowa, 4-rozpoczęta, 5-oczekuje na odbiór
  5. $success = array(99); // płatność zaakceptowana
  6. $fail = array(2,3,7,888); // 2-anulowana, 3-odrzucona, 7-płatność odrzucona, 888-bledny status, prosimy o kontakt
  7.  
  8. // status płatności - odbieramy z $_POSTA co PayU wysyła nam
  9. $status = (..);
  10.  
  11. if (in_array($status, $pending))
  12. {
  13.  
  14. // platnosc w toku.. - tj: statusty: 1, 4, 5
  15.  
  16. // aktializuje status płatności w tabeli zamówień:
  17. else if (in_array($status, $success))
  18. {
  19. // platnosc sie udała, czyli status == 99
  20.  
  21. // aktualizuje status płatności, że opłacone, itp.
  22. }
  23. else if (in_array($status, $fail))
  24. {
  25. // platnosc sie nie powiodla, lub zostala anulowana, itp.
  26. // ponownie aktuializacja statusu w bazie danych
  27. }
  28.  
  29. (...)
  30.  
  31. // output dla PayU
  32. exit('OK');
Go to the top of the page
+Quote Post
Pyton_000
post 3.11.2013, 08:26:59
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Na potrzeby małej aplikacji można to znacząco uprościć. Wszelkie informacje są zapisane w panelu PayU a dodatkowo jak PayU nie dostanie odpowiedzi to zdaje się że przysyłają zbiorczy raport pod koniec dnia.
Go to the top of the page
+Quote Post
MotuH
post 9.12.2013, 11:51:07
Post #14





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Dziekuje za pomoc smile.gif Mam nadzieje ze teraz juz wiem wszystko co potrzebowalem aby aplikacja dzialala smile.gif

Hej ponownie smile.gif

Ponownie zabralem sie za platnosci... i niby wszystko jest ok. Wg tego jak koledzy wyzej pisali - otrzymuje postem info co i jak. natomiast w transakcjach w payu nie widnieje zadna transakcja testowa. Czy tak tam jest? Czy jezeli przeprowadzam testy to mimo wszystko powinna ona tam widniec?
Go to the top of the page
+Quote Post
phpion
post 9.12.2013, 12:14:09
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Powinna być widoczna. Z tego co pamiętam przy liście transakcji trzeba jasno w filtrze określić, że ma pokazywać również transakcje testowe. Domyślnie są ukryte.
Go to the top of the page
+Quote Post
MotuH
post 9.12.2013, 16:24:20
Post #16





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


Ehh lame smile.gif Zadalem pytanie i pozniej wlasnie tez to zauwazylem... Przepraszam za smietnik smile.gif A teraz pytanie kolejne...

Wszystko przebiega zgodnie z planem. Transakcja pojawia sie jako zaakceptowana. Wiec domniemam ze payu zwraca do skryptu iz platnosc ma status 99. wiec teraz ifem robie ze jezeli platnosc == 99 to zmien flage w bazie z 0 na 1 (czyli ze transakcja zrealizowana), tak?smile.gif

Hmm... dochodze do momentu kiedy juz aplikacja laczy sie z payu do potwierdzenia statusu platnosci... lacze sie przez fsockopen i otrzymuje cos takiego:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<status>ERROR</status>
<error>
<nr>101</nr>
<message>Kod błędu: 101</message>
</error>
</response>HTTP/1.1 200 OK
Server: nginx
Date: Mon, 09 Dec 2013 15:21:11 GMT
Content-Type: text/xml;charset=UTF-8
Content-Length: 164
Connection: close


opieram sie na tym: http://www.payu.pl/pliki/raport.phps.html

gdzie jest blad?sad.gif
Go to the top of the page
+Quote Post
sazian
post 9.12.2013, 17:29:48
Post #17





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


w dokumentacji masz tabelę z kodami błędów (punkt 2.1)
101 - brak parametru session_id
Go to the top of the page
+Quote Post
MotuH
post 9.12.2013, 17:51:33
Post #18





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.09.2013

Ostrzeżenie: (0%)
-----


sazian sprawdzalem. wszystko kurcze jest... nie wiem o co biega. ale jeszcze raz przeanalizuje caly kod i jak juz naprawde skoncza mi sie wszelkie pomysly to wrzuce tu kod i poprosze o sprawdzenie :/
Go to the top of the page
+Quote Post
Damonsson
post 9.12.2013, 18:51:08
Post #19





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Zadzwoń do PayU, mają naprawdę świetny support i pomagają ze wszystkim, szkoda Twojego i naszego czasu na zgadywanie.
Go to the top of the page
+Quote Post
phpion
post 10.12.2013, 15:36:00
Post #20





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(MotuH @ 9.12.2013, 16:24:20 ) *
Hmm... dochodze do momentu kiedy juz aplikacja laczy sie z payu do potwierdzenia statusu platnosci... lacze sie przez fsockopen i otrzymuje cos takiego:

PayU samoczynnie przesyła informację na temat płatności na podany przez Ciebie adres (podajesz go w konfiguracji płatności). Tam otrzymujesz tablicę $_POST z wszystkimi istotnymi informacjami. Sam nie musisz komunikować się z PayU, a jedynie "nasłuchiwać" odpowiedzi z ich strony.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 15:50