Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dotpay wartości POST problem
rafi0067
post 5.08.2020, 22:46:08
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.08.2020

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


Witam.
Problem następujący. Próbuję zapisać w bazie danych MySql dane z Dotpay wysyłane metodą POST przez Urlc. Dokładnie email i status płatności. Ściana na którą trafiłem wyglada tak że dane otrzymywane bez problemu zapisują się w zewnętrznym pliku dotpay.txt czyli:

CODE
array (
'id' => '758823',
'operation_number' => 'M9979-88759',
'operation_type' => 'payment',
'operation_status' => 'completed',
'operation_amount' => '25.00',
'operation_currency' => 'PLN',
'operation_original_amount' => '25.00',
'operation_original_currency' => 'PLN',
'operation_datetime' => '2020-08-05 23:11:53',
'control' => '',
'description' => 'Dwa pięć',
'email' => 'rafi0067@gmail.com',
'p_info' => 'Test User (rafi0067@gmail.com)',
'p_email' => 'rafi0067@gmail.com',
'channel' => '73',
'signature' => '935c2f737dfe947972de65997d11424061c62de9de05fd6576aeee729a2eeaaa',
)


a kiedy próbuję odwołać się do zmiennej np $_POST['email'] to taka zmienna nie istnieje.

Ktoś ma pomysł jak uzyskać do niej dostęp?
Z góry dziękuję za pomoc.

Tutaj mój cały plik do którego jest odwołanie w Urlc:
CODE
  1. <?php
  2.  
  3. ini_set('display_errors', 'On');
  4.  
  5.  
  6. $servername = "localhost";
  7. $username = "*******";
  8. $password = "*****";
  9. $dbname = "*******";
  10.  
  11. $db = new mysqli($servername, $username, $password, $dbname);
  12.  
  13. if ($db->connect_error) {
  14. echo("Connection failed: " . $db->connect_error);
  15. }
  16.  
  17. file_put_contents('dotpay.txt', var_export($_POST, true), FILE_APPEND);
  18.  
  19. if(isset($_POST['control'])){
  20. $_SESSION['status'] = $_POST['operation_status'];
  21. $_SESSION['email'] = $_POST['email'];
  22.  
  23.  
  24. $sql = "INSERT INTO transkakcje (email, status)
  25. VALUES ('{$_SESSION['email']}', '{$_SESSION['status']}')";
  26.  
  27.  
  28. try{
  29. $db->query($sql);
  30. }catch(Exception $error){
  31. echo $error;
  32. };
  33.  
  34. echo('OK');
  35.  
  36. }else{
  37. var_dump($_SESSION);
  38. var_dump($_POST);
  39. var_dump($_GET);
  40. }
  41. ?>
Go to the top of the page
+Quote Post
viking
post 6.08.2020, 05:32:09
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A skąd wiesz że nie istnieje? Zaloguj dodatkowo wyjątek z bazy. Raczej tu bym szukał problemu.


--------------------
Go to the top of the page
+Quote Post
rafi0067
post 6.08.2020, 09:16:19
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.08.2020

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


Dane z dotpaya się zapisują do pliku czyli to wszystko dociera do skryptu php. Dlaczego w takim razie zmienne

$_SESSION['status'] = $_POST['operation_status'];
$_SESSION['email'] = $_POST['email'];

pozostają jako

$_SESSION['status'] = NULL
$_SESSION['email'] = NULL

i nie przypisują się do nich poprawne wartości?
Go to the top of the page
+Quote Post
nospor
post 6.08.2020, 11:00:45
Post #4





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




Przeciez sesje nie sa dzielone miedzy uzytkownikami.... Ty nie masz dostepu do sesji, ktora stworzyl dotpay


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

"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
rafi0067
post 6.08.2020, 14:53:11
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.08.2020

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


Tak tak tylko chodziło o to żeby to się zapisało tylko w mojej sesji.
Zmienne z POST od dotpaya do mojej sesji.
Tu już kombinowałem.
Wcześniej to wyglądało tak że nie było sesji i chciałem przypisać to do zwykłych zmiennych czyli:

$status = $_POST['operation_status'];
$email = $_POST['email'];

i też nie działało.

Ten post edytował rafi0067 6.08.2020, 14:56:37
Go to the top of the page
+Quote Post
nospor
post 6.08.2020, 14:58:51
Post #6





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




Toc ci przeciez tlumacze: sesje sie nie dziela. Sesja/request dotpay nie moze pisac do Twojej sesji. Tyle w temacie.

Lepiej napisz co docelowo chcesz osiagnac a nie to co ci sie wydaje droga do tego


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

"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
rafi0067
post 6.08.2020, 20:50:27
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.08.2020

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


Cel jest taki żeby wsadzić do bazy danych email osoby dokonującej transakcji i status transakcji z dotpay'a.

Teraz spróbuje te dane wyciągnąć z pliku w którym udało mi się je złapać i dopiero wtedy zapisać w bazie danych. Innego pomysłu nie mam jak na razie.
Go to the top of the page
+Quote Post
viking
post 7.08.2020, 04:38:50
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Dane masz w tablicy post. Skoro var_export je wypisuje to znaczy że masz inny błąd. Możesz się zastosować do tego co już napisałem wczoraj?
Oczywiście błędy trzeba sobie włączyć. Zobacz pierwszy komentarz https://www.php.net/manual/en/class.mysqli-sql-exception.php

Ten post edytował viking 7.08.2020, 04:44:39


--------------------
Go to the top of the page
+Quote Post
rafi0067
post 7.08.2020, 13:21:04
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.08.2020

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


Ok wszystko działa tak jak powinno. Chyba zaczęło działać po modyfikacji części z SQL INSERT INTO ale za dużo zmieniałem i nie pamiętam dokładnie.

Dzięki wielkie za pomoc.

Tutaj działający kod:
CODE
  1. <?php
  2.  
  3. ini_set('display_errors', 'On');
  4.  
  5.  
  6. $servername = "localhost";
  7. $username = "lessus_gjj";
  8. $password = "QuMv0x4Hs";
  9. $dbname = "lessus_gjj";
  10.  
  11. mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
  12.  
  13. try {
  14. $db= new mysqli($servername,$username,$password,$dbname);
  15. } catch (Exception $e) {
  16. echo $e->getMessage();
  17. }
  18.  
  19.  
  20. file_put_contents('dotpay.txt', var_export($_POST, true), FILE_APPEND);
  21.  
  22. if(isset($_POST['email'])){
  23. $status = $_POST['operation_status'];
  24. $email = $_POST['email'];
  25.  
  26. try{
  27. $sql = "INSERT INTO transkakcje (email, status)
  28. VALUES ('$status', '$email')";
  29. }catch(Exception $e){
  30. echo $e;
  31. };
  32.  
  33. try{
  34. $db->query($sql);
  35. }catch(Exception $error){
  36. echo $error;
  37. };
  38.  
  39. echo('OK');
  40.  
  41. }
  42. ?>
Go to the top of the page
+Quote Post
viking
post 7.08.2020, 13:51:32
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Po co ci try/catch na zwykły string? Jeśli chcesz to użyć inaczej niż do zabawy to ja bym ci poradził logować wszystko z POST oraz poprawić echo $e; w catch (oni tam jeszcze FAIL oczekują?).


--------------------
Go to the top of the page
+Quote Post

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.03.2024 - 12:39