Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Implementacja Przelewy24 (brak order_id)
Forum PHP.pl > Forum > PHP
breko4
Od dwóch dni nie mogę uporać się z problemem utworzenia na mojej stronie przelewów. Cały projekt stoi na CakePHP 2.x
Oczywiście działam z dokumentacją przelewów a sam skrypt stworzyłem na podstawie przykładowego, który mają na swojej stronie do pobrania (i który nie działa)..

Ogólnie prawie wszystko działa, tzn. transakcja jest rejestrowana, klient przechodzi do płatności po czym wraca na stronę i teraz: w PA Przelewy24 transakcja jest zaakceptowana ale nie zwraca mi żadnego $_POST z wartością p24_order_id (ID transkacji) a jest ona WYMAGANA aby transakcje zweryfikować na mojej stronie. Gdy ręcznie wklepie ID transakcja jest poprawnie weryfikowana, ale oni muszą mi ją jakoś przesłać...

Myślałem, że może CakePHP czyści mi gdzieś w locie zewnętrzene $_POST ale bez frameworku efekt jest ten sam, w żadnym momencie nie dostaję od nich p24_order_id

EDIT: zrobiłem szybki test wysyłając jakieś dane $_POSTem z innej domeny na moją stronke i dochodzą bez problemu. C
k_@_m_i_l
Wróżkami nie jesteśmy. Udostępnij jakiś kod.
breko4
Liczyłem, że może ktoś miał już styczność z Przelewy24.

Kod czego? Tego jak odbieram $_posta od nich?
CakePHP:
  1. if($this->request->is('post'){
  2. debug($this->data);
  3. }


lub w czystym PHP:
  1. var_dump($_POST);

Efekt jest jeden i ten sam.

Tak jak pisałem, po przesłaniu testowo posta z innej mojej domeny jest on 'wyłapywany' poprawnie, natomiast z Przelewy24 nie dochodzi więc raczej nie jest to wina kodu.
Pyton_000
Amasz ustalony w P24 poprawny URL? Sprawdź sobie
Kod
var_dump($_REQUEST);
breko4
Tak, adresy są ok.

Skontaktowałem się z Helpdeskiem i wiem już, że czekałem na POSTa nie tam gdzie trzeba. Do P24 podawane są 2 adresy url_return i url_result. P24 przekierowuje klienta po płatności na url_return natomiast POST z wynikiem zostaje wysłany na url_result.

Jeżeli P24 przekierowuje na adres url_return a POSTa wysyła na url_result to jak mogę odebrać tego posta?

Adresy wyglądają tak:
url_return: www.mojastrona/skrypt?ok=1
url_result: www.mojastrona/skrypt?ok=2

zmieniłem nawet dla testów obie wartości na ten sam adres ale bez efektów

Niestety ich pomoc kończy się na podsyłaniu fragmentów z dokumentacji:
"Transakcja prawidłowa
Wywołany adres url: p24_url_return. Wywołanie następuje gdy nastąpiła prawidłowa wpłata
przez klienta.
W przypadku przekierowań dla transakcji poprawnej i niepoprawnej – nie są wysyłane żadne
dodatkowe pola. Jest to zwykłe przekierowanie metodą GET. Informacja o płatności jest
wysyłana wyłącznie na adres p24_url_status.

Powiadomienie o poprawnej transakcji.
Wywoływany adres url: p24_url_status. Powiadomienie następuje niezależnie od tego, czy
Klient został przekierowany na p24_url_return, czy też nie. Powiadomienie zostaje wysłane tylko
i wyłącznie dla poprawnej wpłaty. System nie wysyła informacji o wpłatach, które nie zostały
wykonane, bądź zostały wykonane niepoprawnie. "
motyl-pl
No i teraz na drugi adres gdy p24 zweryfikuje płatność przychodzą dane z posta (5.4)
http://www.przelewy24.pl/storage/app/media...entacja_3.2.pdf
W plikach do pobrania
http://www.przelewy24.pl/pobierz#instalacja
Masz klase do obsługi p24 która może Ci się przydać w backendzie przy przetwarzaniu wyniku transakcji.
ZenekN
ok, wszystko w porządku p24_order_id wysyłany jest do
  1. $d['p24_url_status'] = "jakis_url"


chciałem zapisać dane do bazy skąd mam widzieć jaki jest id zamówienia z mojej bazy aby sparować p24 order id, myślałem zaszyfrować ten id zamówienia w urlu
w takiej postaci

  1. $d['p24_url_status'] = "jakis_url z zaszyfrowaym parametrem get id zamowienia"
trueblue
Na ten adres będą zwrócone dane poprzez POST.
ZenekN
aaa, czyli cały post, dziekuje

zastanawiam się jak napisać warunek dla przedziału adresów ip

if 192.168.1.1 between 192.168.1.99


aby zabezpieczyć wywoływania zwrotki od p24

dodaje kod do wywolywania post dla np. trnVerify



  1. $arr = array(
  2. 'lista adresów ip dostępnych w dokumentacji przelewy24'
  3. );
  4.  
  5. if(in_array($_SERVER['REMOTE_ADDR'], $arr)) {
trueblue
A skąd wziąłeś pulę tych adresów? P24 ma inne.
Pyton_000
  1. <?php
  2.  
  3. $ip = '192.168.1.33';
  4. $ip1 = '192.168.1.1';
  5. $ip2 = '192.168.1.255';
  6.  
  7. var_dump(ip2long($ip) > ip2long($ip1) && ip2long($ip) < ip2long($ip2));
ZenekN
ok dzięki, tak zgadza się ma inne nie chciałem podawać ich tutaj, są w dokumentacji smile.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.