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:
<?php
$md5me = trim($_POST['md5me']); $email = trim($_POST['email']); $amount = trim($_POST['amount']); if(isset($_POST['md5me'])) { //MD5 encode the submitted content
$key = md5($_POST['md5me']); }
{
}
@ $db = new mysqli('localhost','nazwa','hasło','nazwa');
if (mysqli_connect_errno())
{
echo 'Połączenie z bazą nie powiodło się. Spóbuj ponownie'; }
$db->query('SET NAMES utf8');
$db->query('SET CHARACTER_SET utf8_unicode_ci');
$zapytanie = "insert into licence values ('".$md5me."', '".$email."', '".$key."', '".$amount."')";
$wynik = $db->query($zapytanie);
$result = $db->query("SELECT key FROM licence ORDER BY key DESC LIMIT 1");
$klucz = $row['key'];
/*
Konfiguracja przelewów
*/
'shopid' => xxxx, // shopid - parametr umożliwiający idetyfikacje sklepu przyjmującego płatność.
'userid' => xxxx, // ID partnera w serwisie
'hash' => 'xxxxxxxxxxxxxxxxxxxxxxxxx',
'description' => 'moduł', //Tytuł płatności
'return_urlc' => 'https://microsms.pl/przelewy?checkPayment', //Adres url pod który system MicroSMS ma przesłać informacje do księgowości
'return_url' => 'https://strona z modułem/index.php', //Adres pod który zostanie odesłany klient po dokonaniu płatności
)
);
include('microsms.class.php');
$transfer = new MicroSMSTransfers;
if(isset($_GET['checkPayment']) && $_POST['status']) {
$psc->validate_ipn();
$psc->validate_user($config, $_POST);
if($_POST['status'] == TRUE) {
}
}
if(isset($_GET['status']) && isset($_GET['hash']) && isset($_GET['orderID'])) {
if($_GET['hash'] == md5($_GET['status'].$_GET['orderID'].$config['transfers']['hash'])) { if($_GET['status'] == true) {
if(isset($_POST['md5me'])) { $md5ed = md5($_POST['md5me']); }
$okmsg = 'Płatność przebiegła prawidłowo<br />Twój klucz to:'.$klucz;
} else {
$errormsg = 'Płatność przebiegła negatywnie.';
}
} else {
$errormsg = 'Płatność przebiegła negatywnie.';
}
}
if(isset($_POST['send'])) {
if(!isset($_POST['email']) OR
!filter_var
($_POST['email'], FILTER_VALIDATE_EMAIL
)) $errormsg = 'Adres email jest nieprawidłowy.';
if(isset($_POST['amount'])) { if (!is_numeric($_POST['amount']) == TRUE OR
$_POST['amount'] < 1
) { }
} else {
}
$transfer->add('shopid', $config['transfers']['shopid']);
$transfer->add('return_url', $config['transfers']['return_url']);
$transfer->add('return_urlc', $config['transfers']['return_urlc']);
$transfer->add('description', $config['transfers']['description']);
$transfer->add('amount', $_POST['amount']);
$transfer->add('signature', md5($config['transfers']['shopid'] . $config['transfers']['hash'] . $_POST['amount'])); $transfer->add('email', $_POST['email']);
$transfer->add('control', '1234');
$transfer->add('md5me',$_POST['md5me']);
$transfer->submit();
$errormsg = 'Płatność nie mogła zostać wygenerowana.';
}
}
?>
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