Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Płatności prosty serwis
Forum PHP.pl > Forum > PHP
login90
Witam
https://hotpay.pl/documentation_v3/tech_paybylink.pdf api - hotpay

Mam w planie uruchomić niedługo taki mały serwis płatny. Chciałbym aby płatności po zapłaceniu przez uzytkonika przelewem wbijały się do bazy danych tak abym wiedział kto zapłącił a kto nie. Mam takie pytanie czy ja dobrze rozkminiam system płatności. Bo wiem, że muszę skorzystać z api bramki płatności. Teraz tak

Mam plik .htaccess i w nim

RewriteRule ^hotpay/([0-9a-zA-Z]+)/([0-9a-zA-Z]+) hotpay.php?id=$1&uid=$2

plik konta takie jak się uztkonik loguje do pobieram jego dane z bazy danych
  1. $sql = ('select userid,username from uzytkownicy where userid='$id' and username='$uid');
  2.  
  3. $result = mysqli_query($connect, $sql) or die(mysqli_error());
  4.  
  5. while($row = mysqli_fetch_object($result)) {
  6.  
  7. echo '<li><a href="hotpay/$row->userid/$row->username">Zapalc z hotpay</a></li>';
  8. }
  9.  
  10. }




i teraz czy dobrze to rozkmniniłem

To jest api hotpay

  1. <form id="order" action="https://platnosc.hotpay.pl/"
  2. method="post">
  3. <input required name="SEKRET" value="SEKRET_USLUGI"
  4. type="hidden">
  5. <input required name="KWOTA" value="1" type="hidden">
  6. <input required name="NAZWA_USLUGI" value="XXX"
  7. type="hidden">
  8. <input required name="ADRES_WWW" value="XXX" type="hidden">
  9. <input required name="ID_ZAMOWIENIA" value="XXX"
  10. type="hidden">
  11. <input name="EMAIL" value="" type="hidden">
  12. <input name="DANE_OSOBOWE" value="" type="hidden">
  13. <button type="submit">DALEJ</button>
  14. </form>
  15. 5.3 Od.biór notyfikacji
  16. Płatności obsługiwane są za pośrednictwem komunikacji POST. Poniższy kod opisuje
  17. przykład dotyczy obsługi notyfikacji w PHP
  18. <?php
  19. /*
  20. */
  21. $HASH_Z_USTAWIEN="XXX";
  22. if(!empty($_POST["KWOTA"]) &&
  23. !empty($_POST["ID_PLATNOSC$_POST["KWOTA"] - wartość płatności
  24. $_POST["ID_PLATNOSCI"] - unikalne id płatności
  25. $_POST["ID_ZAMOWIENIA"] - id zamówienia podane podczas inicjacji
  26. $_POST["STATUS"] - FAILURE / SUCCESS / PENDING
  27. $_POST["SEKRET"] - sekret danej usługi
  28. $_POST["HASH"] - hash funkcji skrótu sh256, składającej się z
  29. hash("sha256","HASHZUSTAWIEN;".$_POST["KWOTA"].";".$_POST["ID_PLAT
  30. Strona 7
  31. NOSCI"]."
  32. ;".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";".$_POST["SEKRET
  33. "])
  34. I"]) &&
  35. !empty($_POST["ID_ZAMOWIENIA"]) &&
  36. !empty($_POST["STATUS"]) &&
  37. !empty($_POST["SEKRET"]) &&
  38. !empty($_POST["HASH"])
  39. ){
  40.  
  41. if(hash("sha256",$HASH_Z_USTAWIEN.";".$_POST["KWOTA"].";".$_POST["
  42. ID_PLATNOSCI"].";".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";
  43. ".$_POST["SEKRET"]) == $_POST["HASH"]){
  44. //komunikacja poprawna
  45. if($_POST["STATUS"]=="SUCCESS"){
  46. //płatność zaakceptowana
  47.  
  48. }else if($_POST["STATUS"]=="FAILURE"){
  49. //odrzucone
  50. }
  51. }
  52.  
  53. }

czy dobrze to rozumiem, że tu trzeba przypisać zmienne np
$kwota = $_POST["KWOTA"];
$platnosci = $_POST["ID_PLATNOSCI"];
$idzamowienia = $_POST["ID_ZAMOWIENIA"];
$status = $_POST["STATUS"];
$sekret = $_POST["SEKRET"];
$hash = $_POST["HASH"];
hash("sha256","HASHZUSTAWIEN;".$_POST["KWOTA"].";".$_POST["ID_PLAT
Strona 7
NOSCI"]."
;".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";".$_POST["SEKRET
"])

żeby pobrać id i nazwe uztkownika trzeba w pliku zrobić coś takiego

  1. if(isset($_GET['id'] && isset($_GET['uid'])) {
  2.  
  3. $id = $_GET['id'];
  4. $username = $_GET['uid'];
  5. $kwota = $_POST["KWOTA"];
  6. $platnosci = $_POST["ID_PLATNOSCI"];
  7. $idzamowienia = $_POST["ID_ZAMOWIENIA"];
  8. $status = $_POST["STATUS"];
  9. $sekret = $_POST["SEKRET"];
  10. $hash = $_POST["HASH"];
  11. hash("sha256","HASHZUSTAWIEN;".$_POST["KWOTA"].";".$_POST["ID_PLAT
  12. Strona 7
  13. NOSCI"]."
  14. ;".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";".$_POST["SEKRET
  15. "])
  16.  
  17. $HASH_Z_USTAWIEN="XXX";
  18. if(!empty($_POST["KWOTA"]) &&
  19. !empty($_POST["ID_PLATNOSCI"]) &&
  20. !empty($_POST["ID_ZAMOWIENIA"]) &&
  21. !empty($_POST["STATUS"]) &&
  22. !empty($_POST["SEKRET"]) &&
  23. !empty($_POST["HASH"])
  24. ){
  25.  
  26. if(hash("sha256",$HASH_Z_USTAWIEN.";".$_POST["KWOTA"].";".$_POST["
  27. ID_PLATNOSCI"].";".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";
  28. ".$_POST["SEKRET"]) == $_POST["HASH"]){
  29. //komunikacja poprawna
  30. if($_POST["STATUS"]=="SUCCESS"){
  31. i tu np
  32.  
  33. $connect = ('localhost','','','') or die(mysqli_error());
  34. $sql = "INSERT INTO platnosci(`id`,`username`,`kwota`, `id_paltnosci`,`id_zamowienia`,`status`, `sekret`,`hash`) VALUES('$id','$username', '$kwota','$id_platnosci','$id_zamowienia', '$status', $sekret', '$hash')";
  35. $result = mysqli_query($connect, $sql) or die(mysqli_error());
  36. $sql = ('update users and set status='zaplacone' where userid="$id"');
  37. $reuslt - mysqli_query($connect, $sql) or die(mysqli_error());
  38. ;
  39. }else if($_POST["STATUS"]=="FAILURE"){
  40. echo 'coś poszło nie tak'; }
  41. }
  42.  
  43. }
  44.  
  45.  
  46. }



Dzięki
viking
Wszystkie płatności działają tak samo. Zapisujesz dane płatności u siebie, user jest przekierowany, płaci. Strona w odpowiedzi wysyła na zdefiniowany przez ciebie adres odpowiedź zawierającą dane wpłaty która musisz przetworzyć i porównać z zapisanymi danymi.
login90
Ale dobrze raczej rozkminiłem. W sensie, że jakbym się zapisał do hotpaya i wrzuciłbym taki plik na serwer to zadziałałby i miałbym o zapłaceniu te dane w bazie. Nie chce nikomu przez przypadek wyczyścić konta.
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-2024 Invision Power Services, Inc.