e-transaction du Crédit Agricole à bannir !
Salut,
Je suis tombé sur un os de chez dinosaure :(...
J'ai implémenté le e-transaction du Crédit Agricole (on se plaignait de Pay Pal, mais comparer ça à Pay Pal c'est comme comparer un silex à feu et un briquet à gaz).
J'ai pas suivi l'exemple donné car il est grâve
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
<%@ Page Language="VB" AspCompat="true" %>
<%
'--------------------------------------------------------------
' Topic : Exemple ASP traitement de la requête de paiement
' Version : P600
' Dans cet exemple, on affiche un formulaire HTML
' de connection Ã* l'internaute.
'--------------------------------------------------------------
' Initialisation de l'objet d'execution
dim transaction = Server.Createobject("SipsExec.Execute")
' Affichage du debut de la page
response.write "<HTML><HEAD><TITLE>E-TRANSACTIONS - Paiement Securise sur Internet</TITLE></HEAD>"
response.write "<BODY bgcolor=#ffffff>"
response.write "<Font color=#000000>"
response.write "<center><H1>Test de l'API ASP E-TRANSACTIONS</H1></center><br><br>"
' Affectation des paramètres obligatoires
dim parm = "merchant_id=013044876511111"
parm = parm & " merchant_country=fr"
parm = parm & " amount=100"
parm = parm & " currency_code=978"
' Initialisation du chemin du fichier pathfile (à modifier)
' ex : parm = parm & " pathfile=c:\\repertoire\\pathfile"
parm = parm & " pathfile=chemin_du_fichier_pathfile"
' Si aucun transaction_id n'est affecté, request en génère
' un automatiquement à partie de heure/minute/seconde
' Référez vous au Guide du Programmeur pour
' les réserves émises sur cette fonctionnalité
' parm = parm & " transaction_id=123456"
' Affectation dynamique des autres paramètres
' Les valeurs proposées ne sont que des exemples
' Les champs et leur utilisation sont expliqués dans le Dictionnaire des données
'
' parm = parm & " normal_return_url=http://www.maboutique.fr/cgi-bin/call_response.aspx"
' parm = parm & " cancel_return_url=http://www.maboutique.fr/cgi-bin/call_response.aspx"
' parm = parm & " automatic_response_url=http://www.maboutique.fr/cgi-bin/call_autoresponse.aspx"
' parm = parm & " language=fr"
' parm = parm & " payment_means=CB,2,VISA,2,MASTERCARD,2"
' parm = parm & " header_flag=no"
' parm = parm & " capture_day="
' parm = parm & " capture_mode="
' parm = parm & " bgcolor="
' parm = parm & " block_align="
' parm = parm & " block_order="
' parm = parm & " textcolor="
' parm = parm & " receipt_complement="
' parm = parm & " caddie="
' parm = parm & " customer_id="
' parm = parm & " customer_email="
' parm = parm & " customer_ip_address="
' parm = parm & " data="
' parm = parm & " return_context="
' parm = parm & " target="
' parm = parm & " order_id="
' Les valeurs suivantes ne sont utilisables qu'en pré-production
' Elles nécessitent l'installation de vos fichiers sur le serveur de paiement
' parm = parm & " normal_return_logo="
' parm = parm & " cancel_return_logo="
' parm = parm & " submit_logo="
' parm = parm & " logo_id="
' parm = parm & " logo_id2="
' parm = parm & " advert="
' parm = parm & " background_id="
' parm = parm & " templatefile="
' insertion de la commande en base de données (optionnel)
' A développer en fonction de votre système d'information
' Initialisation du chemin de l'executable request (à modifier)
' ex : transaction.cmdLine = "c:\\repertoire\\bin\\request.exe"
transaction.cmdLine = "chemin_de_l'executable_request"
' Passage des paramètres à l'objet transaction créé
' Tous les paramètres initialisés précédemment doivent être passés
' dans transaction.parameters pour être pris en compte
' L'ordre n'a pas d'importance
transaction.parameters = parm
' Appel de l'activeX pour executer request
dim result = transaction.executeApp()
' Sortie de la fonction executeApp() : !code!error!buffer!
' - code=0 : la fonction génère une page html contenue dans la variable buffer
' - code=-1 : La fonction retourne un message d'erreur dans la variable error
' Libération des ressources
transaction = nothing
' Exploitation des résultats
' Analyse du code retour
dim tableau = split(result, "!")
dim code = ""
code = tableau(1)
dim error_msg = tableau(2)
if code.Equals("") then
' Erreur, affiche le message d'erreur
response.write "<center><b><h2>Erreur appel API de paiement.</h2></center></b>"
response.write "<br><br><br>"
response.write "message erreur : " & error & "<br>"
else
' L'execution s'est bien deroulee
dim message = tableau(3)
' OK, affichage du mode DEBUG si activé
response.write "<br><br>"
response.write error
' OK, affiche le message html
response.write "<br><br>"
response.write message
response.write "<br>"
end if
response.write "</BODY></HTML>"
%> |
Le e-transaction génère çà (vous pouvez vomir)...
Code:
1 2 3
|
<FORM METHOD=POST ACTION="https://paiement.e-transactions.credit-agricole.fr:443/cgis-payment-etransactions/demo/callpayment" target="_top"><INPUT TYPE=HIDDEN NAME=DATA VALUE="2020343733603028502c2360542d532c532d2360522c4360502c3360502c2331302d4360505c224360542c3360502c2340522c2360502c2334522e3048502c2328502c2324552c2324532c2330542e233c562d3324512c3324515c224360522e3360502c2329463c4048502c232c502c2360542c4334502c6048502c2334502c2360522c33282a2c2360562c2360512d2328502c2340502e332c502c4324522c5330545c224360502e2360502c232c592d53402a2c2328582c2360502c4639525c224360502e3360502c2329463c4048502c3324502c2334513a2731543c23484f2b56514f3856254c3a265d533d2348532c432c582b5635343c46254e3c5625433d26454f3b442d413b26513239372d503b565953393259413c5721585c224360532c3360502d3325483d2731502e425c4f3b265d43383651483b572d542e432c522c53404f393531523836595338362d543a365d4e303735543b5529453c57214f3b472d452b4625533c27402a2c2324532c2360542d3641543d27605a2b525d4c3b562d413b26414f3c57305a2c5328532e5c225d45352729413b472d41385731493b565923383659433936504e38372d503e6048502c3338502c23605334552d2c5c224360512d5360502c233926314439263144382a2c2324582c2360502d4360502c2360582c6048502c4330502c2324502c333c4f2c23244f2c4360502e3048502c5360502c2324583a465d52392644532d533d60395655413a36504e38565d4d5c224360532d2360502c333154393655503b26255439355d4338355d463c4048502c533c502c2360592c3328572b43604e2c5c2258515c224360532e3360502c2324505c224360542c2360502c3331413d3731483b57293f385625503d2735523930486091ea6143ca1151ac"><DIV ALIGN=center><INPUT TYPE=IMAGE NAME=CB BORDER=0 SRC="/e-transactions/payment/logo/CB.gif"><IMG SRC="/e-transactions/payment/logo/INTERVAL.gif"><INPUT TYPE=IMAGE NAME=VISA BORDER=0 SRC="/e-transactions/payment/logo/VISA.gif"><IMG SRC="/e-transactions/payment/logo/INTERVAL.gif"><INPUT TYPE=IMAGE NAME=MASTERCARD BORDER=0 SRC="/e-transactions/payment/logo/MASTERCARD.gif"><br><br></DIV>
</FORM> |
Comme vous pourrez le constater, les boutons correspondants aux cartes de crédit sont censés poster ce formulaire vers leur serveur.
Le souci, lorsqu'on implémente ça dans une ASP.net c'est qu'on se retrouve avec deux formulaires imbriqués, ce qui bien entendu, ne peut pas fonctionner.
Donc j'ai deux options :
Soit je génère un httprequest et je dois parser leur m...de et reconstruire une requete propre,
Soit je vire le formulaire de l'ASP.net en overridant le Render.
Je pense que la seconde solution est la plus simple.
J'ai besoin d'aide pour y parvenir...
D'avance merci
Laurent
HtmlAgilityPack pour extraire les données du form
Salut,
J'ai trouvé HtmlAgilityPack pour extraire le action et le data. Un peu bourrin certes là ou une RegEx Aurait suffit mais là au moins ça marche...
++
Laurent