[STRIPE] Abonnement récurrent

Par ToinouPHP, il y a 5 ans


Bonjour à tous, imaginons que j'ai une option de paiement par Stripe, que dois je changer pour que ça se transforme en abonnement récurrent ? ( Comme sur Grafikart par exemple )

pagepourlancerlepaiement.php :

var stripe = Stripe("CléSTRIPE"); var checkoutButton = document.getElementById("checkout-button"); checkoutButton.addEventListener("click", function () { fetch("pageverspaiement.php", { method: "POST", }) .then(function (response) { return response.json(); }) .then(function (session) { return stripe.redirectToCheckout({ sessionId: session.id }); }) .then(function (result) { // If redirectToCheckout fails due to a browser or network // error, you should display the localized error message to your // customer using error.message. if (result.error) { alert(result.error.message); } }) .catch(function (error) { console.error("Error:", error); }); });

pageverspaiement.php :

<?php session_start(); require 'vendor/autoload.php'; \Stripe\Stripe::setApiKey('cléStripe'); header('Content-Type: application/json'); $YOUR_DOMAIN = 'https://site.com'; $checkout_session = \Stripe\Checkout\Session::create([ 'payment_method_types' => ['card', 'bancontact'], 'line_items' => [[ 'price_data' => [ 'currency' => 'eur', 'unit_amount' => 200, 'product_data' => [ 'name' => 'Nom du package', 'images' => image, ], ], 'quantity' => 1, ]], 'mode' => 'payment', 'success_url' => $YOUR_DOMAIN . '/sucess.php', 'cancel_url' => $YOUR_DOMAIN . '/error.php', ]); echo json_encode(['id' => $checkout_session->id]); ?>

17 réponses

ToinouPHP, il y a 5 ans

Du coup, j'imagine que je dois aussi changer quelque chose dans la partie Javascript, car ton code ne fonctionne pas :/

Aashan, il y a 5 ans

Bonjour,

Tu as des erreurs côté serveur ? Côté javascript ?

ToinouPHP, il y a 5 ans

Oui, je viens de regarder, j'ai une erreur 500 menant vers pageverspaiement.php `

Failed to load resource: the server responded with a status of 500 ()
Aashan, il y a 5 ans

Le probleme est donc côté php... Mais il faudrait le détail de cette erreur 500.

ToinouPHP, il y a 5 ans

Ca dit :

SyntaxError: The string did not match the expected pattern

Et ça mène vers la partie javascript qui affiche l'erreur ( console.log(error) ) etc

Aashan, il y a 5 ans

Quel string ?

Regarde ou le probleme se situe, et en fonction check la doc de stripe (si le probleme vient bien de là) pour voir ce qui est attendu.

ToinouPHP, il y a 5 ans

Y a rien de plus indiqué :/

Aashan, il y a 5 ans

Il n'y a pas un numero de ligne ?

Renvoi le code php.

ToinouPHP, il y a 5 ans

Y a le numéro de ligne, mais ça renvoi vers :

.then(function (response) { return response.json(); })

et

.catch(function (error) { console.error("Error:", error); });

c´est quand meme compliqué ><

ToinouPHP, il y a 5 ans

J'imagine une virgule au lieu du point virgule ?

$checkout_session = \Stripe\Checkout\Session::create([ 'payment_method_types' => ['card', 'bancontact'], 'line_items' => [[ 'price_data' => [ 'currency' => 'eur', 'product_data' => [ 'name' => 'Premium' ], 'unit_amount' => '200', 'recurring' => [ 'interval' => 'month', 'interval_count' => 1 ] ], 'quantity' => 1 ]], 'mode' => 'subscription', ]), 'success_url' => $YOUR_DOMAIN . '/sucess.php', 'cancel_url' => $YOUR_DOMAIN . '/error.php', ])`

Non, je viens d'essayer
Qu'est ce que tu veux dire ?

ToinouPHP, il y a 5 ans

Merci à toi de te démener, je viens d'essayer, ça ne fonctionne toujours pas :/

ToinouPHP, il y a 5 ans

up

Aashan, il y a 5 ans

c´est normal que ca arrive ici. l´erreur se trouve dans le php, renvoi le code code php

ToinouPHP, il y a 5 ans

Actuellement :

<?php session_start(); require 'vendor/autoload.php'; \Stripe\Stripe::setApiKey('cléStripe'); header('Content-Type: application/json'); $YOUR_DOMAIN = 'https://site.com'; $checkout_session = \Stripe\Checkout\Session::create([ 'payment_method_types' => ['card', 'bancontact'], 'line_items' => [[ 'price_data' => [ 'currency' => 'eur', 'unit_amount' => 200, 'product_data' => [ 'name' => 'Nom du package', 'images' => image, ], ], 'quantity' => 1, ]], 'mode' => 'payment', 'success_url' => $YOUR_DOMAIN . '/sucess.php', 'cancel_url' => $YOUR_DOMAIN . '/error.php', ]); echo json_encode(['id' => $checkout_session->id]); ?>

Avec ton code :

<?php session_start(); require 'vendor/autoload.php'; \Stripe\Stripe::setApiKey('cléStripe'); header('Content-Type: application/json'); $YOUR_DOMAIN = 'https://site.com'; $checkout_session = \Stripe\Checkout\Session::create([ 'payment_method_types' => ['card', 'bancontact'], 'line_items' => [[ 'price_data' => [ 'currency' => 'eur', 'product_data' => [ 'name' => 'Premium' ], 'unit_amount' => '200', 'recurring' => [ 'interval' => 'month', 'interval_count' => 1 ] ], 'quantity' => 1 ]], 'mode' => 'subscription', ]); 'success_url' => $YOUR_DOMAIN . '/sucess.php', 'cancel_url' => $YOUR_DOMAIN . '/error.php', ]); echo json_encode(['id' => $checkout_session->id]); ?>
ToinouPHP, il y a 5 ans

up

ToinouPHP, il y a 5 ans

Oui, jai résolu le problème depuis et effectivement, c'était bien le bancontact qui posait problème !