PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2025 → Paypal
Paypal
Débuté par JBG, 20 sep. 2022 12:31 - 6 réponses
Membre enregistré
4 messages
Posté le 20 septembre 2022 - 12:31
Bonjour,

Je suis un utilisateur de paybox pour les paiements en ligne mais on me demande de mettre en place un paiement par paypal. Je voulais utiliser le composant WW_paiementSecurise, mais son comportement ne me satisfait pas :
Il y a une double validation, on va sur paypal --> Il y a l'accord de paiement --> retour sur la boutique --> il faut confirmer le paiement... ce traitement est différent de paybox qui valide le paiement directement.
En plus il y a une phrase qui dit qu'on pourra retirer plus d'argent que le montant pour de la livraison, ce qui n'est pas mon cas.

Est-ce que quelqu'un peut m'expliquer comment modifier pour ne pas avoir ces 2 comportements ?

Et quelle est la différence avec le champ métier ? Il me semble que le traitement des retours est plus "léger", qu'il n'y a pas de retour serveur à serveur ?

Merci d'avance pour votre aide ou conseil.

JBG
Membre enregistré
1 395 messages
Posté le 26 septembre 2022 - 18:08
Puisque je suis passé par là et que sur ce sujet, la doc est anémique, je te propose mon code qui fonctionne très bien.

Bouton payer:
SI EnModeTest(mtProjet) = Vrai ALORS
gsCancelReturn = PageAdresse("", paComplète)
gsReturn = PageAdresse("", paComplète)

SINON
gsCancelReturn = PageAdresse("", paSécurisée)
gsReturn = PageAdresse("", paSécurisée)
FIN

SI gxMontantAPayer > 0 ALORS
PageAffiche(PAGE_PaiementCompte, "MontantAPayer")
SINON
ToastAffiche("Vous devez sélectionner un forfait", toastLong, cvBas, chCentre, RGB(255,0,0))
FIN


Chargement de Page_PaiementCompte (Navigateur);
sMontantAPayer est une chaîne = NumériqueVersChaîne(MontantAPayer, "4.2fS") + " $"

LIBF_MontantAPayer = sMontantAPayer


Page_Paiement;




Déclaration globales de SC_Paiement;
gsIdentifiantPaypal est une chaîne = "Identifiant Paypal"
gnMontantPaiement est un réel = sMontantAPayer
gsDevise est une chaîne = "CAD"
gsLocale est une chaîne = "fr_CA"


Initialisation de SC_Paiement (Serveur);
SC_Paiement..HTMLAvant = ChaîneConstruit([
<script src="https://www.paypal.com/sdk/js?client-id=%2¤cy=%1&locale=%3"></script>
],gsDevise,gsIdentifiantPaypal,gsLocale)


Affectation de la Propriété Valeur de SC_Paiement (Serveur);
gnMontantPaiement = MoiMême
ExécuteTraitement(MoiMême,trtInit)


Récupération de la Propriété Valeur de SC_Paiement (Serveur);
RENVOYER gnMontantPaiement


Chargement de SC_Paiement (Navigateur);
procPaiementEffectue est une Procedure = PaiementReussi

InitPaypal(MoiMême..Alias,gnMontantPaiement,procPaiementEffectue)
PROCEDURE INTERNE Paiementreussi
// Remplacez ici le code de PaiementEffectue par l'action à entreprendre après un paiement valide (par exemple afficher une facture)
// ToastAffiche("Merci d'avoir effectué un paiement!", toastLong, cvBas, chCentre, RGB(98,132,71))
AJAXExecute(ajaxAppelSimple, PaiementEffectue)
ExécuteTraitement(BTN_RETOUROK, trtClic)
FIN


Procédure locale PaiementEffectue (serveur);
Lorsque le paiement est réussi, la procédure PaiementEffectue est exécutée et c'est dans cette proc que l'on met à jours les BD.

Procédure locale JS InitPaypal (SC_Paiement);
function A2_InitPaypal(sAliasConteneur,nValeur,procApresValidation)
{
var domConteneur = document.getElementById(sAliasConteneur).querySelector("td");
// Vide de l'image d'attente
domConteneur.innerHTML = "";
// Cible le conteneur pour l'API PayPal
domConteneur.id = sAliasConteneur+"_PayPal";

paypal.Buttons({
style: {

},
// Init avec montant
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: nValeur
}
}]
});
},

// Finalisation
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
// Paiement réussi
// alert("Paiement réussi")
procApresValidation();
});
}
}).render('#' + domConteneur.id);
}


J'espère que tu y arriveras!

--
Jean Turcotte
WX 27
Android 9.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Membre enregistré
1 418 messages
Posté le 28 septembre 2022 - 18:04
Paypal pour le suivi

en Belgique on a fait le lien avec payconiq moins onéreux

--
Bertin CARRIERE
SRL RGPD.Zen-Project.be
support@zen-project.be
www.zen-project.be www.linkedin.com/in/bertincarriere

+32(0)498/10.18.58
Co-President de l'asbl Be-Dev Association des développeurs Windev de Belgique
www.be-dev.be
Membre enregistré
126 messages
Posté le 29 septembre 2022 - 09:48
Bonjour Jean,
le site qui accueille votre code est développé en mode AWP ou en mode Session ou votre code fonctionnerait-il indifféremment dans les 2 modes ? Je suis en train d'évaluer la bascule de nos sites AWP vers le mode session avec ses pages référencées.

Bonjour Bertin,,
Payconiq fonctionne-t-il comme Paypal ? Je veux dire suivant la même procédure (i.e. suivant les mêmes séquences d'affichage) que lorsqu'un client utilise Paypal dans un site en ligne. Je vois dans la documentation l'utilisation de QRcode [https://www.payconiq.be/fr/faq/en-quoi-consiste-payconiq-et-comment-cela-fonctionne-t-il] ... et pas d'exemple sans QRcode.

Merci. Cordialement. Gilles
Message modifié, 29 septembre 2022 - 09:51
Membre enregistré
4 messages
Posté le 29 septembre 2022 - 15:48
Bonjour Jean,

Merci, pour le détails. Mais on est bien d'accord qu'il s'agit du champ métier paypal et qu'il n'y a pas de retour Serveur à serveur ?

Bien cordialement,

JBG
Membre enregistré
1 395 messages
Posté le 29 septembre 2022 - 17:46
Je suis en mode session et il n'y a effectivement pas de retour.

--
Jean Turcotte
WX 27
Android 9.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Membre enregistré
1 173 messages
Posté le 04 octobre 2022 - 19:14
Bonsoir Jean,

Les pages de retours doivent absolument être fixe. Ce sont des pages serveur uniquement (tout comme stripe). Elles doivent donc être en AWP.
J'ai fait récemment un tuto sur le principe de fonctionnement (sur ma chaîne Youtube)

Par ailleurs, tester le paiement en mode débogue est impossible, l'URL de retour doit être publique (me semble-t-il). Pour tester Paypal il faut se connecter en mode développeur (ou test) et lancer un achat depuis le site déployé.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube