Bonjour à tous,

J'avais intégré il y a longtemps sur un petit site web de simples boutons de paiement HTML fournis par PayPal afin de pouvoir vendre des PDFs/CD physiques ou dématérialisés.
Ça fonctionne très bien mais le site web évolue et désormais, il vend aussi à l'international.

Je dois donc trouver un moyen de correctement gérer le montant des frais de livraison selon l'adresse du client.

La seule solution que j'ai trouvé qui permette de récupérer l'adresse du client avant qu'il ait validé l'achat est possible en utilisant leur solution Smart Paiement.

Et plus précisément, on peut le faire avec JS de cette façon à priori.

Mes questions sont les suivantes :
• Je ne suis pas hyper à l'aise avec JS et cette solution côté client me semble peu sécurisée non ? Du côté des docs de PayPal (que je peine à comprendre), je ne trouve pas de solution similaire avec du PHP (je suis plus à l'aise avec ce langage). ça existe au moins ?
• J'ai créé mon propre système de panier d'achat. Je dois donc juste envoyer à PayPal le détail des items du panier avec leur prix + le montant global. Avec cette solution, j'arrive à envoyer le montant total mais dès que j'ajoute le détail des items, ça ne fonctionne plus, et je ne vois pas d'où vient l'erreur Smiley decu

Je bloque donc déjà à la première étape d'initialisation du paiement...


paypal.Buttons({
    createOrder: function(data, actions) {
      // This function sets up the details of the transaction, including the amount and line item details.
      return actions.order.create({
        intent: 'CAPTURE',
        purchase_units: [{
                amount: {
                    value: '25',
                    currency_code: 'EUR',
                    breakdown: {
                        item_total: {value: '25', 
                        currency_code: 'EUR'}
                    }
                },
// Dès que j'ajoute ce détail, ça bug, plus de bouton !
                items: [{
                    name: 'NomDeMonObjet',
                    unit_amount: {value: '25', 
                    currency_code: 'EUR'},
                    quantity: '1'
                }
            }]
      });
    },
    onApprove: function(data, actions) {
      // This function captures the funds from the transaction.
      return actions.order.capture().then(function(details) {
        // This function shows a transaction success message to your buyer.
        alert('Transaction completed by ' + details.payer.name.given_name);
      });
    }
  }).render('#paypal-button-container');


J'aimerais bien apprendre à mettre en place les solutions de paiement PayPal, c'est un gros morceau pour moi, mais je peine vraiment à trouver des infos, des exemples qui puissent me guider. J'ai lu la doc mais je la trouve assez sommaire finalement...

Je reste dispo s'il faut plus d'infos bien entendu. Merci d'avance pour l'aide que vous nous apportez au quotidien Smiley smile
Salut,
Concernant le calcul des frais de port, l'adresse est souvent demandée avant le paiement et l'adresse de paypal est donc ignorée. Apparemment il existe une configuration des frais de livraison dans paypal, mais je ne sais pas s'il gère l'international.

Pour ton code, il y a effectivement un oubli de fermeture de tableau. Une indentation propre avec un éditeur de code approprié te permettrait de détecter ce genre d'erreurs facilement. Smiley cligne


// Dès que j'ajoute ce détail, ça bug, plus de bouton !
        items: [{
          name: 'NomDeMonObjet',
          unit_amount: {
            value: '25',
            currency_code: 'EUR'
          },
          quantity: '1'
        }]
Meilleure solution
Salut Ostara,

Merci pour ta réponse, c'était effectivement tout bête ! Smiley confused
J'utilise VSC mais il ne me signale absolument pas ce genre d'erreur d'étourderie (enfin là c'est plutôt une faute de copier/coller de ma part surtout...). J'imagine qu'une extension pourrait me rendre service dans ce cas là ^^

Il faudrait donc que je fasse comme ceci comme ceci :
Un formulaire demande l'adresse du client au sein du panier d'achat. Un bouton "Suivant" qui valide le formulaire, on effectue les vérifications sur le format de l'adresse + on calcule le montant des frais de ports et enfin on affiche le récapitulatif et le bouton payer avec PayPal.

Je n'aurais plus qu'à transmettre ces infos à PayPal (adresse, pour éviter que le client ait à la ressaisir, le montant des frais de livraison...)

ça me semble plus clair maintenant, merci Smiley smile