Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Treść Premium po dokonaniu Płatności
Skorpion96
post 14.03.2023, 20:51:54
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 14.03.2023

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


Witam,
Staram się swoich sił w PHP i piszę na swoją stronę system płatności oparty o HotPay. Do tej pory udało mi się poprawnie wywołać płatność oraz notyfikację lecz mam problem z napisaniem odpowiedniego kodu do strony gdzie będzie wyświetlana wartość Premium czyli po dokonanej płatności.

Mam bazę z tabelą: pay_payer do której trafia cała notyfikacja z dokonanej płatności.
id | id_platnosci | id_zamowienia | status | hash | kwota | date_pay
1 | 5017d07eb1 | nm_10 | SUCCESS | 1d745... | 20 | 2023-03-05 15:55:26

Płatność wywołuję kodem:
  1. <?php
  2. $FORMULARZ = [
  3. "SEKRET" => "xxxxxxxxxx",
  4. "KWOTA" => "20",
  5. "NAZWA_USLUGI" => "Premium",
  6. "ADRES_WWW" => "https://moja-strona.pl/premium/sukces.php",
  7. "ID_ZAMOWIENIA" => "nm_10",
  8. "EMAIL" => "",
  9. "DANE_OSOBOWE" => "",
  10. ];
  11.  
  12. echo '<form id="order" action="https://platnosc.hotpay.pl/" method="post">';
  13. foreach ($FORMULARZ as $klucz=>$value){
  14. echo '<input name="'.$klucz.'" value="'.$value.'" type="hidden">';
  15. }
  16. // HASH funkcji skrótu sha256, składającej się z hash("sha256","HASLOZUSTAWIEN".";" . $FORMULARZ["KWOTA"] . ";" . $FORMULARZ["NAZWA_USLUGI"] . ";" . $FORMULARZ["ADRES_WWW"] . ";" . $FORMULARZ["ID_ZAMOWIENIA"] . ";" . $FORMULARZ["SEKRET"])
  17.  
  18. echo '<input name="HASH" required value="'.hash("sha256", "HASLOZUSTAWIEN".";" . $FORMULARZ["KWOTA"] . ";" . $FORMULARZ["NAZWA_USLUGI"] . ";" . $FORMULARZ["ADRES_WWW"] . ";" . $FORMULARZ["ID_ZAMOWIENIA"] . ";" . $FORMULARZ["SEKRET"]).'" type="hidden">';
  19. echo '<button type="submit">DALEJ</button></form>';


W w/w zmiennej gdzie jest ADRES_WWW to jest to adres powrotny na jaką użytkownik powraca po dokonaniu płatności.

I tutaj zaczynają się moje schody... potrzebuję aby użytkownik powracając na stronę https://moja-strona.pl/premium/sukces.php miał ukazaną wartość premium która dla zwykłego użytkownika jest niedostępna, od supportu HotPay dostałem tylko taką informację:
Cytat
Należy płatność powiązać z użytkownikiem, informacje o płatności są wysyłane kanałem niejawnym który nie jest dostępny dla zwykłego użytkownika, najłatwiejszym sposobem będzie dodać np. ID zamówienia -> podczas inicjalizacji ustawić np. sukces.php?=id_zamowienia=XXX -> użytkownik przeprowadza płatność i zostaje wysłana notyfikacja kanałem niejawnym -> powrót do sklepu to np. succes.php?=id_zamowienia=XXX -> należy sprawdzić czy zamówienie XXX zostało poprawnie opłacone, jeśli tak to można wyświetlić płatną zawartość.


I pytanie jak poprawnie skonstruować zapytanie/kod by połączyć te dane płatności z użytkownikiem oraz pokazywaie zawartości premium dla danego użytkownika... Niestety przykładowy skrypt notyfikacji dostępny w HoPay nie zwraca danych takich jak EMAIL czy DANE_OSOBOWE więc nie mam pomysłu jak mógłbym pod daną płatność przypisać jakiegoś użytkownika.

Poniżej przedstawiam przykładowy kod notyfikacji:
  1. <?php
  2. /*
  3. $_POST["KWOTA"] - wartość płatności
  4. $_POST["ID_PLATNOSCI"] - unikalne id płatności
  5. $_POST["ID_ZAMOWIENIA"] - id zamówienia podane podczas inicjacji
  6. $_POST["STATUS"] - FAILURE / SUCCESS / PENDING
  7. $_POST["SEKRET"] - sekret danej usługi
  8. $_POST["SECURE"] - oznaczenie bezpiecznej transakcji
  9. $_POST["HASH"] - hash funkcji skrótu sha256, składającej się z hash("sha256","HASLOZUSTAWIEN;".$_POST["KWOTA"].";".$_POST["ID_PLATNOSCI"].";".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";".$_POST["SECURE"].";".$_POST["SEKRET"])
  10. */
  11. if(!empty($_POST)){
  12. if(!empty($_POST["KWOTA"]) &&
  13. !empty($_POST["ID_PLATNOSCI"]) &&
  14. !empty($_POST["ID_ZAMOWIENIA"]) &&
  15. !empty($_POST["STATUS"]) &&
  16. !empty($_POST["SEKRET"]) &&
  17. !empty($_POST["SECURE"]) &&
  18. !empty($_POST["HASH"])
  19. ){
  20. if(hash("sha256","HASLOZUSTAWIEN;".$_POST["KWOTA"].";".$_POST["ID_PLATNOSCI"].";".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";".$_POST["SECURE"].";".$_POST["SEKRET"]) == $_POST["HASH"]){
  21. //komunikacja poprawna
  22. if($_POST["STATUS"]=="SUCCESS"){
  23. //płatność zaakceptowana
  24. echo "Płatność została poprawnie opłacona";
  25. // Zmienna do bazy danych
  26. }else if($_POST["STATUS"]=="FAILURE"){
  27. //odrzucone
  28. echo "Płatność zakończyła się błędem";
  29. // Zmienna do bazy danych
  30. }else if($_POST["STATUS"]=="PENDING"){
  31. //odrzucone
  32. echo "Płatność oczekuje na realizacje";
  33. // Zmienna do bazy danych
  34. }
  35. }
  36. }else{
  37. echo "BRAK WYMAGANYCH DANYCH";
  38. }
  39. }


Ten post edytował Skorpion96 14.03.2023, 20:55:58
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 09:35