Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Płatność online i odczyt danych z bazy
alkesz1718
post 2.06.2019, 21:13:53
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

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


Witam, napisałem skrypt płatności online dzięki któremu użytkownik może zakupić klucz licencyjny na coś tam, działa to na zasadzie że użytkownik podaje adres swojej strony, przechodzi do płatności i jeśli została wykonana płatność poprawnie to pokazuje klucz. I teraz mam 2 problemy a mianowicie:

1. skrypt nie chce mi zapisywać danych jeśli w tabeli mam ID (samo uzupełniające się pole) a bez tego mi zapisuje normalnie ale to uciążliwe :/ poniżej podaję kod połączenia z bazą danych i zapisywanie danych do tabeli:

  1. <?php
  2. $md5me = trim($_POST['md5me']);
  3. $email = trim($_POST['email']);
  4. $amount = trim($_POST['amount']);
  5. if(isset($_POST['md5me'])) {
  6. //MD5 encode the submitted content
  7. $key = md5($_POST['md5me']);
  8. }
  9. {
  10. $md5me = addslashes($md5me);
  11. $email = addslashes($email);
  12. $key = addslashes($key);
  13. $amount = doubleval($amount);
  14. }
  15. @ $db = new mysqli('localhost','nazwa','hasło','nazwa');
  16.  
  17. if (mysqli_connect_errno())
  18. {
  19. echo 'Połączenie z bazą nie powiodło się. Spóbuj ponownie';
  20. }
  21. $db->query('SET NAMES utf8');
  22. $db->query('SET CHARACTER_SET utf8_unicode_ci');
  23. $zapytanie = "insert into licence values ('".$md5me."', '".$email."', '".$key."', '".$amount."')";
  24. $wynik = $db->query($zapytanie);
  25.  
  26. $result = $db->query("SELECT key FROM licence ORDER BY key DESC LIMIT 1");
  27. $klucz = $row['key'];
  28.  
  29.  
  30. /*
  31.   Konfiguracja przelewów
  32.   */
  33. $config = array(
  34. 'transfers' => array(
  35.  
  36. 'shopid' => xxxx, // shopid - parametr umożliwiający idetyfikacje sklepu przyjmującego płatność.
  37.  
  38. 'userid' => xxxx, // ID partnera w serwisie
  39.  
  40. 'hash' => 'xxxxxxxxxxxxxxxxxxxxxxxxx',
  41.  
  42. 'description' => 'moduł', //Tytuł płatności
  43.  
  44. 'return_urlc' => 'https://microsms.pl/przelewy?checkPayment', //Adres url pod który system MicroSMS ma przesłać informacje do księgowości
  45.  
  46. 'return_url' => 'https://strona z modułem/index.php', //Adres pod który zostanie odesłany klient po dokonaniu płatności
  47. )
  48. );
  49.  
  50. include('microsms.class.php');
  51. $transfer = new MicroSMSTransfers;
  52.  
  53. if(isset($_GET['checkPayment']) && $_POST['status']) {
  54.  
  55. $psc->validate_ipn();
  56.  
  57. $psc->validate_user($config, $_POST);
  58.  
  59.  
  60. if($_POST['status'] == TRUE) {
  61. }
  62.  
  63. exit('OK');
  64. }
  65.  
  66.  
  67. if(isset($_GET['status']) && isset($_GET['hash']) && isset($_GET['orderID'])) {
  68.  
  69. if($_GET['hash'] == md5($_GET['status'].$_GET['orderID'].$config['transfers']['hash'])) {
  70. if($_GET['status'] == true) {
  71. if(isset($_POST['md5me'])) {
  72. $md5ed = md5($_POST['md5me']);
  73. }
  74. $okmsg = 'Płatność przebiegła prawidłowo<br />Twój klucz to:'.$klucz;
  75. } else {
  76. $errormsg = 'Płatność przebiegła negatywnie.';
  77. }
  78. } else {
  79. $errormsg = 'Płatność przebiegła negatywnie.';
  80. }
  81. }
  82.  
  83. if(isset($_POST['send'])) {
  84.  
  85. if(!isset($_POST['email']) OR !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
  86. $errormsg = 'Adres email jest nieprawidłowy.';
  87.  
  88. if(isset($_POST['amount'])) {
  89. if (!is_numeric($_POST['amount']) == TRUE OR $_POST['amount'] < 1) {
  90. }
  91. } else {
  92. }
  93.  
  94. if(!isset($errormsg)) {
  95.  
  96. $transfer->add('shopid', $config['transfers']['shopid']);
  97. $transfer->add('return_url', $config['transfers']['return_url']);
  98. $transfer->add('return_urlc', $config['transfers']['return_urlc']);
  99. $transfer->add('description', $config['transfers']['description']);
  100. $transfer->add('amount', $_POST['amount']);
  101. $transfer->add('signature', md5($config['transfers']['shopid'] . $config['transfers']['hash'] . $_POST['amount']));
  102. $transfer->add('email', $_POST['email']);
  103. $transfer->add('control', '1234');
  104. $transfer->add('md5me',$_POST['md5me']);
  105. $transfer->submit();
  106.  
  107. $errormsg = 'Płatność nie mogła zostać wygenerowana.';
  108. }
  109. }
  110. ?>


nie wiem gdzie tu mam błąd ale wiem że to jedyny kod działający do dodawania rekordów do bazy danych

2 problem to taki że jeśli użytkownik przejdzie do strony płatności i po opłacie powróci na stronę na początku to nie wyświetla mi klucza licencyjnego z tabeli z wartości $key, próbowałem na różne sposoby odczytać tą wartość ale nic nie daje

może ktoś z was mi pomoże

Ten post edytował alkesz1718 2.06.2019, 21:15:44
Go to the top of the page
+Quote Post
markonix
post 2.06.2019, 21:43:37
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Jeżeli robisz prosty INSERT podając po kolei wszystkie wartości to nie możesz żadnej ominąć. Dodaj NULL na początku lub zmień na wersje
Kod
`name` = `value`


Ten post edytował markonix 2.06.2019, 21:43:45


--------------------
Go to the top of the page
+Quote Post
alkesz1718
post 2.06.2019, 22:01:38
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

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


hmm no ok zmieniłem zapytanie do bazy na
  1. $zapytanie = "insert into licence values ('".$id."','".$md5me."', '".$email."', '".$key."', '".$amount."')";

i teraz dodaje mi poprawnie ale pozostaje kwestia wyświetlania teraz z tej tabeli klucza z pod wartości $key
największy problem w tym że jak wpiszę dane i przechodzę do płatności to otwiera mi się nowa strona w tym samym okienku i po powrocie nie wyświetla mi tego klucza a informacje od strony płatności że przebiegło wszystko pomyślnie już tak.

Myślałem już by to zrobić na takiej zasadzie że na 1 stronie użytkownik zaczyna opłacanie produktu a po opłaceniu go przenosi go na 2 stronę gdzie może podać dane strony i wtedy wyświetli mu klucz ale wówczas musiałbym jakoś zabezpieczyć się przed tym by ktoś wchodząc bezpośrednio na 2 stronę znając adres nie mógł otrzymać tego klucza nie robiąc wcześniej opłaty
Go to the top of the page
+Quote Post
markonix
post 3.06.2019, 00:14:27
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(alkesz1718 @ 2.06.2019, 23:01:38 ) *
hmm no ok zmieniłem zapytanie do bazy na
  1. $zapytanie = "insert into licence values ('".$id."','".$md5me."', '".$email."', '".$key."', '".$amount."')";

i teraz dodaje mi poprawnie ale pozostaje kwestia wyświetlania teraz z tej tabeli klucza z pod wartości $key
największy problem w tym że jak wpiszę dane i przechodzę do płatności to otwiera mi się nowa strona w tym samym okienku i po powrocie nie wyświetla mi tego klucza a informacje od strony płatności że przebiegło wszystko pomyślnie już tak.

Myślałem już by to zrobić na takiej zasadzie że na 1 stronie użytkownik zaczyna opłacanie produktu a po opłaceniu go przenosi go na 2 stronę gdzie może podać dane strony i wtedy wyświetli mu klucz ale wówczas musiałbym jakoś zabezpieczyć się przed tym by ktoś wchodząc bezpośrednio na 2 stronę znając adres nie mógł otrzymać tego klucza nie robiąc wcześniej opłaty

Nie mówiłem żebyś ręcznie ustawiał id bo to bez sensu, a przekazał NULL lub pominął.

Co do przekierowania.. No samo z siebie żadne ID się nie przekaże.. Sesja, wysyłka linku innym kanałem albo odbiór parametrów, ale to zależy co udostępnia operator. Poza tym przekierowanie z bramki ze statusem success nie oznacza, że płatność jest zaksięgowana, a jedynie, że przelew został wykonany poprawnie.


--------------------
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: 29.03.2024 - 06:06