Bonjour,

je suis le tutoriel sur l'installation de stripe et je remarque que depuis, stripe a complètement changé et le tutoriel n'est plus à jour. Mon problème est que à la dixième minute de la vidéo, il y a le code

Stripe.card.createToken($form, function(status, response) {
});

Et la console affiche une erreur : TypeError: Stripe.card is undefined

alors j'ai reardé la documentation de stripe sur createToken, il faut enlever card, ça donne donc :

Stripe.createToken($form, function(status, response) {
});

Mais ça ne marche toujours pas et la console affiche l'erreur suivante : TypeError: Stripe.createToken is not a function

Et si je regarde la documentation, rien ne m'aide à comprendre où est mon erreur...

Est-ce quelqu'un peut m'aider s'il vous plaît ?

Merci.

9 réponses


Tu as essayé de faire un console.log de Stripe pour voir ce qu'il contenait ?

Grophies
Auteur

Je viens d'essayer

console.log( Stripe );

ça affiche function ti(); dans la console avec plein d'informations dedans. Mais en regardant le contenu de cette fonction, j'ai l'impression que c'est une fonction récursive. J'ai un peu de mal à comprendre le contenu de cette fonction.

Bonjour.
Tu n'as pas du aller bien loin pour lire la doc, car dès la première page de celle-ci, il y a la réponse à ton problème :

var stripe = Stripe('pk_test_6pRNASCoBOKtIshFeQd4XMUh');
var elements = stripe.elements();

var card = elements.create('card');
card.mount('#card-element');

var promise = stripe.createToken(card);
promise.then(function(result) {
  // result.token is the card token.
});

Voir ici : stripe docs » Try Now.

Grophies
Auteur

Je suis désolé, j'aurais dû mettre tout mon code. Quand j'ai dit que j'ai regardé la documentation, je voulais dire de la fonction createToken, je n'ai pas pensé à aller regarder ailleurs, je n'ai pas bien compris où se situe mon problème. Je vais poster l'ensemble de mon code dès que je peux.

Grophies
Auteur

Voici tout mon code au moment où j'en suis dans la vidéo :

"use strict";

            var $form = $("#payment_form");

            document.addEventListener("DOMContentLoaded", function()
            {
                jQuery(document).ready(function($)
                {
                    Stripe('pk_test_xxxxxxxxxxxxxxxxxxxx');

                    $form.submit( function(event) {
                        event.preventDefault();

                        $form.find(".button").attr("disabled", true);

                        Stripe.createToken($form, function(status, response) {

                        });
                    } );
                });
            });

Es-tu sur d'avoir regardé le code de la documentation que j'ai retranscrit ?
Dans le code que j'ai retranscrit, ils stockent l'initialisation de Stripe avec le token dans une variable, et ensuite ils utilisent cette variable pour utiliser les différentes méthodes de l'objet Stripe.
En plus de ça, au lieu d'utiliser la documentation, tu continues de te baser sur le tutoriel qui était sur la V2 au lieu de la version actuelle qui est la 3.

Grophies
Auteur

Je viens de vérifier, j'utilise bien la version 3 de stripe, car un peu au-dessus de createToken, il y a un message en couleur de fond vert pour  ceux qui sont encore à la version 2. Voici le lien de la page : [https://stripe.com/docs/stripe-js/reference#stripe-create-token]()

Est-ce que je peux avoir le lien de la page où tu as trouvé la solution ?

Ps: désolé, je viens de voir le lien dans ton message, je ne l'avais pas vu parce qu'il était tout en bas.

Grophies
Auteur

Ton code est adapté dans le cas où on intégre le formulaire de stripe, pas au cas où je crée moi-même le formulaire comme dans le tutoriel de grafikart. Du coup, je ne sais pas ce que je dois mettre dans card.mount, dans les parenthèses. Est-ce que je dois mettre tout le formulaire ("#payment_form") ou le bouton submit (".button") ? Je pense (mais je ne suis pas sûr, je ne connais pas du tout stripe, je le découvre avec ce tutoriel) ni l'un ni l'autre parce qu'encore une fois, ce code de stripe semble plutôt adapté dans le cas où on intégre leur formulaire et pas si on crée soi-même le formulaire...

Si tu veux un tutoriel récent de Grafikart concernant le paiement via Stripe, tu peux regarder Mise en pratique de la POO en PHP » Tunnel d'achat vers 55 minutes 25 secondes, tu verras l'intégration du script directement dans le formulaire.