Bonjour,
Environnement: XP SP3 / wampserver / Apache2.2.11 / php5.2.9-2 / PHP Version 5.2.9-2
Mon problème est le suivant: Le cryptage d'un bouton se fait sur mon serveur ovh mais pas en local sous wamp.
Code php qui utilise SSL:
Code php : 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 <?php #Scrypt traduit et modifie par maniT4c #Retrouvez le scrypt d'origine sur http://www.stellarwebsolutions.com/en/articles/paypal_button_encryption_php.php #Defini le chemin de la racine pour OpenSSL putenv("HOME=~"); # chemin vers la clef privee //$MY_KEY_FILE = "./prvkey.pem"; $MY_KEY_FILE = "./Clef_privee.pem"; # chemin vers le certificat public $MY_CERT_FILE = "./Certificat_public.pem"; # chemin vers le certificat public de paypal //$PAYPAL_CERT_FILE = "./paypal_cert_pem.txt"; $PAYPAL_CERT_FILE = "./paypal_cert_pem.txt"; # chemin vers openssl sur votre serveur //$OPENSSL = "../../../bin/apache/Apache2.2.11/conf/"; //$OPENSSL = './bin/'; //$OPENSSL = '../../../bin/php/php5.2.9-2/extras/openssl'; $OPENSSL = './openssl/bin/'; $form = array('cmd' => '_xclick',//indique a paypal qu'il s'agit d'un bouton payer maintenant 'business' => 'xxx@hotmail.fr',//adresse du vendeur (qui doit recevoir le paiement) 'item_name' => '5 kilo de mandarine', //nom de la commande 'item_number' => '1', //numero de la commande 'currency_code' => 'EUR', //Devise 'tax' => '0.00', //taxes 'amount' => '10', //montant a payer 'lc' => 'FR', //langue de l'interface paypal 'bn' => 'PP-BuyNowBF', 'cert_id' => 'E55S8YH7ZTV5x', //identifiant de certificat donné par paypal 'custom' => '',//variable permettant de recevoir diverses informations sur la page de retour 'invoice' => '1',//valeur unique empechant les paiements accidentels (doit être differente pour chaque paiement) 'charset' => 'utf-8',//Definit le charset utilisez 'no_shipping' => '1', //Le client n'est pas invite a rentrer son adresse 'cpp_header_image' => 'http://images.paypal.com/images/x-click-but01.gif',//Adresse de l'image se trouvant en haut de la page de paiement (750x90px maxi) dans l'ideal cette image soit se trouver sur un serveur securisé pour eviter d'avoir un message indiquant que certaine parti de la page ne sont pas écurisée. 'return' => 'http://localhost/mydir/user/',//Adresse de retour lorsque l'utilisateur clique sur retouner a la boutique 'cancel_return' => 'http://localhost/mydir/user/',//Adresse de retour pour les annulations 'no_note' => '1',//Empeche l'utilisateur de rajouter des commentaires a son paiement. 'notify_url' => 'http://localhost/mydir/user/ipn.php'//Url appelee par paypal lors du paiement, cette page permettra le traitement des commandes payees. ); //Cette fonction encrypte le formulaire il n'est pas necessaire de comprendre son fonctionnement function paypal_encrypt($hash){ global $MY_KEY_FILE; global $MY_CERT_FILE; global $PAYPAL_CERT_FILE; global $OPENSSL; if (!file_exists($MY_KEY_FILE)) { echo "ERROR: MY_KEY_FILE $MY_KEY_FILE not found\n"; } if (!file_exists($MY_CERT_FILE)) { echo "ERROR: MY_CERT_FILE $MY_CERT_FILE not found\n"; } if (!file_exists($PAYPAL_CERT_FILE)) { echo "ERROR: PAYPAL_CERT_FILE $PAYPAL_CERT_FILE not found\n"; } if (!file_exists($OPENSSL)) { echo "ERROR: OPENSSL $OPENSSL not found\n"; } //Assign Build Notation for PayPal Support $hash['bn']= 'StellarWebSolutions.PHP_EWP'; $openssl_cmd = $OPENSSL.' smime -sign -signer $MY_CERT_FILE -inkey '.$MY_KEY_FILE . '-outform der -nodetach -binary | $OPENSSL smime -encrypt ' . '-des3 -binary -outform pem '.$PAYPAL_CERT_FILE; $descriptors = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), ); $process = proc_open($openssl_cmd, $descriptors, $pipes); if (is_resource($process)) { foreach ($hash as $key => $value) { if ($value != "") { //echo "Adding to blob: $key=$value\n<br />"; fwrite($pipes[0], "$key=$value\n"); } } fflush($pipes[0]); fclose($pipes[0]); $output = ""; while (!feof($pipes[1])) { $output .= fgets($pipes[1]); } //echo "outpout=".$output; fclose($pipes[1]); $return_value = proc_close($process); return $output; } return "ERROR"; }; //on enregistre le formulaire crypte dans une variable $encrypted = paypal_encrypt($form); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Paiement Paypal</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="fr" /> </head> <body> <form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="encrypted" value="<?php echo $encrypted; ?>"> <input type="image" src="http://images.paypal.com/images/x-click-but01.gif" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée"> </form> </body> </html>
Résultat source en local:
Code html : 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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Paiement Paypal</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="fr" /> </head> <body> <form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="encrypted" value=""> <input type="image" src="http://images.paypal.com/images/x-click-but01.gif" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée"> </form> </body> </html>
Sur ovh:
Code html : 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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Paiement Paypal</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="fr" /> </head> <body> <form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="encrypted" value="-----BEGIN PKCS7----- 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 eeB80DaIgaP7T11+9eTWFGMKEwMnW95YaA== -----END PKCS7----- "> <input type="image" src="http://images.paypal.com/images/x-click-but01.gif" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée"> </form> </body> </html>
_______________________
Configuration de apache: le mod_ssl est activé et openssl est bien installé.
Il me détecte bien openssl mais ne veut en aucun cas faire le cryptage.
Quelqu'un pourrait t'il m'éclairer s'il vous plait?
Partager