Selon la documentation, Checkout prend en charge deux intégrations différentes: Simple et Personnalisée.
La manière simple fonctionne pour moi:
**<form action="create_subscription.php" method="POST">**
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="asdsdfasd3232"
data-amount="2000"
data-name=""
data-description="2 widgets"
data-image="https://s3.amazonaws.com/stripe-uploads/acct_19EnQrGHC6pu6Qvdmerchant-icon-1485553962843-logo_stripe.png"
data-locale="auto">
</script>
</form>
Cependant, de manière personnalisée, je ne comprends pas comment et où devrais-je appeler le script "create_subscription.php". Voici le code d'intégration personnalisé:
<script src="https://checkout.stripe.com/checkout.js"></script>
<button id="customButton">Purchase</button>
<script>
var handler = StripeCheckout.configure({
key: 'asdsdfasd3232',
image: 'https://s3.amazonaws.com/stripe-uploads/acct_19EnQrGHC6pu6Qvdmerchant-icon-1485553962843-logo_stripe.png',
locale: 'auto',
token: function(token) {
// You can access the token ID with `token.id`.
// Get the token ID to your server-side code for use.
}
});
document.getElementById('customButton').addEventListener('click', function(e) {
// Open Checkout with further options:
handler.open({
name: '',
description: '2 widgets',
amount: 2000
});
e.preventDefault();
});
// Close Checkout on page navigation:
window.addEventListener('popstate', function() {
handler.close();
});
</script>
J'ai essayé ce code, mais ça ne marche pas. Quelqu'un peut me diriger dans la bonne direction?
<form action="/create_subscription.php" method="POST">
<script src="https://checkout.stripe.com/checkout.js"></script>
<div id="stripe-demo" class="evo-button rounded cele">
<span>Register</span>
</div>
<script>
var handler = StripeCheckout.configure({
key: "asdsdfasd3232",
image: "img/logo.png",
name: "",
description: "Subscription for 1 month",
panelLabel: "Sign Me Up!",
amount: "2000",
allowRememberMe: false
});
document.getElementById('stripe-demo').addEventListener('click', function(e) {
handler.open();
e.preventDefault();
});
window.addEventListener('popstate', function() {
handler.close();
});
</script>
</form>
Merci à Comdenz C’est ainsi que je résous le problème en utilisant le formulaire existant et en appelant le code côté serveur.
<script src="https://checkout.stripe.com/checkout.js"></script>
<script>
var handler = StripeCheckout.configure({
key: "your testing key",
locale: 'auto',
image: "image/directory",
name: "Name",
description: "your discription",
panelLabel: "Click to make payment",
allowRememberMe: false,
token: function(token) {
// Prevent user from leaving page
window.onbeforeunload = function() {
return "";
}
// Dynamically create a form element to submit the results
// to your backend server
var form = document.getElementById("payment-form");
form.setAttribute('method', "POST");
form.setAttribute('action', "//localhost/dubb/charge.php");
// Add the token ID as a hidden field to the form payment-form
var inputToken = document.createElement("input");
inputToken.setAttribute('type', "hidden");
inputToken.setAttribute('name', "stripeToken");
inputToken.setAttribute('value', token.id);
form.appendChild(inputToken);
// Add the email as a hidden field to the form
var inputEmail = document.createElement("input");
inputEmail.setAttribute('type', "hidden");
inputEmail.setAttribute('name', "stripeEmail");
inputEmail.setAttribute('value', token.email);
form.appendChild(inputEmail);
// Finally, submit the form
document.body.appendChild(form);
// Artificial 5 second delay for testing
setTimeout(function() {
window.onbeforeunload = null;
document.forms["payment-form"].submit()
}, 5000);
}
});
document.getElementById('stripe-demo').addEventListener('click', function(e) {
handler.open();
e.preventDefault();
});
// Close Checkout on page navigation:
window.addEventListener('popstate', function() {
handler.close();
});
</script>
Avec cela, vous avez besoin de créer un nouveau formulaire, il suffit d'appeler votre formulaire existant à l'aide du code javascript.
Dans la fonction de rappel token
, vous devez faire le nécessaire pour soumettre le jeton à votre serveur.
Pour ce faire, vous devez généralement avoir un élément de formulaire avec un élément masqué. À partir du rappel, vous définissez la valeur de l'élément masqué sur l'ID de jeton et soumettez le formulaire.
Vous pouvez également créer le formulaire de manière dynamique à partir de zéro, ou lancer une demande AJAX, ou toute autre méthode appropriée à vos besoins spécifiques.
Voici un exemple d'intégration personnalisée qui utilise un formulaire existant et définit la valeur des éléments masqués à partir du rappel: https://jsfiddle.net/ywain/g2ufa8xr/
J'espère que celui-ci vous aidera. Vous pouvez vous référer ici https://Gist.github.com/ziadoz/5101836
<input
type="submit"
value="Pay with Card"
data-key="PUBLISHABLE STRIPE KEY"
data-amount="500"
data-currency="cad"
data-name="Example Company Inc"
data-description="Stripe payment for $5"
/>
<script src="https://checkout.stripe.com/v2/checkout.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script>
$(document).ready(function() {
$(':submit').on('click', function(event) {
event.preventDefault();
var $button = $(this),
$form = $button.parents('form');
var opts = $.extend({}, $button.data(), {
token: function(result) {
$form.append($('<input>').attr({ type: 'hidden', name: 'stripeToken', value: result.id })).submit();
}
});
StripeCheckout.open(opts);
});
});
</script>
`
Je suis juste avec tout ça. J'ai donc trouvé des indices sur https://jsfiddle.net/user/ywain/fiddles/1/ . Ici, vous devriez regarder le https://jsfiddle.net/ywain/9zscyyhg/ . En été, vous devez obtenir le jeton de bande à Jeton: function (jeton) { // Vous pouvez accéder à l'ID de jeton avec token.id
. // Obtenez l'ID de jeton dans votre code côté serveur pour pouvoir l'utiliser.
La soumission de l’achat déclenche uniquement le formulaire de paiement modal Stripe. Donc, à partir du formulaire, il doit y avoir un moyen de revenir au site. Cela doit être fait avec du code javascript supplémentaire.
Payer le post sur Payer le strip personnalisé sans poster vous avez le même problème que moi. J'espère que cela vous aide