Entreprise EPI , création de sites internet

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

Créer le « Acheter maintenant »

Avant il est nécessaire d’être passé par l’étape 1 : Création des comptes de tests Paypal

Pour commencer les fichiers.

Voici la structure des fichiers.

Un fichier item.php qui va contenir le bouton de l’objet ou du service à vendre

Un fichier .php qui va recueillir les informations IPN de pour ensuite mettre à jour votre base de donnée.

Dans le fichier item.php :

A l’endroit ou vous voulez générez votre bouton vous allez insérer le code suivant :

  1. <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
  2. <input name="cmd" type="hidden" value="_xclick" />
  3. <input name="business" type="hidden" value="informatique_1203193464_biz@votremail.com" />
  4. <input name="item_name" type="hidden" value="nom de l’objet vendu" />
  5. <input name="amount" type="hidden" value="30.00" />
  6. <input name="shipping" type="hidden" value="0.00" />
  7. <input name="no_shipping" type="hidden" value="0" />
  8. <input name="custom" type="hidden" value="unevaleurpersonnalisée" />
  9. <input name="return" type="hidden" value="http://www.monsite.com/paypal/finpaiement.php" />
  10. <input name="cancel_return" type="hidden" value="http://www.monsite.com/paypal/annuler.php" />
  11. <input name="notify_url" type="hidden" value="http://www.monsite.com/paypal/notify.php" />
  12. <input name="no_note" type="hidden" value="1" />
  13. <input name="currency_code" type="hidden" value="EUR" />
  14. <input name="tax" type="hidden" value="0.00" />
  15. <input name="lc" type="hidden" value="FR" />
  16. <input name="bn" type="hidden" value="" />
  17. <input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
  18. </form>

Correspond à l’url paypal ou on envoie les données de

  1. <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"></form>
  2.  
  3. <span style="color: #000080;"><strong>  correpond au boutton achat immédiat</strong></span>
  4. <pre lang="html"><input name="cmd" type="hidden" value="_xclick" />

ici votre adresse fictive de paiement

  1. <input name="business" type="hidden" value="informatique_1203193464_biz@votremail.com" />

très important il vous faut générer un nom suffisament explicite pour votre vente

  1. <input name="item_name" type="hidden" value="nom de l’objet vendu" />

prix de l’objet

  1. <input name="amount" type="hidden" value="30.00" />

prix des frais d’envoie (s’il y en a)

  1. <input name="shipping" type="hidden" value="0.00" />

une fois payé l’utilisateur retournera sur cette page

  1. <input name="return" type="hidden" value="http://www.monsite.com/paypal/finpaiement.php" />

page sur laquelle retourne l’utilisateur s’il décide d’annuler son achat. Peut être equivalente à la page qu’il avait quitté pour aller payer soit : item.php

  1. <input name="cancel_return" type="hidden" value="http://www.monsite.com/paypal/annuler.php" />

très important! c’est la page où paypal va retourner l’IPN

  1. <input name="notify_url" type="hidden" value="http://www.monsite.com/paypal/notify.php" />

la valeur dans laquelle vous souhaitez être payé

  1. <input name="currency_code" type="hidden" value="EUR" />

la tva s’il y en a une

  1. <input name="tax" type="hidden" value="0.00" />

la langue par défaut

  1. <input name="lc" type="hidden" value="FR" />

Une variable très importante voir même la plus importante pour vous en effet vous allez faire passer dans cette variable l’identifiant du client qui à acheté le produit + l’identifiant unique du produit+ tout autre valeur que vous jugerez nécessaire

  1. <input name="custom" type="hidden" value="unevaleurpersonnalisée" />

le reste c’est pour le bouton

  1. <input name="bn" type="hidden" value="PP-BuyNowBF" />
  2. <input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />

Je vous invites pour plus d’option à visiter ce lien qui contient une description des variables.

Pour chacune des variables du formulaire si vous voulez créer un bouton dynamiquement il vous faudra

faire un echo de la valeur à entrer

exemple pour le prix :

  1. <input name="amount" type="hidden" value="<? echo $prix;?>" />

Si vous avez x articles présent dans une table et que vous les avez sélectionnez il suffira donc de faire

  1. $result=mysql_query("votre SELECT")while ($row=mysql_fetch_array($result)){?>…… votre code html de vos boutonsexemple :
  2. <input name="amount" type="hidden" value="<? echo $row[‘price’]; ?>" />

Retour sur la variable custom
Celle-ci comme expliqué plus haut permet de faire passer des données personnelles nécessaire au traitement
on peut donc lui faire passer des variables que l’on sépare par un séparateur ici /:

  1. <input name="custom" value="<? echo $id_user." />" type="hidden" />


$id_user est l’identifiant du client qui achète
$id_objetachete est l’objet qu’il va acheter en cliquant sur le bouton paypal.
On peut ainsi ajouter autant de paramètre que l’on veut séparé par /
Dans le fichier notify.php on récupèrera chaque paramètre en faisant un explode de la valeur $custom

  1. $tableau = explode("/",$custom);  $Member_ID=$tableau[0];$Object_ID=$tableau[1];
  2.  
  3. …………..
  4.  
  5. ……………….

Passons maitenenant à l’étape 3 : La récupération des données par IPN

8 réponses à “Tutorial Paypal : Création du Bouton HTML ‘Acheter Maintenant’”

  1. Peter45 dit :

    un erreur :
    la langue par défaut
    1.
    2.
    c’est le pays par défaut, ce champs n’est pas obligatoire, le client aura dans ce cas à le choisir pour obtenir la page dans sa langue ; voici un exemple des valeurs possibles :
    Afrique du Sud
    Albanie
    Algérie
    Allemagne
    Andorre
    Angola
    Anguilla
    Antigua et Barbuda
    Antilles néerlandaises
    Arabie Saoudite
    Argentine

  2. Peter45 dit :

    le code html a été filtré… Résumé : le champs LC est celui du pays et pas celui de la langue

  3. […] Filed under: paypal   by emile le tuto a été déplacé ici : Tutorial Paypal : Création du Bouton HTML ‘Acheter Maintenant’ […]

  4. tyyboo dit :

    bravo! … et merci!

  5. hassen dit :

    comment paypal sera a qui transférer l argent, en gros comment fait pour reconnaître le vendeur avec ce code ?????

    merci

  6. choupette dit :

    bonjour

    je trouve ce tuto tres bien expliquer mais est ce que vous pourriez m’aider: mon bouton ne me renvoie pas sur paypal mais sur la page suivante de mon site. pour qu’il l’accepte je dois faire un « print » avec un lien dedans, un « form » ne passe pas (un « form » existant deja).
    comment puis-je faire, svp?

    cordialement

  7. lukyluke dit :

    Bonjour et merci pour votre travail.
    J’ai créé un bouton sur paypal qui m’a donné le code a insérer dans ma page.
    Pour l’achat pas de problemes, je souhaiterais renseigner l’URL de notification et recupérer les valeur que me retourne Paypal dans ma base de donnée.
    J’ai donc repris votre code pour créer mon URL de notification.
    Or il me semble que pour un bouton simple, votre code est trop complet, il tient compte de la subscription par exemple que j’ai suprimé mais surtout il fait une verification que je souhaiterais suprimer aussi.
    En clair, quand pp me retourne ses variable je souhaite simplement les inscrire dans ma BDD.
    Question, auriez vous un exemple de code simplifié pour cela? j’ai peur qu’en commentant certaines parties je me loupe! De plus j’ai commenté d’autres parties qui apparement font erreur!
    Autre question, si je souhaite recupérer uniquement certaines informations, vais je obtenir des erreur car paypal va me retourner trop d’informations que je ne souhaite pas traiter.
    Merci de votre retour.

    Voici mon code qu’en pensez vous?

    $value) {

    $value = urlencode(stripslashes($value));

    $req .= « &$key=$value »;
    */

    /*Puis je suprimer SUPPRIMER?
    // post back to PayPal system to validate

    $header = « POST /cgi-bin/webscr HTTP/1.0\r\n »;

    $header .= « Content-Type: application/x-www-form-urlencoded\r\n »;

    $header .= « Content-Length:  » . strlen($req) . « \r\n\r\n »;

    $fp = fsockopen ($paypal[‘serveur’], 80, $errno, $errstr, 30);

    */

    // Variables que je souhaite recupérer
    //assign posted variables to local variables

    $item_name = $_POST[‘item_name’];
    $payment_status = $_POST[‘payment_status’];
    $quantity = $_POST[‘quantity’];
    $payment_date = $_POST[‘payment_date’];
    $payer_email = $_POST[‘payer_email’];
    $payer_id =$_POST[‘payer_id’];

    if (!$fp) {
    // HTTP ERROR

    } else {

    fputs ($fp, $header . $req);

    while (!feof($fp)) {

    $res = fgets ($fp, 1024);

    if (strcmp ($res, « VERIFIED ») == 0) {

    $fecha = date(« m »). »/ ».date(« d »). »/ ».date(« Y »);

    $fecha = date(« Y »).date(« m »).date(« d »);

    /*//check if transaction ID has been processed before

    $checkquery = « select txnid from paypal_payment_info where txnid=’ ».$txn_id. »’ »;

    $sihay = mysql_query($checkquery) or die(« Duplicate txn id check query failed:
     » . mysql_error() .  »
     » . mysql_errno());

    $nm = mysql_num_rows($sihay);

    if ($nm == 0){
    */
    //execute query

    // notre cas celui du bouton à achat immédiat

    $strQuery = « insert into paypal_payment_info(paymentstatus,buyer_email,firstname,lastname,street,city,state,zipcode,country,mc_gross,mc_fee,itemnumber,itemname,os0,on0,os1,on1,quantity,memo,paymenttype,paymentdate,txnid,pendingreason,reasoncode,tax,datecreation,custom) values (‘ ».$payment_status. »’,' ».$payer_email. »’,' ».$first_name. »’,' ».$last_name. »’,' ».$address_street. »’,' ».$address_city. »’,' ».$address_state. »’,' ».$address_zip. »’,' ».$address_country. »’,' ».$mc_gross. »’,' ».$mc_fee. »’,' ».$item_number. »’,' ».$item_name. »’,' ».$option_name1. »’,' ».$option_selection1. »’,' ».$option_name2. »’,' ».$option_selection2. »’,' ».$quantity. »’,' ».$memo. »’,' ».$payment_type. »’,' ».$payment_date. »’,' ».$txn_id. »’,' ».$pending_reason. »’,' ».$reason_code. »’,' ».$tax. »’,' ».$fecha. »’,' ».$custom. »’) »;

    $result = mysql_query($strQuery) or die(« Default – paypal_payment_info, Query failed:
     » . mysql_error() .  »
     » . mysql_errno());

    // envoie un email de resultat

    echo « Verified »;

    mail($notify_email, « VERIFIED IPN », « $res\n $req\n $strQuery\n $struery\n $strQuery2 », »From: contact@monsite.com« );

    }

    else {
    // send an email

    mail($notify_email, « VERIFIED DUPLICATED TRANSACTION », « $res\n $req \n $strQuery\n $struery\n $strQuery2 »);

    }
    //subscription handling branch
    /*if ( $txn_type == « subscr_signup » || $txn_type == « subscr_payment » ) {*/
    // insert subscriber payment info into paypal_payment_info table

    $strQuery = « insert into paypal_payment_info(paymentstatus,buyer_email,firstname,lastname,street,city,state,zipcode,country,mc_gross,mc_fee,memo,paymenttype,paymentdate,txnid,pendingreason,reasoncode,tax,datecreation,custom) values (‘ ».$payment_status. »’,' ».$payer_email. »’,' ».$first_name. »’,' ».$last_name. »’,' ».$address_street. »’,' ».$address_city. »’,' ».$address_state. »’,' ».$address_zip. »’,' ».$address_country. »’,' ».$mc_gross. »’,' ».$mc_fee. »’,' ».$memo. »’,' ».$payment_type. »’,' ».$payment_date. »’,' ».$txn_id. »’,' ».$pending_reason. »’,' ».$reason_code. »’,' ».$tax. »’,' ».$fecha. »’,' ».$custom. »’) »;

    $result = mysql_query($strQuery) or die(« Subscription – paypal_payment_info, Query failed:
     » . mysql_error() .  »
     » . mysql_errno());
    mail($notify_email, « VERIFIED IPN », « $res\n $req\n $strQuery\n $struery\n $strQuery2 »);

    // si le paiement n’est pas valide

    else if (strcmp ($res, « INVALID ») == 0) {

    // log for manual investigation

    mail($notify_email, « INVALID IPN », « $res\n $req », »From: contact@jeu-enligne.com« );
    }
    }
    fclose ($fp);
    }
    ?>

  8. 私は通常のブログに投稿することはありませんが、あなたのブログは素晴らしい仕事..美しい

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