Entreprise EPI , création de sites internet

Une réponse adaptée pour artisans, commerçants ou associations.

Bonjour à tous,

dans son interface d’administration ne permet de crypter qu’un à la fois, ce qui n’est pas très pratique quand on à 500 articles à vendre par exemple.

Nous allons donc voir comment crypter dynamiquement tout les buy now d’une page .

  1. Il faut bien entendu dans la page ou va apparaitre l’article à vendre inclure le script qui va crypter nos boutons.
    1. require_once("../paypal/."); // représente le chemin du script
  2. Créer un en cliquant ici et récupérer la Private Key (renommée my-prvkey.pem et le Public certificate my-pubcert.pem
  3. Allez dans l’administration de votre compte Paypal cliquez sur préférence puis sur certificats pour marchand cliquez sur télécharger et récupérez paypal_cert_pem.txt et renommez le en paypal_cert.pem.
  4. Toujours dans la page certificats pour site marchand, cliquez sur Ajouter et sélectionnez votre certificat public généré à l’étape 2. Il vous attribue un numéro de certificat à conserver précieusement et à utiliser dans la variable ‘cert_id’ de l’étape suivante :
  5. passons maintenant au contenu de crypt.php
    1. //Sample PayPal Button Encryption: Copyright 2006,2007 StellarWebSolutions.com
    2. //Not for resale  – license agreement at
    3. //http://www.stellarwebsolutions.com/en/eula.php
    4. //Updated: 2007 04 04
    5.  
    6. putenv("HOME=~");
    7.  
    8. # private key file to use
    9. $MY_KEY_FILE = "/var/www/vhosts/votresite.com/httpdocs/paypal/my-prvkey.pem";
    10.  
    11. # public certificate file to use
    12. $MY_CERT_FILE = "/var/www/vhosts/votresite.com/httpdocs/paypal/my-pubcert.pem";
    13.  
    14. # Paypal’s public certificate
    15. $PAYPAL_CERT_FILE = "/var/www/vhosts/votresite.com/httpdocs/paypal/paypal_cert.pem";
    16.  
    17. # path to the openssl binary
    18. $OPENSSL = "/usr/bin/openssl";
    19.  
    20. function paypal_encrypt($hash)
    21. {
    22. //Sample PayPal Button Encryption: Copyright 2006,2007 StellarWebSolutions.com
    23. //Not for resale – license agreement at
    24. //http://www.stellarwebsolutions.com/en/eula.php
    25.  
    26. global $MY_KEY_FILE;
    27. global $MY_CERT_FILE;
    28. global $PAYPAL_CERT_FILE;
    29. global $OPENSSL;
    30.  
    31. if (!file_exists($MY_KEY_FILE)) {
    32. echo "ERROR: MY_KEY_FILE $MY_KEY_FILE not found\n";
    33. }
    34. if (!file_exists($MY_CERT_FILE)) {
    35. echo "ERROR: MY_CERT_FILE $MY_CERT_FILE not found\n";
    36. }
    37. if (!file_exists($PAYPAL_CERT_FILE)) {
    38. echo "ERROR: PAYPAL_CERT_FILE $PAYPAL_CERT_FILE not found\n";
    39. }
    40. if (!file_exists($OPENSSL)) {
    41. echo "ERROR: OPENSSL $OPENSSL not found\n";
    42. }
    43.  
    44. //Assign Build Notation for PayPal Support
    45. $hash[‘bn’]= ‘StellarWebSolutions.PHP_EWP’;
    46.  
    47. $openssl_cmd = "$OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " .
    48. "-outform der -nodetach -binary | $OPENSSL smime -encrypt " .
    49. "-des3 -binary -outform pem $PAYPAL_CERT_FILE";
    50.  
    51. $descriptors = array(
    52. 0 => array("pipe", "r"),
    53. 1 => array("pipe", "w"),
    54. );
    55.  
    56. $process = proc_open($openssl_cmd, $descriptors, $pipes);
    57.  
    58. if (is_resource($process)) {
    59. foreach ($hash as $key => $value) {
    60. if ($value != "") {
    61. //echo "Adding to blob: $key=$value\n";
    62. fwrite($pipes[0], "$key=$value\n");
    63. }
    64. }
    65. fflush($pipes[0]);
    66. fclose($pipes[0]);
    67.  
    68. $output = "";
    69. while (!feof($pipes[1])) {
    70. $output .= fgets($pipes[1]);
    71. }
    72. //echo $output;
    73. fclose($pipes[1]);
    74. $return_value = proc_close($process);
    75. return $output;
    76. }
    77. return "ERROR";
    78. };
    79. function paypal_button($title,$cost,$iduser) // choississez les variables à transmettre à la fonction (prix, nom de l’objet, etc)
    80. {
    81. $form = array(‘cmd’ => ‘_xclick’, //bouton paypal achat immédiat
    82. ‘business’ => ‘votreadresse@monsite.com’, // adresse de votre compte paypal
    83. ‘cert_id’ => ‘WWEEDZREXSSS’, // ici mettre le numéro de certificat obtenu dans l’interface d’administration paypal
    84. ‘item_name’ => $title, //titre de l’objet vendu
    85. ‘amount’ => $cost, // cout de l’objet
    86. ‘shipping’ => ‘0.00’, //frais de port
    87. ‘no_shipping’ => ‘0’,
    88. ‘return’ => ‘http://www.monsite.com/user/?action=user.credits&fin=ok’, // adresse de retour après le
    89. ‘notify_url’ => ‘http://www.monsite.com/paypal/paypal.php’, // adresse de notification ipn (voir autre tuto sur le site)
    90. ‘cancel_return’ => ‘http://www.monsite.com/user/?action=user.credits’, // adresse de retour en cas d’annulation du paiement
    91. ‘no_note’ => ‘1’,
    92. ‘custom’ => $iduser."/credits/".$title."/".date("Y-m-d H:i:s"), // la variable custom permet de faire passer n’importe quel parametre de votre choix
    93. ‘currency_code’ => ‘USD’, //Paiement en dollars ici
    94. ‘tax’ => ‘0.00’,
    95. ‘lc’ => ‘US’
    96. );
    97.  
    98. $encrypted = paypal_encrypt($form);
    99. return $encrypted;
    100.  
    101. }
    102. ?>
  6. Retournons à la page où nous affichons l’article. Il ne reste plus qu’a crypter nos boutons à la demande
    1. <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    2. <input name="cmd" type="hidden" value="_s-xclick" />
    3. <input name="encrypted" type="hidden" value="<? $bouton=paypal_button($vosvariable1,$vosvariable2,$vosvariable3); echo $bouton; ?>" />
    4. <input class="button68" type="submit" value="Buy" />
    5. </form>

    Riens ne vous empêche d’intégrer cela à un for each ou while pour générer x boutons selon vos conditions

Ce tuto est terminé n’hésitez pas à poster un commentaire et si il vous à bien aidé à faire un don :

Si vous désirez que notre entreprise l’installe sur votre site Contactez nous

8 réponses à “Cryptage dynamique en php des boutons Paypal”

  1. Pognon dit :

    En local sur windows, l’executable openssl.exe est trouvé, mais je n’ai pas de résultat d’encryption.

    Y a-t-il une astuce ?

  2. Jeremy dit :

    Bonjour, le tuto est sympas et je connaissais
    déjà en anglais…En français c’est mieux.

    Sur un de mes sites, j’ai placé un bout de code
    de trois ligne qui permet de faire un rotation
    dans l’item : business.

    Donc je ne peux pas crypter mon bouton sous
    peine de faire foirer le script.

    Y aurait-il une solution avec ce tuto pour appliquer
    cette rotation dans le crypt.php ?

    Je ne suis pas sur car Clé unique paypal.
    donc me voilà un peu coincé

    Si vous trouvez ma solution

    Merci

    Jérémy

  3. lrool2014 dit :

    Bonjour
    comment savoir le répértoire dont openssl est installé ?
    j’ai un site hébérgé sur un serveur.

    pouvez vous svp m’expliquez ce ligne de code
    #Set home directory for OpenSSL
    putenv(« HOME=~ »);

    Bonne journée

  4. Dede dit :

    Bonjour,

    J’ai un soucis d’encryptage, j’essaie d’adapter ce tuto (très utile d’ailleurs) à un panier donc sur un bouton
    ‘cmd’=>’_cart’ et
    ‘upload’ =>’1′

    Mais il me met des erreurs du genre panier vide ou erreur sur le panier ?
    J’y comprend rien, toutes les données sont bonne

    Si quelqu’un à la solution

    Merci pour ce tuto clair

    Dede

  5. Inazo dit :

    Bonjour,

    Tout d’abord merci pour le tuto mais j’ai une question j’ai rencontré l’erreur suivante lors de mes tests :

    “L’adresse email de l’entreprise ne figure pas dans le grand objet binaire crypté. Veuillez contacter votre vendeur.”

    Vous auriez une idée sur la cause dudit problème ?

    Cordialement,

  6. […] Filed under: paypal   by emile le tuto a été déplacé ici : Cryptage dynamique en php des boutons Paypal […]

  7. Ludo dit :

    J’ai un probleme dans la mise en oeuvre de ce tuto.
    J’ai le message suivant à chaque envoi du bouton crypté.
    « L’adresse email de l’entreprise ne figure pas dans le grand objet binaire crypté. Veuillez contacter votre vendeur. »
    Je ne vois pas ce qui bloque.

  8. Sentoss dit :

    Bonjour , je vous remerci infiniment pour ce précieux tuto cependant je me bloque au nibveau d’un message ” Nous ne sommes pas parvenus à décrypter l’ID de certificat.” , sachant que j’ai tout v&érifié , l’adresse paypal du buyer et l’id généré par paypal tout est ok mais je n’arrive pas à m’ensortir qaund je teste j’ai toujours cette erreur qui apparait , alors je me demande et après tout ce temps coulé y a t il pas qq d’entre vous qui a trouvé la solution pour ce genre de problèmes ??

Laisser un commentaire

vous devez être connecté pour poster un commentaire.

Mots clés

Vidéo

Mentions légales

Entreprise individuelle depuis janvier 2008, EPI vous propose des solutions Internet adaptées à vos besoins.

Entreprise EPI
Fijaguet
12340 RODELLE
Siret : 50183306500011

Twitter

    Partenaires