|
Débuté par Michel SIMONELLI, 29 nov. 2016 14:27 - 12 réponses |
| |
| | | |
|
| |
Posté le 29 novembre 2016 - 14:27 |
Bonjour à tous, y a t'il quelqu'un dans l'assemblée qui aurait amélioré le composant paybox fourni par pcsoft en y intégrant la gestion de l'IPN? et qui pourrait m'éclairer sur la marche à suivre... D'avance merci. |
| |
| |
| | | |
|
| | |
| |
Posté le 29 novembre 2016 - 18:55 |
Bonjour Michel
je n'utilise pas ce composant, j'ai écris mon propre code pour paypal. Donc, pas de réponse précise, mais le principe de l'ipn est : - il n'y a pas de réponse immédiate positive du service (il y a plein de raisons possibles), donc le service répond immédiatement avec non/peut être. Il faut donc indiquer au client que la réponse pour le paiement est en attente et qu'il sera prévenu plus tard quand tu en sauras plus. - plus tard - ca peut être quelques minutes, quelques heures ou quelques jours, selon la raison, comme par exemple un payment par virement qui doit arriver avant que... - le service de payment (paypal dans mon cas) rappelle uyne page de mon site (dédiée à l'ipn) avec la réponse finale Oui/Non. A ce moment la, le client n'est bien sur plus en ligne, donc il n'y a rien à afficher. Il faut juste faire le back office (enregistrer le payment ou pas, confirmer la commande ou l'annuler, lancer la préparation/emballage ou pas, et bien sur prévenir le client par email)
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 11/29/2016 à 8:27 AM, Michel SIMONELLI a écrit :
Bonjour à tous, y a t'il quelqu'un dans l'assemblée qui aurait amélioré le composant paybox fourni par pcsoft en y intégrant la gestion de l'IPN? et qui pourrait m'éclairer sur la marche à suivre... D'avance merci. |
| |
| |
| | | |
|
| | |
| |
Posté le 29 novembre 2016 - 19:33 |
| |
| |
| | | |
|
| | |
| |
Posté le 30 novembre 2016 - 15:40 |
Bonjour, Merci Eric et Joseph pour votre réponse. Joseph, j'avais bien vu en effet que le code du composant intégrait l'ipn avec la chaine urlServeuraServeur mais comme elle était vide... J'ai du mal avec çà: "Lors de l’appel de cette URL, un script présent sur le serveur Marchand à l’emplacement spécifié par l’URL va s’exécuter. Il n’y a pas de contrainte sur le langage de ce script (ASP, PHP, PERL, …). La seule limitation est que ce script ne doit pas faire de redirection et doit générer une page HTML vide."
Faut il que je crée une page vide PAGE_RETOUR_PAIEMENT Coder: urlServeuraServeur="PAGE_RETOUR_PAIEMENT " et dans le code d'initialisation de la page gérer une procédure qui va tester PBX_RETOUR? |
| |
| |
| | | |
|
| | |
| |
Posté le 30 novembre 2016 - 16:51 |
Il fallait lire merci Fabrice et Joseph. |
| |
| |
| | | |
|
| | |
| |
Posté le 30 novembre 2016 - 17:15 |
Dans la collection de procédures Paybox tu as ça (j'ai rajouté l'extension "Etrans":
PROCEDURE PUBLIQUE InitialisationEtrans() // Définit la valeur par défaut des paramètres SI Paramètres.Contrat = "#" ALORS Paramètres.Contrat = COL_CA.ContratBk//mes variables banque SI Paramètres.Identifiant = "#" ALORS Paramètres.Identifiant = COL_CA.IdBk//mes variables banque SI Paramètres.Rang = "#" ALORS Paramètres.Rang = COL_CA.RangBk//mes variables banque SI Paramètres.CléSecrète = "#" ALORS Paramètres.CléSecrète = COL_CA.CleBK//mes variables banque // Langue par défaut SI Paramètres.Langue = "" ALORS Paramètres.Langue = (Nation() = 5 ? "FRA" SINON "GBR") // Capitalisation de la langue Paramètres.Langue = Majuscule(Paramètres.Langue)
/ http://hostimage.windev.io/images/PagesCA_paye_ok_7206a1d8d1c56cc381f5d9caacf90445.jpg/ En mode AWP, on récupère l'identifiant de transaction //ce qui gère les valeurs de de retour de la banque SI EnModeAWP() ALORS // Si on est dans une phase de retour de E-Transaction SI ExtraitChaîne(PageParamètre(1), 1, "=") DANS ("PBXCANCEL", "PBXOK", "PBXREFUSED", "PBXWAIT") ALORS // Si le paramètre "ref" existe SI PageParamètre("ref") <> "" ALORS // Récupère l'identifiant de transaction SetIDTransactionEtrans(Val(PageParamètre("ref"))) FIN FIN FIN // ceci exécute les procédures selon valeurs retour de la banque SELON ExtraitChaîne(PageParamètre(1), 1, "=") CAS "PBXCANCEL" : OnPaiementAbandonEtrans() CAS "PBXOK" : OnPaiementAcceptéEtrans() CAS "PBXREFUSED" : OnPaiementRefuséEtrans() CAS "PBXWAIT" : OnPaiementEnAttenteEtrans() FIN
Ce qui donne cet appel (exemple pour retour ok de la banque): //traitement du retour paiement accepté par la banque via procédure OnPaiementAcceptéEtrans() PROCEDURE PRIVÉE OnPaiementAcceptéEtrans()
//marque le retour de la banque dans fichier paiement (dans mon cas !) ResurlOK est une chaîne = PageAdresse(PAge_Accepte_CA,paCOMPLETE)//page traitement du site //divers traitements possibles, notament mise à jour fichier PAIMENTS "Payé" //exemple : HExécuteRequêteSQL("MAJ","UPDATE PAIEMENTS SET PAIEMENT_EFFECTUE = 'P', ETATTRANSACTION = 'Accepte' WHERE PAIEMENTS.NUMCOMMANDE = "+"'"+IDTransaction+"'") //ici la page (awp) qui va être affichée au client Nm = PAIEMENTS.NOMCLIENT Nocom = PAIEMENTS.NODECOMMANDE Mttc = PAIEMENTS.MONTANT_PAIEMENT PageAffiche(ResurlOK+"?P1="+""+PAIEMENTS.IDCLIENT+""+"&P2="+Nm+"&P3="+Nocom+"&P4="+Mttc)//Id client - Nom Client - No de CMMD - Montant transaction (TTC)
CAS EXCEPTION: RETOUR
*************************************************************************** dans le code du bouton paiement de la page awp tu as ça (+ des traitements qui me sont propre) : //je créé un no de commande à chaque clic sur "payer" en + du no de commande client créé lors du transfert du panier en commande //ceci afin de contourner une "sécurité" de la banque exemple : le client clique "payer" et abandonne... puis retente etc... la banque n'aime pas et gèle le paiement pour quelques minutes. Si c'est volontaire de la part de l'internaute il n'est pas surpris, si l'internaute a une hésitation et revient 2 voire 3 fois, il va se faire éjecter et laissera tomber la commande... //Format du site de paiement CA.Paramètres.FormatAffichage = (NavigateurPlateforme() DANS (NavigateurPlateformeAndroid,NavigateurPlateformeBlackBerry, NavigateurPlateformeiPhone, NavigateurPlateformeMobile, NavigateurPlateformeWindowsMobile, NavigateurPlateformeWindowsPhone) ? FormatSitePaiement_ET.TerminauxMobiles SINON FormatSitePaiement_ET.Ordinateurs) // // Appel du composant E-Transactions avec création no commande unique pour le fichier paiements Cpt, NUMCD sont des entiers NOMAX est une Source de Données//pour le compteur SI PAS HExécuteRequêteSQL(NOMAX,"SELECT MAX (PAIEMENTS.NUMCOMMANDE) AS NMAX FROM PAIEMENTS") ALORS Erreur("Erreur d'initialisation de la requête" + RC + HErreurInfo()) RETOUR SINON HLitPremier(NOMAX) Cpt = NOMAX.NMAX+1 HAnnuleDéclaration(NOMAX) NUMCD = Cpt FIN
ChCom est une chaîne HLitRecherche(DERCOM,IDCLIENT,Idcli,hIdentique) SI HTrouve(DERCOM) ALORS SAI_TEXT = ChaîneConstruit(SAI_TEXT,DERCOM.NOMCLIENT, DERCOM.NODECOMMANDE,DERCOM.MONTANTTC+"€",DERCOM.NOMPRESTATAIRE) ChCom = DERCOM.NODECOMMANDE SINON Erreur("Il n'y a aucune commande en cours..." + RC + HErreurInfo()) RETOUR FIN
HExécuteRequêteSQL("MAJ","UPDATE ENTETECOMMANDE SET MODEREGLEMENT = 'CB' WHERE NODECOMMANDE = "+"'"+ChCom+"'")//maj du fichier commande 'CB'
SI PAS PaiementEtrans(DERCOM.MONTANTTC,IdMail,NUMCD,DERCOM.NODECOMMANDE,DERCOM.IDCLIENT,DERCOM.NOMCLIENT)//passage variables à la procédure Erreur() FIN
CODE INIT PAGE PAIMENT : // Appel obligatoire à la procédure Initialisation ReqBank()//perso CA.InitialisationEtrans()//procédure composant //personnalise le texte de transition CA.Paramètres.Texte = "Veuillez patienter, nous vous mettons en relation avec le service de paiement en ligne E-Transactions..." |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 01 décembre 2016 - 18:01 |
Bonjour,
La première fois que je trouve quelque chose de valable sur ce sujet; Merci beaucoup Joseph!!
Je suis également en train de mettre en place le composant PayBox, avec mes tests j'avance plus. dans mon environnement de test (WebDev) le retour vers la page 'marchant' (Page dynamique) fonctionne très bien. Par-contre, avec le projet déployé je ne reçois plus le retour sur la page 'marchant'! C'est quoi qui n'est pas juste, peut être un paramètre ?
Merci d'avance pour votre aide.
Joseph (II) |
| |
| |
| | | |
|
| | |
| |
Posté le 05 décembre 2016 - 14:34 |
Salut Joseph II fatalement un paramètre serais je tenté de dire, le retour sur un page dynamique (je n'utilise pas, préférant awp pour traiter ces actions) fonctionne toujours en développement, c'est même un piège, en déploiement pas pareil... un test simple sans passer par le déploiement est de lancer le site sur un autre ordi, il suffit que sur le poste de développement soit lancé l'administrateur webdev. Tu seras très proche des conditions de déploiement.
Tu peux construire le retour comme ceci me semble t-il (sous réserve !) dans l'init du site : NuméroPage est un entier = PageParamètre("Param") // selon le numéro de page SELON NuméroPage//affiche différentes pages selon appel CAS 1 : PageAffiche(Page_Connexion) CAS 2 : PageAffiche(Page_Index) CAS 3 : PageAffiche(Page_Articles,"") CAS 4 : etc... FIN //SiteDynamiqueAffiche("MONSITE","","Param=2'",NavigateurEnCours)//navigateur
selon doc pc soft : SiteDynamiqueAffiche(<Site> [, <Page> [, <Paramètres HTTP> [, <Destination> [, <Nom de la fenêtre> [, <Options> [, <Largeur> [, <Hauteur> [, <Position horizontale> [, <Position verticale> [, <Paramètres Javascript>]]]]]]]]]]) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 15 décembre 2016 - 10:46 |
Bonjour Joseph,
Merci beaucoup pour ta réponse! La solution était beaucoup plus proche: dans le code de PC-Soft il y avait une confusion de 2 variables, un incident qui ne se produit pas en mode de test.
ça passe très bien en mode dynamique!
Meilleures salutations,
Joseph II |
| |
| |
| | | |
|
| | |
| |
Posté le 15 décembre 2016 - 11:16 |
"dans le code de PC-Soft il y avait une confusion de 2 variables, un incident qui ne se produit pas en mode de test."
Salut à toi. si tu pouvais donner l'info ça pourra toujours servir.
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 03 avril 2017 - 10:00 |
Bonjour à tous, tout d'abord merci pour vos réponses, j'ai enfin réussi à mettre en place l'IPN. Une dernière question cependant la phase de test étant terminé, comment, au niveau du code composant paybox, passé du test à la production cad paiement réel? merci pour vos réponses... |
| |
| |
| | | |
|
| | |
| |
Posté le 03 avril 2017 - 10:46 |
Re-bonjour, je me réponds à moi-même passer Paramètres.ServeurPréprod à faux |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 50 messages |
|
Posté le 08 août 2022 - 17:52 |
Bonjour,
Ce post est très vieux, mais je suis à la recherche pour le composant Paybox de l'utilisation de l'IPN, je vois que vous avez réussi à le mettre en place pourriez-vous me dire comment vous avez fait.
Merci
-- Bonne journée |
| |
| |
| | | |
|
| | | | |
| | |
|