Как указать, что должен делать скрипт после успешной оплаты через PayPal с кодом PHP - PullRequest
0 голосов
/ 24 марта 2020

Впервые я внедряю платежи на своем сайте.

Я хотел бы создать переменную или автоматически отправить форму, которая создаст переменную или $_POST переменную, которая принимает значение TRUE или FALSE в зависимости от статуса платежа.

Ниже моя идея сделать это, но, изучая исходный код сайта в режиме разработки, мы все еще можем увидеть «скрытые» значения, в которых я указал GET переменных (id), которые сделали бы его бессмысленным из-за отсутствия переменной, которая не может быть изменена пользователем, теперь мы можем легко получить доступ к странице ххх? id и весь код будет работать, даже если не нажать кнопку оплаты. У вас есть идеи или схемы, как решить мою проблему? Спасибо. ФОРМА:

<form action="paypal...." method="post">
   <input type="hidden" name="cmd" value="xxx">
   <input type="hidden" name="business" value="xxxxx">
   <input type="hidden" name="item_name" value="xxx">
   <input type="hidden" name="currency_code" value="PLN">
   <input type="hidden" name="amount" value="0.01">
   <input type="hidden" name="return" value="http://xxx/xxx?id=xxxxxx">
   <input type="hidden" name="item_name" value="<?=$x?>">
   <input type="image" src="xxx" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>

СТРАНИЦА «xxx» на входе «return»

$y=$_GET['id'];
header("Location: mecz?id=$y");
$osoba=$_GET['osoba'];
$osoba1=$_SESSION['zalogowany'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT ... FROM ... WHERE id='$y'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$dobana = $row['ban'];
$dobana.=$_SESSION['zalogowany']." ";



if($_POST['unsign'])
{
    $sql = "UPDATE ... SET $... ='',ban='$dobana' WHERE id='$y'";
}
else
{
    $sql = "UPDATE ... SET $... ='$osoba1' WHERE id='$y'";
}

if ($conn->query($sql) === TRUE) {
    echo "Dodano osobe!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

1 Ответ

1 голос
/ 24 марта 2020

@ Комментарии комментариев Джеффа находят примеры на http://paypal.github.io/PayPal-PHP-SDK/samples. Однако v1 PayPal- PHP -SDK устарел и не должен использоваться

Вместо этого используйте v2 Checkout- PHP -SDK

Эти API Решения на основе данных обеспечат вам немедленный синхронный ответ об успешном / неудачном платеже, когда вы попытаетесь захватить, что является лучшим решением вашей проблемы.

Для лучшего взаимодействия с пользователем, объедините v2 SDK на стороне сервера с этим внешним шаблоном: https://developer.paypal.com/demo/checkout/# / pattern / server

Альтернативное решение заключается в сохранении формы HTML only web 1.0 в вопросе и добавлении асинхронного IPN или webhook слушатель для обновления статуса оплаты. Это менее надежное решение (зависит от отдельной службы асинхронных уведомлений) и более низкий уровень оплаты через Web 1.0, но его проще реализовать.


Предполагается, что вы настраиваете платежи API с намерением: CAPTURE и выполнение немедленного захвата после одобрения плательщика, а затем - после того, как вышеперечисленное работает для успешного пути - не пренебрегайте обработкой сбоев источника финансирования , чтобы в случае сбоя захвата на сервере когда, например, первая карта плательщика отклонена, она передается обратно в пользовательский интерфейс, и они могут просто выбрать другую.

...