Classe PHP d'integration Paypal

Par PiLoU, le 24/02/2009 à 23:26:52 :: PHP
Qui n’a jamais voulu intégrer un paiement paypal sur un site de e-commerce ou même un site personnel?

Je vais vous présenter à travers ce tuto une façon simple d'intégrer ce paiement sur votre site

Choses préalables à savoir:

  • Vous devez bien entendu avoir un compte paypal
  • Vous devrez fabriquer un nouveau bouton à chaque endroit où vous voudrez mettre en place un paiement par paypal
Pour commencer nous allons nous attaquer à la classe PHP.

class paymentPaypal {

	//déclaration des variables de la classe
	var $account;
	var $itemName;
	var $amount;
	var $shipping;
	var $custom;
	var $returnPage;
	var $cancelReturnPage;
	var $notifyUrl;
	var $currency;
	var $tax;
	var $lc;

	//constructeur de la classe
	function paymentPaypal() {
		$this->account = "votrecomptepaypal"; //mettez ici l'identifiant de votre compte paypal
		$this->returnPage = " votrePageDeRetour"; //mettez ici l'URL de la page de retour (cette page sera affichée après validation du paiement)
		$this->cancelReturnPage = " votrePageAnnulation"; //mettez ici la page qui sera affichée en cas d'annulation du paiement
		$this->notifyUrl = " votrePageDeTraitement"; //mettez ici votre page de traitement du paiement qui sera appelée 																	 //par paypal si le paiement est validé
		$this->currency = "EUR"; //mettez ici la devise à utiliser pour le paiement, ici le paiement se fera en Euros
		$this->lc = "FR"; //mettez ici la langue à utiliser, ici c'est Français
	}
	
	function setItemName($name) {
		$this->itemName = $name;
	}
	
	function setAmount($amount) {
		$this->amount = $amount;
	}
	
	function setShipping($shipping) {
		$this->shipping = $shipping;
	}
	
	function setCustom() {
		$args = func_get_args();
		$this->custom = implode("|", $args);
	}
	
	function setReturnPage($returnPage) {
		$this->returnPage = $returnPage;
	}
	
	function setCancelReturnPage($cancelReturnPage) {
		$this->cancelReturnPage = $cancelReturnPage;
	}
	
	function setNotifyUrl($notifiUrl) {
		$this->notifyUrl = $notifyUrl;
	}
	
	function setCurrency($currency) {
		$this->currency = $currency;
	}
	
	function setTax($tax) {
		$this->tax = $tax;
	}
	
	function setLc($lc) {
		$this->lc = $lc;
	}
	
	function afficheForm() {
		echo "<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\">
				<input name=\"cmd\" value=\"_xclick\" type=\"hidden\" />
				<input name=\"business\" value=\"".$this->account."\" type=\"hidden\" />
				<input name=\"item_name\" value=\"".$this->itemName."\" type=\"hidden\" />
				<input name=\"amount\" value=\"".$this->amount."\" type=\"hidden\" />
				<input name=\"shipping\" value=\"".$this->shipping."\" type=\"hidden\" />
				<input name=\"no_shipping\" value=\"0\" type=\"hidden\" />
				<input name=\"custom\" value=\"".$this->custom."\" type=\"hidden\" />
				<input name=\"return\" value=\"".$this->returnPage."\" type=\"hidden\" />
				<input name=\"cancel_return\" value=\"".$this->cancelReturnPage."\" type=\"hidden\" />
				<input name=\"notify_url\" value=\"".$this->notifyUrl."\" type=\"hidden\" />
				<input name=\"no_note\" value=\"1\" type=\"hidden\" />
				<input name=\"currency_code\" value=\"".$this->currency."\" type=\"hidden\" />
				<input name=\"tax\" value=\"".$this->tax."\" type=\"hidden\" />
				<input name=\"lc\" value=\"".$this->lc."\" type=\"hidden\" />
				<input name=\"bn\" value=\"PP-BuyNowBF\" type=\"hidden\" />
				<input src=\"https://www.paypal.com/fr_FR/i/btn/btn_xpressCheckout.gif\" name=\"submit\" alt=\"Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée\" border=\"0\" type=\"image\" /><img src=\"https://www.paypal.com/fr_FR/i/scr/pixel.gif\" border=\"0\" height=\"1\" width=\"1\" />
			</form>";
            
            
            
	}
}


Voici ce que vous avez à faire dans la classe:
  • Modifiez les intructions détaillées dans le constructeur de la classe pour les remplacer par vos propres valeurs. A savoir que les vous n'avez pas besoin de redéfinir ces valeurs quand vous instanciez la classe.
  • On commence par mettre le compte paypal qui sera crédité après validation du paiement
  • Ensuite remplissez l'URL de la page qui sera affichée une fois que le paiement aura été valid
  • Après renseignez l'URL de la page qui sera affichée si le client annule la transaction
  • Définissez l'URL de la page de traitement qui sera appelée par paypal si le paiement est validé. Cette page est très importante, c'est celle qui vous permettra de réaliser des traitements au sein de votre site à savoir des insertions en base de données par exemple pour stocker vos achats ou autres...
  • Ensuite on défini la devise à utiliser pour le paiement
  • Et pour finir on renseigne la langue de paypal
Attaquons nous maintenant au fichier de traitement.
Je ne vais pas ici vous montrer un traitement juste vous donner quelques petites astuces.
  • Pour accéder aux variables custom il faut utiliser la fonction explode
  • Vous avez accès à toutes les variables POST présentes dans le bouton génér
//on récupère les variables custom
$custom = explode("|", $_POST["custom"]); //la fonction explode retourne un tableau pour accéder aux variables on utilise la syntaxe suivante
echo $custom[0]; //affichera la première variable passée à la fonction setCustom à l'instanciation de la classe
Attaquons nous maintenant à l'affichage du bouton de paypal. Je vais vous décrire la marche à suivre:
  • Dans un premier temps il est nécessaire d'inclure le fichier de la classe paypal
  • Ensuite nous allons instancier un objet qui sera en fait un bouton paypal
Il nous faut maintenant définir quelques paramètres pour définir les caractérisqiques du paiement qui va être effectué.
  • On commence par le nom de l'objet
  • Ensuite on renseigne le montant hors taxe de la transaction
  • Vient ensuite le montant des frais de port
  • On renseigne maintenant les variables personnelles, vous pouvez passer ici tout ce que vous voulez, et qui pourra vous être utile lors de votre traitement
  • On définit la TVA

Voici comment utiliser la class PHP paypal
$paypal = new paymentPaypal();
//ici on définit le nom de l'objet que l'on vend
$paypal->setItemName("Voiture");
//ici on définit le montant HORS TAXE de l'objet à vendre
$paypal->setAmount(10);
//ici ce sont les frais de ports de l'objet
$paypal->setShipping(0);
//on définit ici les variables custom qui peuvent être utiles pour le traitement que l'on réalisera
$paypal->setCustom("toto", "tata", "titi");
//ici on définit la TVA sur l'objet
$paypal->setTax(1);
//enfin on affiche le bouton paypal qui a été créé
$paypal->afficheForm();
Voila maintenant tous les paramètre définis il nous suffit d'afficher notre bouton.

Voila le résultat

paypal class php
J'espère que ceci vous sera utile.

Fiche pratique PHP

Par anonyma, le 23/02/2009 à 17:25:36 :: PHP
steel cheat PHP
Le PHP Cheat Sheet est une fiche pratique qui reference :

  • la liste des Format de date en passés arguments
  • syntaxe des expressions régulières
  • fonctions communes.




Parser un fichier XML avec PHP

Par anonyma, le 23/02/2009 à 12:16:02 :: PHP
J’ai développé cette fonction qui permet de parser un fichier XML c'est-à-dire qui permet depuis un fichier XML d’avoir un tableau d’objet qui contient toutes les valeurs du fichier XML.

Le fichier XML est un fichier de données organisé avec des balises..

Voici le fichier XML que l’on va parser
    <?xml version="1.0" encoding="UTF-8"?>
    <individus>
        <individu>
            <pseudo>anonyma</pseudo>
            <prenom>anthony</prenom>
            <age>22</age>
        </individu>
        <individu>
            <pseudo>coolspot</pseudo>
            <prenom>adrien</prenom>
            <age>21</age>
        </individu>
        <individu>
            <pseudo>Mcdam</pseudo>
            <prenom>damien</prenom>
            <age>21</age>
        </individu>
        <individu>
            <pseudo>Smookyhead</pseudo>
            <prenom>tathan</prenom>
            <age>23</age>
        </individu>
        <individu>
            <pseudo>Kendo</pseudo>
            <prenom>aureilen</prenom>
            <age>23</age>
        </individu>
    </individus>

Avec ces fonctions et cette class PHP on va pour voir récupérer toutes les données de ce fichier.

	//--------------------------------------------------------------------------
	//     Classe qui permet de stocker les informations du fichier XML
	//--------------------------------------------------------------------------	
	class ClassXML 
	{
		var $pseudo;
		var $prenom;
		var $age;
		function ClassXML ($aa) 
		{
			foreach ($aa as $k=>$v)
			{
				$this->$k = $aa[$k];
			}
		}
	}

	//-------------------------------------------------
	//     Fonctions permettant de parser le fichier XML
	//-------------------------------------------------		
	function readDatabase($filename) {
		// lit la base de données xml des Biens 
		$data = implode("",file($filename));
		$parser = xml_parser_create();
		xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
		xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
		xml_parse_into_struct($parser,$data,$values,$tags);
		xml_parser_free($parser);
	
		// boucle à travers les structures
		foreach ($tags as $key=>$val) 
		{
			//ici mettre la clé que vous desiré parser
			if ($key == "individu") 
			{
				$molranges = $val;
				for ($i=0; $i < count($molranges); $i+=2) 
				{
					$offset = $molranges[$i] + 1;
					$len = $molranges[$i + 1] - $offset;
					$tdb[] = parseMol(array_slice($values, $offset, $len));
				}
			} 
			else 
			{
				continue;
			}
		}
		return $tdb;
	}	
	function parseMol($mvalues) {
		
		for ($i=0; $i < count($mvalues); $i++)
		{
	
				$mol[$mvalues[$i]["tag"]] = @$mvalues[$i]["value"];
	
		}
		return new ClassXML($mol);
	}

Pour récupérer toutes les données il faut utiliser la première fonction avec comme variable de retour une variable de type tableau d’objet.
	//je parse le fichier XML qui me retourne un tableau d'objet qui contient toutes les valeur du fichier xml
	$db = readDatabase("fichierXML.xml");
    //pour chaque objet tu tableau j'affiche les valeurs
	foreach ($db as $objet)	
	{
		//affichage des données....
		echo "Pseudo :".$objet->pseudo."
"; echo "Prenom :".$objet->prenom."
"; echo "Age :".$objet->age."
"; }


Voici le résultat ! il ne reste plus qu’à l’adapter à votre fichier XML..

Pseudo :anonyma
Prenom :anthony
Age :22
Pseudo :coolspot
Prenom :adrien
Age :21
Pseudo :Mcdam
Prenom :damien
Age :21
Pseudo :Smookyhead
Prenom :tathan
Age :23
Pseudo :Kendo
Prenom :aureilen
Age :23


Api Google Map avec PHP

Par anonyma, le 24/02/2009 à 23:45:29 :: PHP
Google nous propose d'utiliser gratuitement Google map et de l'intégrer dans notre site web. Pour cela il faut télécharger la Class PHP GoogleMapAPI.class.php (renommer le fichier .txt en .php) modifié par mes soins pour que le résultat soit aux normes W3C et vous munir d'une API Key. Pour se la procurer allez sur le site http://code.google.com/intl/fr/apis/maps/signup.html.

Une fois la clé et le fichier PHP contenant la classe, ajouter ceci :
        require('GoogleMapAPI.class.php');
        $map = new GoogleMapAPI('map','tutoriel_map');
        $map->setAPIKey('Votre Cle');
        //taille de la map
        $map->setHeight("450");
        $map->setWidth("550");
        //Quel est le type de carte par defaut ? (map/satellite/hybrid)
        $map->setMapType('map'); // default
        //On déssactive les boutons pour afficher la direction d'un point a l'autre
        $map->disableDirections();
        // Permet de definir le zoom automatiquement afin de voir tous les marqueurs d'un coup.
        $map->enableZoomEncompass();
        //Active la mini map en bas a droite
        $map->enableOverviewControl();
        //permet de définir l'icone sur la map, nous on change pa
        //$map->setMarkerIcon('adresse internet de votre image marker','adresse internet de votre image marker',6,20,10,1);
        $map->addMarkerByAddress(
                 "votre adresse",
                 "description",
                 "CODE HTML");     
        $map->printHeaderJS();
        $map->printMapJS();
	
A paramétrer selon votre envie ! Chaque ligne est commentée !

Pour afficher la map rien de plus simple ajouter cette ligne de PHP
        $map->printMap(); //on affiche la map
	
Important : In ne faut absolument pas oublier de rajouter onload="onLoad();" a la balise body de cet page
        <body onload="onLoad();">
	
        $map->printMap(); //on affiche la map
	
Et voila le résultat :D




Redimentionner a la volé une image avec PHP

Par anonyma, le 14/02/2009 à 15:58:41 :: PHP
Cette fonction traite une image envoyée depuis un formulaire. Elle permet :

  • De la Redimensionner proportionnellement
  • De lui donner un nom et un suffixe
  • De choisir la taille qu'elle ne doit pas dépasser
  • De choisir la destination du fichier
Cette fonction fonctionne avec les extensions .jpg, .png et .gif et gère les fichiers images avec espaces. Il ne faut pas oublier d'utiliser l'attribut enctype="multipart/form-data" dans le formulaire sinon l'image ne sera pas envoyée



function resizeImage($tmp_name,$nameFiles,$width_desire,$height_desire,$dir,$allias)
{
      
      $tmp_file = $tmp_name;
      $content_dir = $dir;
      $name_file = str_replace(" ","_",$nameFiles);   
      move_uploaded_file($tmp_file, $content_dir . $name_file);
      
            
      list($width, $height, $type, $attr) = @getimagesize($content_dir . $name_file);   
      $nom_mini = $allias.$name_file;   
      
      // Le fichier
      $filename = $content_dir . $name_file;
      
      if ( $type == 1 or $type == 2 or $type == 3 ) 
      {
         // Définition de la largeur et de la hauteur maximale
         $width = $width_desire;
         $height = $height_desire;
         
         
         // Cacul des nouvelles dimensions
         list($width_orig, $height_orig, $type) = getimagesize($filename);
         
         $ratio_orig = $width_orig/$height_orig;
         
         if ($width/$height > $ratio_orig) {
         $width = $height*$ratio_orig;
         } else {
         $height = $width/$ratio_orig;
         }
         
         // Redimensionnement
         $image_p = imagecreatetruecolor($width, $height);
         
         if ( $type == 1 ) {
         $image = imagecreatefromgif($filename);
         }
         elseif ( $type == 2 ) {
         $image = imagecreatefromjpeg($filename);
         }
         elseif ( $type == 3 ) {
         $image = imagecreatefrompng($filename);
         }
         imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
         imagepng($image_p,$dir.$nom_mini);
         unlink($content_dir . $name_file);
         return true;
      }
      else
      {
         return false;
      }
}

Exemple d'utilisation de la fonction


	resizeImage($_FILES['photo2']['tmp_name'],"Nom desire",340,510,"./images/","suffixe_");