Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Przelewy24.pl - proces i weryfikacja
multiqlti
post 1.07.2019, 13:58:15
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


Witajcie
poszukuje pomocy w zakresie co , gdzie i jak z przelewy24.pl

Zrobilem formularz , ktory poprawnie wysyla zamowienie , laczy sie z przelewy24.pl (sandbox) , zamowienie jest skladane i oplacane , dostaje email potwierdzajacy
Mam plik index.php z formularzem , gdzie wysylam wymagane przez P24 dane.
2 inne pliki to:
finish.php - tutaj przekierowany jest klient po zapłaceniu
verify.php - tutaj wysyłane są jakieś dane przez P24 po transakcji

Gdzie mam umieścić skrypt weryfikujacy transakcje ?
Jak dostać się do danych wysyłanych do verify.php ?

Chodzi mi o sam proces przeplywy danych i dostepu do nich.
Jak dostac sie do $_POST ktore wysyla P24 na verify.php ?

Jestem początkującym z php więc od razu proszę o nie stosowanie "oczywistych" skrótów myślowych wink.gif
Go to the top of the page
+Quote Post
nospor
post 1.07.2019, 14:02:27
Post #2





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Jak dostac sie do $_POST ktore wysyla P24 na verify.php ?
Jest to dokladnie taki sam mechanizm odbiorudanych jakbys odbieral dane z forma u siebie, czyli wszystkie dane sa w tablicy $_POST do ktorej masz dostep w skrypcie verify.php

Gdzie umiescic ten plik? A gdzie ci sie podoba, twoj serwer, twoja strona, umieszczaj gdzie chcesz. Na poczatek moze byc w katalogu glownym twojej strony tak by tyko byl dostepny przez:
http://twojastrona.pl/verify.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.07.2019, 14:25:35
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


Cześć nospor
strona verify.php zawiera tylko
print_r ($_POST);
print_r ($_GET);
obie tablice są puste po tym jak przekierowuje mnie tam P24
stad moja konsternacja gdzie mam wywolac weryfikacje jesli nie mam dostepu do danych z tablicy
Go to the top of the page
+Quote Post
nospor
post 1.07.2019, 14:31:17
Post #4





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
obie tablice są puste po tym jak przekierowuje mnie tam P24
Chyba cos nie ogarniasz. P24 ciebie tam nie przekierowuje w zaden sposob. P24 wysylam tam info po kazdej transakcji. Ty wizualnie tego nie zobaczysz bo to idzie poza przegladarka. Ty masz to poprostu odebrac i zrobic z tym co masz zrobic.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.07.2019, 14:40:40
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


Z pewnością nie ogarniam smile.gif
Jeśli nie widzę "naocznie" tych danych , to jak mogę przekonać się co jest wysyłane ?
Zanim zabiorę się za skrypt weryfikujący to chciałbym mieć pewność , że te dane na pewno są.
Serwer apache odebrał je , otwieram stronę verify,php , uruchamiam podgląd tablicy $_POST i GET i jest pusto.
Jak sprawdzić czy i jakie dane wysłali ?
Go to the top of the page
+Quote Post
nospor
post 1.07.2019, 14:43:36
Post #6





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Serwer apache odebrał je , otwieram stronę verify,php , uruchamiam podgląd tablicy $_POST i GET i jest pusto.
Musisz zrozumiec, ze strona dziala per request i kazdy request ma inne dane. Jak oni ci wyslali cos, apache to odebral, to to bylo tylko dla tego danego request. Jak ty sekunde pozniej wejdziesz na strone, to ty juz tych danych nie masz bo ty robisz zupelnie nowy request.

Jak chcesz sobie zobaczyc co ci oni wysylaja dokladnie, to zapisuj zawartosc POST i GET do logow tudziez pliku i sobie przegladaj co tam jest.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.07.2019, 14:53:20
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


jesli jako adres na jaki oni przekaża mi dane podam im http://blablabla.verify.php?id=12345
to czy moge zrobic skrypt na stronie verify.php ze jesli przekaza mi GET te 12345 to tablice $_POST zapisze do pliku z id=1234 ?
W ten sposob dla kazdego requestu beda mial inny plik z danymi z tablicy ?!
dobrze to rozumiem ?
Go to the top of the page
+Quote Post
nospor
post 1.07.2019, 14:55:02
Post #8





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




No mozesz, tylko po co? Czemu nie zapisywac wszystkiego do jednego pliku jak leci?Toz ty to bedziesz testowal i za kazdym razem mozesz sobie ten plik przejrzec - przeciez bedziesz wiedzial kiedy zrobiles testowy przelew. No ale jak ci wygodniej


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 1.07.2019, 14:59:12
Post #9





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


w momencie jak przestane testowac , to nie muszę tych danych zapisywać questionmark.gif? tylko za każdym razem jak P24 wyślą requesta z danymi w $_POST to skrypt się wykona ?

Go to the top of the page
+Quote Post
nospor
post 1.07.2019, 15:02:28
Post #10





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




No P24 wysyla ci tam info o transakcji. Zazwyczaj, ludzie transakcje/zamowienia trzymaja w bazie. Wiec jak ci P24 wysle docelowo tam info to ty to info masz zapisac w bazie dla danej transakcji/zamowienia.

Ja ci teraz mowilem o zapisywaniu do pliku, bo chciales zobaczyc co idzie. Docelowo to bedzie zbedne bo wszelkie info powinno byc w bazie razem zamowieniem. No chyba ze ty zamowien nie trzymasz w bazie...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 2.07.2019, 12:41:24
Post #11





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


ok , mniej więcej załapałem logikę i przepływ danych bez przeglądarki.
dziękuję za użyteczne informacje smile.gif

to be continued wink.gif

dostaje się do danych $_POST wysyłanych z P24 na verify.php
Zapisuje je do pliku "jak leci" (dla potrzeb testowych)
Jest to jeden ciąg znaków - samych wartości
Starałem się dostać do wartości przez nazwy pól :
  1. foreach ($_POST as $key => $value)
  2. file_put_contents ('post_tablica.txt', $key.'='.$value);


Plik jest pusty , pętla nie działa bo nie widzi żadnych $key
tablica powinna mieć np : $_POST['p24_merchant_id'] = 10293 ;
gdzie p24_merchant_id jest $key a 10293 to $value

jak to możliwe że wysyłają wartość bez nazwy pola

btw. jak testowo wysyłam na ten adres wlasny formularz to pętla mi odbiera "name" i "value"
coś poradzicie ?
Go to the top of the page
+Quote Post
Neutral
post 2.07.2019, 12:43:19
Post #12





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Napisz to poniżej i podaj odpowiedź.

  1. var_dump($_POST);
Go to the top of the page
+Quote Post
nospor
post 2.07.2019, 12:44:52
Post #13





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Po pierwsze to nadpisujesz ciagle dane w pliku
Po drugie zapisuj cala tablice bez bawienia sie w klucze i wartosci

  1. file_put_contents('plik.txt', print_r($_POST, true) . print_r($_GET, true), FILE_APPEND);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 2.07.2019, 12:51:29
Post #14





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


Cytat(Neutral @ 2.07.2019, 13:43:19 ) *
Napisz to poniżej i podaj odpowiedź.

  1. var_dump($_POST);


Cytat(nospor @ 2.07.2019, 13:44:52 ) *
Po pierwsze to nadpisujesz ciagle dane w pliku
Po drugie zapisuj cala tablice bez bawienia sie w klucze i wartosci

  1. file_put_contents('plik.txt', print_r($_POST, true) . print_r($_GET, true), FILE_APPEND);



PRZEPRASZAM , NAMIESZALEM exclamation.gif!
W zlym miejscu umiescilem Wasze skrypty sad.gif
ale łoś ze mnie sad.gif

wynik jest :

Array
(
[p24_session_id] => 0282bo2tl2sfb47601e5ttjcjs
[p24_amount] => 100
[p24_order_id] => 300139328
[p24_pos_id] => 90716
[p24_merchant_id] => 90716
[p24_method] => 143
[p24_statement] => p24-H13-A93-A28
[p24_currency] => PLN
[p24_sign] => 2937e0571c08b7ba57e6aac9e23c959c
)
Array
(
)
Array
(
)
Array
(
)

Ten post edytował multiqlti 2.07.2019, 12:58:43
Go to the top of the page
+Quote Post
Neutral
post 2.07.2019, 12:53:42
Post #15





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


To znaczy, że nic nie dostałeś od czegoś tam od metody $_POST. Nie otrzymałeś danych, więc pętla foreach nie ma jak przemielić danych, zwraca więc false na wejściu i do ciała pętli nie wchodzi, kod we wnętrzu pętli się nie wykona wtedy.

Jeśli już otrzymałeś dane, to co chcesz z nimi zrobić. Wysłać je gdzie? Podaj jakiś wzór, co masz, a czego oczekujesz, żeby było.

Ten post edytował Neutral 2.07.2019, 13:00:57
Go to the top of the page
+Quote Post
multiqlti
post 2.07.2019, 13:01:15
Post #16





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


poprawiłem wywołanie skryptu (w złym pliku był sad.gif )
otrzymuje teraz zawartośc $_POST
sprawdzę czy moge je wywołać wg. własnej woli
coś czuję , że po tych moich przejściach pokusze się o spisanie tego tutaj step-by-step dla potomności tongue.gif

to ponownie , podpowiedzcie proszę , czemu ten skrypt nie działa sad.gif

Kod
$ch = curl_init('https://sandbox.przelewy24.pl/trnVerify');
curl_setopt_array($ch, array(
        CURLOPT_POST => true,
        CURLOPT_URL => 'https://sandbox.przelewy24.pl/trnVerify',
        CURLOPT_POSTFIELDS => $_POST,
        CURLOPT_RETURNTRANSFER => true
    ));
        $output  = curl_exec($ch);
        file_put_contents('odpowiedz.txt', var_dump($output));
        if($output === FALSE) {
        die(curl_error($ch));
    }


Ten post edytował multiqlti 2.07.2019, 13:42:52
Go to the top of the page
+Quote Post
nospor
post 2.07.2019, 13:44:53
Post #17





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




nie var_dump a print_r. wyraznie napisalem. I to z drugim parametrem TRUE. Czytaj co dostajesz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
multiqlti
post 2.07.2019, 13:47:34
Post #18





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 1.07.2019

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


zrobiłem
  1. file_put_contents('plik.txt', print_r($_POST, true) . print_r($_GET, true), FILE_APPEND);

mam w pliku :
Array
(
[p24_session_id] => 7o4339egldlho1eg1ku1ofpk5u
[p24_amount] => 100
[p24_order_id] => 300139409
[p24_pos_id] => 90716
[p24_merchant_id] => 90716
[p24_method] => 143
[p24_statement] => p24-E13-A94-A09
[p24_currency] => PLN
[p24_sign] => 4346e22a21578830f53c77ec4c8c7196
)
Array
(
[ok] => 1
)

próbuje teraz te dane przesłać do weryfikacji z ich serwerem i poniżej skrypt nie zwraca mi niczego a na serwerze p24 nic sie nie weryfikuje (sprawdzam recznie)
  1. $ch = curl_init('https://sandbox.przelewy24.pl/trnVerify');
  2. curl_setopt_array($ch, array(
  3. CURLOPT_POST => true,
  4. CURLOPT_URL => 'https://sandbox.przelewy24.pl/trnVerify',
  5. CURLOPT_POSTFIELDS => $_POST,
  6. CURLOPT_RETURNTRANSFER => true
  7. ));
  8. $output = curl_exec($ch);
  9. file_put_contents('odpowiedz.txt', var_dump($output));
  10. if($output === FALSE) {
  11. die(curl_error($ch));
  12. }


na wielu stronach pokazana jest wysylana tablica , czy można wysłać $_POST w taki sposób , czy trzeba ja przerobić ?
admin własnie mi sprawdził że curl mamy WŁĄCZONY na serwerze , wiec to musi być moja sprawka ze nie śmiga

Ten post edytował multiqlti 2.07.2019, 13:54:36
Go to the top of the page
+Quote Post
nospor
post 2.07.2019, 13:54:37
Post #19





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




file_put_contents('odpowiedz.txt', var_dump($output));
Przeciez ci napisalem
print_r a nie var_dump.......................... x 1000000000

A w tym konkretnym wypadku moze byc i nawet bez print_r czyli poprostu
file_put_contents('odpowiedz.txt', $output);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Neutral
post 2.07.2019, 13:59:39
Post #20





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Napisz sobie środowisko testowe do CuRL i tam testuj, następnie jak już załapiesz o co chodzi, wykonaj request'a do server'a API do którego chcesz. Oczywiście dane możesz przekopiować sobie na testowe środowisko, te array ( ... ) przypisując do zmiennej na przykład.

forumphp1.php:
  1. <body style="background: darkolivegreen;">

  1. <?php
  2.  
  3. $ch = curl_init('http://localhost:8000/lisp/forumphp2.php');
  4.  
  5. curl_setopt_array($ch, array(
  6.  
  7. CURLOPT_POST => TRUE,
  8. CURLOPT_POSTFIELDS => ['hello' => 10],
  9. CURLOPT_RETURNTRANSFER => TRUE
  10.  
  11. ));
  12.  
  13. $output = curl_exec($ch);
  14.  
  15. var_dump($output);
  16.  
  17. ?>

  1. </body>


forumphp2.php:
  1. <?php
  2. if(isset($_POST['hello'])) {
  3. echo $_POST['hello']+2;
  4. } else {
  5. echo 44;
  6. }
  7. ?>


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: 18.04.2024 - 07:20