Problème de configuration de Stripe et checkout.js!

Bonjour

J’ai suivi votre doc mais je n’arrive pas a faire fonctionner…

Sur mon environnement de test:

  1. j’ai créé le fichier config.php
<?php
require_once('mon_dossier_lib_stripe/init.php'); 
$stripe = array(
 "secret_key"      => " sk_test_zzzzzzzzzzzzzzzzzzzzzz",
 "publishable_key" => " pk_test_dddddddddddddddd"
);
\Stripe\Stripe::setApiKey($stripe['secret_key']);
?>
  1. Dans ma page de paiement (paiement.php), j’ai mis le formulaire avec ma clé pk , le bon prix
<form action="'PROCESS.php" method="POST">
        <script
          src="https://checkout.stripe.com/checkout.js" class="stripe-button"
          data-key="pk_test_dddddddddddddddd"
          data-amount="2000"
          data-name="Ltd xxxxxxxxxxxxxxxxxxxxx"
          data-description="'.$products_list.'"
          data-image="/images/general/header.png"
          data-locale="auto"
          data-currency="eur">
        </script>
      </form>
  1. Dans mon fichier PROCESS.php qui correspond a charge.php j’ai le code suivant:
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_zzzzzzzzzzzzzzzzzzzzzz");

// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
    'amount' => 999,
    'currency' => 'usd',
    'description' => 'Example charge',
    'source' => $token,
]);

Est ce que le nom du fichier peut etre different de charge.php ?

Le bouton de paiement est bien sur ma page.

Lorsque je clique dessus j’ai le formulaire de paiement qui s’affiche correctement avec le bon montant et la bonne liste de produits.

Je saisie le numero de visa

Visa accepted: 4012888888881881

Comme date je mets une date dans le futur et comme crypto je mets 123

Et je valide.

Je vois le bouton VERT et ensuite le formulaire disparaît et le bonton de paiement devient grisé.

Mais je ne suis pas redirigé vers ma page PROCESS.php qui va me permettre de créer ma commande…

Eest ce que j’ai loupé quelque chose ?

D’avance merci pour vos réponses !!!

Bien à vous,

Alexis de Montpellier

Faudrait que j’aie l’URL de la page en question, ça aiderait beaucoup.

Dans ton code, tu as une faute dans l’URL de l’action de ton formulaire.

Tu as un guillemet avant ton process.php!

image

Et je mettrais peut-être le chemin absolu vers le script pour être certain de ne pas avoir de problème!

Donc quelque chose comme https://www.tonsite.com/php/process.php.

J’ai formaté ton post pour que ce soit plus lisible. Tu peux utiliser les 3 backticks ( ```) avant et après ton code pour faire le formatage de code.

Bonjour

merci pour ta réponse : j’avais fait une erreur en postant le formulaire que j’avais bidouiller
voici le vrai formulaire

<form action="https://www.mon-site-production.com/checkout_process.php" method="POST">
       <script
         src="https://checkout.stripe.com/checkout.js" class="stripe-button"
         data-key="pk_test_ddddddddddddd"
         data-amount="24800"
         data-name="ABC Production"
         data-description="1 CACAO "
         data-image="/images/general/header.png"
         data-locale="auto"
         data-currency="eur">
       </script>
</form>

une question : j’ai créé le ficher config.php;
Faut il que je l’appelle avec un require_once dans la page ou j’ai le bouton de paiement ‘PAY WITH CARD’

en tout cas merci a toi de répondre !

Merci pour ton aide

Bien à toi

Alexis de Montpellier

Hahaha tu es un peu mêlé dans ton usage de Stripe mon ami :slight_smile:

Vois-tu, tu as créé un formulaire qui ne contient absolument aucune données:

Pour qu’un formulaire contiennent des données, ces dernières doivent absolument être imbriqué dans des balises <input name="nom de la variable" value="valeur de la variable">.

Et tu dois également avoir un bouton de type submit que tu peux faire de plusieurs façons, dont <button type="submit">Clique moi pour payer</button>


De la façon que tu procèdes présentement, tu utilises checkout.js pour faire la transaction avec ce code-ci:

Il s’agit de deux choses complètements différentes et elles ne se parlent pas. C’est donc normal que ton fichier PHP ne soit pas utilisé.

Je te recommande de rester avec ce code là puisqu’il est beaucoup plus simple à configurer.

Pour personnaliser le petit pop-up de paiement, tu dois mettre les données dans les champs du scripts.

Comme tu peux voir, tu as la valeur amount=“24800” (donc 248.00$) avec la description, l’image et ton nom d’inscrit.

Tu peux modifier ces données en PHP avec les bonnes valeurs si tu veux.

Ceci étant dit. Après avoir vu ton site web, je ne peux m’empêcher de remarquer que tu ne sembles pas utiliser de CRM populaire. C’est, selon moi, une grave erreur.

Être à ta place, je referais le tout avec WordPress, SquareSpace ou Shopify puisque ça va être moins long de tout refaire là-dessus que de programmer un système de paiement performant pour ton site.

Been there, done that :sweat_smile:

Bonjour Chef Suprême

j’ai fait plusieurs corrections dans le formulaire :

  • le bon calcul du prix pour le formulaire de paiement STRIPE
  • j’ai mis des données dans mon formulaire
  • le bouton submit n’est pas nécessaire car c’est STRIPE qui ré-dirige vers checkout_process.php

et CELA FONCTIONNE , je suis bien redirigé vers checkout_process.php

mais ensuite j’ai une erreur dans mon checkout_process.php

dans la doc https://stripe.com/docs/charges
pour php voici le code proposé

// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxx");

// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];

tep_ecrit_fic_alex ($fic_alex, date('Y-m-d H:i:s').' 3-5-1 checkout_process.php token STRIPE='.$token);

$charge = \Stripe\Charge::create([
    'amount' => 999,
    'currency' => 'usd',
    'description' => 'Example charge',
    'source' => $token,
]);

moi dans mon script checkout_process.php, j’ai mis

tep_ecrit_fic_alex ($fic_alex, date('Y-m-d H:i:s').' 3-5-0 checkout_process.php avant STRIPE $_POST='.pre($_POST));
  
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxx");

// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];

tep_ecrit_fic_alex ($fic_alex, date('Y-m-d H:i:s').' 3-5-1 checkout_process.php token STRIPE='.$token);

$charge = \Stripe\Charge::create([
    'amount' => $_POST['data-amount'],
    'currency' => $_POST['data-currency'],
    'description' => $_POST['data-description'],
    'source' => $token,
]);

tep_ecrit_fic_alex ($fic_alex, date('Y-m-d H:i:s').' 3-5-2 checkout_process.php apres STRIPE');

et dans le POST
j’ai bien le retour de STRIPE !!!

$_POST=<pre>Array
(
    [data-amount] => 155200
    [data-description] => 2 CUIVRE 2 CACAO
    [data-currency] => eur
    [stripeToken] => tok_1CoBNXKI8ZsW2qj5sEDdUtUp
    [stripeTokenType] => card
    [stripeEmail] => test@corporation-business-production.com
)
</pre>

Mais je n’arrive pas dans le trace suivante , ca pante sur

\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxx");

je ne connais pas cette syntaxe de PHP
je suis en version PHP Version 5.4.45
est ce suffisant ?

et tout cas tu m’a fait progresser dans la résulution de mon probleme

Bien à Toi Chef Suprême

Alexis de Montpellier

Tu as bien ajusté le formulaire! :+1:

<form action="https://www.corporation-business-production.com/checkout_process.php" method="POST">
        <script src="https://checkout.stripe.com/checkout.js" class="stripe-button active" data-key="pk_test_Z8K5M3FJj4WX8tFzhCKYGrTI" data-amount="180000" data-name="Ltd Capital Insurance Corp Business Production" data-description="2 CUIVRE 3 CACAO " data-image="/images/general/header.png" data-locale="auto" data-currency="eur">
        </script><button type="submit" class="stripe-button-el" style="visibility: visible;"><span style="display: block; min-height: 30px;">Pay with Card</span></button>
<input type="hidden" name="data-amount" value="180000">
<input type="hidden" name="data-description" value="2 CUIVRE 3 CACAO">
<input type="hidden" name="data-currency" value="eur">
</form>

Voici ce que je vois dans ma console comme requête à partir du moment où tu cliques sur payer:

Tu as ben et bien une erreur PHP dans ton script.

As-tu activé tes erreurs? Tu peux le faire en ajoutant ça en PHP:

  error_reporting(E_ALL & ~E_NOTICE);
  ini_set('display_errors', 'on');

Ça va te dire à quelle ligne ça plante.

Si t’as pas assez d’infos, je vais te donner un truc un peu louche, mais je suis pas vraiment dev alors whatever! :laughing:

Je met des echo "."; un peu partout dans mon script et je calcul le nombre de point que ça me donne dans la page pour trouver exactement à quelle ligne mon erreur fatale s’est produite.

Il y a sans doute une façon plus efficace de procéder (lol) mais jusqu’à présent ça m’a bien servi.

En tout cas, tu n’as pas d’erreur de syntaxe à ta ligne setApiKey. En temps normal, tu mets ça juste après avoir inclus ton script de Stripe. Ça voudrait dire que ton script plante dès le début!

CHef Suprême,
j’ai mis ton code
et voici l’erreur

Fatal error: Class ‘Stripe\Stripe’ not found in /home/corporatpz/www/checkout_process.php on line 95

j’ai rajouté include(‘config.php’) en debut de script

ET CA FONCTIONNE !!!

ma commande est créée correctement sur mon site, mon panier est vidé
et je retrouve le montant dans le Dashbord de test de STRIPE

Vraiment merci pour ton aide Grand Chef Suprême

bon forum la tranchée !

Alexis de Montpellier

2 « J'aime »