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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 &amp; " merchant_country=fr"
parm = parm &amp; " amount=100"
parm = parm &amp; " currency_code=978"
 
' Initialisation du chemin du fichier pathfile (à modifier)
' ex :	parm = parm &amp; " 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 &amp; " normal_return_url=http://www.maboutique.fr/cgi-bin/call_response.aspx"
' parm = parm &amp; " cancel_return_url=http://www.maboutique.fr/cgi-bin/call_response.aspx"
' parm = parm &amp; " automatic_response_url=http://www.maboutique.fr/cgi-bin/call_autoresponse.aspx"
' parm = parm &amp; " language=fr"
' parm = parm &amp; " payment_means=CB,2,VISA,2,MASTERCARD,2"
' parm = parm &amp; " header_flag=no"
' parm = parm &amp; " capture_day="
' parm = parm &amp; " capture_mode="
' parm = parm &amp; " bgcolor="
' parm = parm &amp; " block_align="
' parm = parm &amp; " block_order="
' parm = parm &amp; " textcolor="
' parm = parm &amp; " receipt_complement="
' parm = parm &amp; " caddie="
' parm = parm &amp; " customer_id="
' parm = parm &amp; " customer_email="
' parm = parm &amp; " customer_ip_address="
' parm = parm &amp; " data="
' parm = parm &amp; " return_context="
' parm = parm &amp; " target="
' parm = parm &amp; " 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 &amp; " normal_return_logo="
' parm = parm &amp; " cancel_return_logo="
' parm = parm &amp; " submit_logo="
' parm = parm &amp; " logo_id="
' parm = parm &amp; " logo_id2="
' parm = parm &amp; " advert="
' parm = parm &amp; " background_id="
' parm = parm &amp; " 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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