Я немного новичок в программировании с этим продвинутым материалом, но я хочу учиться. Я надеюсь, что вы можете помочь мне заставить его работать, а не тогда, когда люди отменяют платеж и все еще получают другие вещи. Я хочу знать, как сделать веб-крючок идеальным, если у вас есть лучший способ создания платежа. Отлично asswel
на странице индекса есть форма оплаты с c javascript включено
Я хочу получить уведомление для чередования (с помощью webhook), когда платеж будет осуществлен, и после этого он должен отправить электронное письмо с тикером для магазина.
index. php
<form id="payment-form" class="betaal">
<div class="weggeven">
<h1>Aantal verkochten cadeau kaarten</h1>
</div>
<div class="aantal">
<p id="aantal"><?php aantal(); ?></p>
</div>
<div class="form-row">
<label for="name">
Name
</label>
<input id="name" name="name" placeholder="Jenny Rosen" required>
</div>
<div class="form-row">
<label for="name">
Email
</label>
<input id="email" name="email" placeholder="test@gmail.com" required>
</div>
<div class="form-row">
<label for="ideal-bank-element">
iDEAL Bank
</label>
<div id="ideal-bank-element">
<!-- A Stripe Element will be inserted here. -->
</div>
</div>
<div class="bedrag">
<p>
Bedrag € <span id="prijs"></span>
</p>
</div>
<div class="info">
<span>U heeft voor de bon: <b class="bon"><?= $_GET['betalen'] ?></b> gekozen</span>
</div>
<button>nu betalen</button>
<!-- Used to display form errors. -->
<div id="error-message" role="alert"></div>
<div class="pedi">
<a href="https://www.pedicurepraktijkpapendrecht.nl/">pedicurepraktijkpapendrecht</a>
</div>
</form>
var stripe = Stripe('api key');
// Create an instance of Elements.
var elements = stripe.elements();
var options = {
// Custom styling can be passed to options when creating an Element.
style: {
base: {
// Add your base input styles here. For example:
fontSize: '16px',
color: '#32325d',
padding: '10px 12px',
},
}
}
// Create an instance of the idealBank Element.
var idealBank = elements.create('idealBank', options);
// Add an instance of the idealBank Element into
// the `ideal-bank-element` <div>.
idealBank.mount('#ideal-bank-element');
idealBank.on('change', function(event) {
var bank = event.value;
// Perform any additional logic here...
});
// Create a source or display an error when the form is submitted.
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
event.preventDefault();
var randNo = Math.floor(Math.random() * 100) + 2 + "" + new Date().getTime() + Math.floor(Math.random() * 100) + 2 + (Math.random().toString(36).replace(/[^a-zA-Z]+/g, '').substr(0, 5));
var email = document.querySelector('input[name="email"]').value;
var sourceData = {
type: 'ideal',
amount: price,
currency: 'eur',
owner: {
name: document.querySelector('input[name="name"]').value,
email: document.querySelector('input[name="email"]').value,
},
// Specify the URL to which the customer should be redirected
// after paying.
redirect: {
return_url: 'https://url/stripe/cadeau.php?gelukt=jaa' + '&email=' + email + '&id=' + randNo + '&bon=' + bon,
},
};
// Call `stripe.createSource` with the idealBank Element and
// additional options.
stripe.createSource(idealBank, sourceData).then(function(result) {
if (result.error) {
// Inform the customer that there was an error.
var errorElement = document.getElementById('error-message');
errorElement.textContent = error.message;
} else {
// Redirect the customer to the authorization URL.
stripeSourceHandler(result.source);
}
});
});
function stripeSourceHandler(source) {
// Redirect the customer to the authorization URL.
document.location.href = source.redirect.url;
}
при получении. php мы получим материал из платежа (электронная почта, имя, ect) и вставим это в базе данных
fetch. php
if (isset($_GET['gelukt'], $_GET['email'], $_GET['id'])) {
$input = @file_get_contents('php://input');
$event_json = json_decode($input);
if ($event_json->type == 'source.chargeable') {
$aankoop_id = $_GET['id'];
$email = $_GET['email'];
$bon = $_GET['bon'];
$select_stmt = $db->prepare('SELECT * FROM cadeau WHERE aankoop_id =?'); //sql select query
$select_stmt->execute([$aankoop_id]);
$aankoopcheck = $select_stmt->fetch();
unset($select_stmt);
if ($aankoopcheck) {
// email found
echo"<h1 class='gestuurd'>De email is al verstuurd!</h1>";
} else {
$gebruikt = "nee";
$sql = "INSERT INTO `cadeau` (`aankoop_id`, `gebruikt`, `bon`) VALUES (?,?,?)";
$stmt= $db->prepare($sql);
$stmt->execute([$aankoop_id, $gebruikt, $bon]);
unset($stmt);
$sender = 'info@pedicurepraktijkpapendrecht.nl';
$subject = "Pedicurepraktijkpapenrecht tegoedbon";
$message = "Bedankt voor uw bestelling.\r\n U kunt hem download via deze link: https://www.pedicurepraktijkpapendrecht.nl/stripe/download.php?email=" . $email . "&id=" . $aankoop_id . "&bon=" . $bon;
$headers = 'From:' . $sender;
if (mail($email, $subject, $message, $headers))
{
}
else
{
}
}
}
}
на cadeau. php это как бы полная страница оплаты была письмо будет отправлено с cadeau. php
<?php
include('fetch.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<script src="https://js.stripe.com/v3/"></script>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="style.css">
<title>Email versturen naar uw email!</title>
</head>
<body>
<div class="form-row">
<h1>Bedankt voor het kopen van een tegoedbon!</h1>
<p>Uw tegoedbon word gestuurd naar uw email!</p>
<div class="flex">
<a href="https://www.pedicurepraktijkpapendrecht.nl/"
class="btn text-center margin-right max-width">Naar de
website</a>
<a href="checkout.php" class="btn text-center margin-right max-width">Nog een tegoedbon kopen?</a>
</div>
</div>
</body>
</html>