PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 27 → PAYBOX
PAYBOX
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
le retour banque est intégré dans le module Paybox non ?
ici des renseignements que tu dois connaître : http://www1.paybox.com/espace-integrateur-documentation/la-solution-paybox-system/gestion-de-la-reponse/

Que cherches tu à faire exactement ?
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.webdev.info/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é
44 messages
Popularité : +3 (3 votes)
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