PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 2024 → Paypal
Paypal
Started by JBG, Sep., 20 2022 12:31 PM - 6 replies
Registered member
3 messages
Posted on September, 20 2022 - 12:31 PM
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
Registered member
1,123 messages
Popularité : +8 (8 votes)
Posted on September, 26 2022 - 6:08 PM
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
Registered member
1,298 messages
Popularité : +20 (72 votes)
Posted on September, 28 2022 - 6:04 PM
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
Registered member
116 messages
Popularité : +1 (1 vote)
Posted on September, 29 2022 - 9:48 AM
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 modified, September, 29 2022 - 9:51 AM
Registered member
3 messages
Posted on September, 29 2022 - 3:48 PM
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
Registered member
1,123 messages
Popularité : +8 (8 votes)
Posted on September, 29 2022 - 5:46 PM
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
Registered member
1,144 messages
Popularité : +50 (142 votes)
Posted on October, 04 2022 - 7:14 PM
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