11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'ai un petit soucis avec un script JS que je ne connais pas assez pour trouver la solution. J'ai bien sûr chercher dans les forums, mais sans succès.
Est-ce que l'un de vous pourrait m'aider SVPL.
Je vous explique : Il s'agit d'un paiement en ligne avec Stripe.
Lorsque j'écris ceci, ça fonctionne bien :

<script>
Stripe.setPublishableKey('pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxv') // clé public test écrit en dur
    var $form = $('#payment_form')
    $form.submit(function(e) {
        e.preventDefault()
        $form.find('.button').attr('disabled', true)
        Stripe.card.createToken($form, function(status, response) {
            if (response.error) {
                $form.find('.message').remove();
                $form.prepend('<div class="alert-danger"<p>' + response.error.message + '</p> </div>');
            } else {
                var token = response.id
                $form.append($('<input type="hidden" name="stripeToken">').val(token))
                $form.get(0).submit()
            }
        })
    })
</script>

Lorsque je veux utiliser une variable de la clé public que je récupère au préalable avec un SELECT comme ceci, ça ne fonctionne pas alors que $item['cle_public_test'] est bien affiché lorsque je fais un var_dump ou un print-r de $item.

<script>
    Stripe.setPublishableKey($item['cle_public_test'])
    var $form = $('#payment_form')
    $form.submit(function(e) {
        e.preventDefault()
        $form.find('.button').attr('disabled', true)
        Stripe.card.createToken($form, function(status, response) {
            if (response.error) {
                $form.find('.message').remove();
                $form.prepend('<div class="alert-danger"<p>' + response.error.message + '</p> </div>');
            } else {
                var token = response.id
                $form.append($('<input type="hidden" name="stripeToken">').val(token))
                $form.get(0).submit()
            }
        })
    })
</script>

J'magine que ça :
Stripe.setPublishableKey($item['cle_public_test'])
n'est pas correct !
Est-ce que vous pouvez me dire comment l'écrie SVPL ?
D'avance mille mrcis de votre aide. Excellente soirée ++
Modifié par Loutschi (15 Nov 2022 - 16:36)
Bonjour,

Attention à ne pas mélanger et confondre PHP et JS qui sont exécutés sur deux environnements différents (coté serveur et coté client).
Au passage les variables JS n'ont pas besoin de commencer par $ comme en PHP.

A priori $item['cle_public_test'] est une variable PHP, une solution simple :
<script>
const key = '<?php echo $item['cle_public_test'] ?>';
Stripe.setPublishableKey(key);
Merci "Pitet" vous êtes formidable !
Tout fonctionne parfaitement.
Comme je vous le disais, je ne maîtrise pas JS, il faudra que je m'y mettre sérieusement et rapidement car je me rends compte que ça me manque énormément.
Belle soirée et encore merci. Je passe le sujet en résolu.
Smiley merci
Meilleure solution