ArcherQ | 2021-02-17 10:25:39 UTC | #1
Witam,
mam problem bo skrypt od płatności nie wykonuję się po operacji
W sensie płatność normalnie dokonuje ale już po wykonaniu płatności nic się nie dzieje,biała strona, nie daje wpisu do mysqla ze ktoś zakupił cokolwiek
tak jak by się zacinał w jakimś momencie
ktoś coś?
tutaj daje skrypt:
<?php
/*
$_POST["KWOTA"] - wartość płatności
$_POST["ID_PLATNOSCI"] - unikalne id płatności
$_POST["ID_ZAMOWIENIA"] - id zamĂłwienia podane podczas inicjacji
$_POST["STATUS"] - FAILURE / SUCCESS / PENDING
$_POST["SEKRET"] - sekret danej usługi
$_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["SEKRET"])
*/
if(!empty($_POST["KWOTA"]) &&
!empty($_POST["ID_PLATNOSCI"]) &&
!empty($_POST["ID_ZAMOWIENIA"]) &&
!empty($_POST["STATUS"]) &&
!empty($_POST["SEKRET"]) &&
!empty($_POST["HASH"])
){
if(hash("sha256","xxx;".$_POST["KWOTA"].";".$_POST["ID_PLATNOSCI"].";".$_POST["ID_ZAMOWIENIA"].";".$_POST["STATUS"].";".$_POST["SEKRET"]) == $_POST["HASH"]){
//komunikacja poprawna
if($_POST["STATUS"]=="SUCCESS"){
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";
$illegal = "#$%^&*()+=-[]'`;,./{}|:<>?~";
if(false !== strpbrk($_POST["ID_ZAMOWIENIA"], $illegal)) {
header('Location: https://firecore.eu/sklep/false');
exit();
return;
}
try {
$milliseconds = round(microtime(true) * 1000);
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$diamonds = $_POST['KWOTA']*10;
$diamonds = $diamonds+intval($diamonds*0.5);
$sql = "INSERT INTO `payments` (`name`, `value`, `buy_time`)
VALUES ('".$_POST['ID_ZAMOWIENIA']."', '".$diamonds."', '".$milliseconds."')";
// use exec() because no results are returned
$conn->exec($sql);
header('Location: https://firecore.eu/sklep/true');
exit();
}
catch(PDOException $e)
{
header('Location: https://firecore.eu/sklep/false');
exit();
}
$conn = null;
}else if($_POST["STATUS"]=="FAILURE"){
header('Location: https://firecore.eu/sklep/false');
exit();
}
}
}
psycho | 2019-11-05 22:53:52 UTC | #2
Nie wiem, może jestem ślepy, ale nie widzę tu w ogóle jakiegoś odwołania do serwisu płatności czy czegoś co ma te płatności obsługiwać. Nie rozumiem też dawania return;
po exit();
. Sam skrypt też jest napisany bardzo słabo i zalecałbym jego poprawę. Na początek zacznij od usunięcia w success ten return;
po exit();
.
//EDIT:
Jako, że link do strony jest podany w poście pozwoliłem sobie sprawdzić to ,,na własnej skórze” (oczywiście bez płatności) i odkryłem kilka rzeczy, które nie powinny mieć miejsca. Dla bezpieczeństwa całego serwisu nie będę podawał ich do wiadomości publicznej. Autor może dowiedzieć się w ramach potrzeby po napisaniu do mnie prywatnie.
ArcherQ | 2019-11-08 15:05:26 UTC | #3
no już napisałem na pv
system | 2021-02-17 10:25:43 UTC | #5
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.