Partage
  • Partager sur Facebook
  • Partager sur Twitter

Paypal

Intégration de paypal

    19 novembre 2017 à 22:16:44

    Bonjour, voila j'ai crée un code php pour paypal qui fonctionnais parfaitement , cependant depuis un moment il ne fonctionne plus du tous 

    J'ai regarder le code fait plusieur test et le bloquage viens en faite simplement que mes $_POST ne retourne rien , en gros paypal ne renvoi rien 

    J'ai tester le script en ssl sans ssl sur le port 80 sur le port 443 rien ne change voici mon code est merci d'avance pour votre aide 

    <?php
    // lire le formulaire provenant du système PayPal et ajouter 'cmd'
        $req = 'cmd=_notify-validate';
        
        foreach ($_POST as $key => $value) {
            $value = urlencode(stripslashes($value));
            $req .= "&$key=$value";
        }
     // renvoyer au système PayPal pour validation
        $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 ('www.sandbox.paypal.com', 443, $errno, $errstr, 30);
    
    // affecter les variables publiées aux variables locales
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
     $amount = $_POST['amount'];
     $id = $_POST['custom'];
    
    
    $pay = $bdd->query('SELECT * FROM paypal');
    $paypal = $pay->fetch();
    
    $user = $bdd->query('SELECT * FROM accounts WHERE id="'.$id.'"');
    $users = $user->fetch();
    $_SESSION['pay'] = $users['id'];
    
    $tonmail = $users['username'];
    
    	
    	
    	
    if($txn_id != $paypal['ident_pay'])
    {
    	
    	
    			if($payment_amount == '1.00')
    			{
    					$token = 10;
    				$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    
    					
    					$somme = $payment_amount.' €';
    				$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    				$insert->execute(array(
    				'ident' => $txn_id,
    				'email' => $payer_email,
    				'pseudo' => $users['username'],
    				'amount' => $somme
    				));
    				$_SESSION['token'] = $token;
    				echo $txn_id;
    			
    			}
    					else if($payment_amount == '2.00')
    					{
    						$token = 20;
    					$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    
    						
    						$somme = $payment_amount.' €';
    					$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    					$insert->execute(array(
    					'ident' => $txn_id,
    					'email' => $payer_email,
    					'pseudo' => $users['username'],
    					'amount' => $somme
    					));
    					$_SESSION['token'] = $token;
    					header('location: ../profil.php?action=6&id='.$txn_id);
    					
    					}
    							else if($payment_amount == '3.00')
    							{
    								$token = 30;
    							$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    
    								
    								$somme = $payment_amount.' €';
    							$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    							$insert->execute(array(
    							'ident' => $txn_id,
    							'email' => $payer_email,
    							'pseudo' => $users['username'],
    							'amount' => $somme
    							));
    							$_SESSION['token'] = $token;
    							header('location: ../profil.php?action=6&id='.$txn_id);
    							
    							}
    									else if($payment_amount == '4.00')
    									{
    										$token = 40;
    										$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    
    										
    										$somme = $payment_amount.' €';
    										$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    										$insert->execute(array(
    										'ident' => $txn_id,
    										'email' => $payer_email,
    										'pseudo' => $users['username'],
    										'amount' => $somme
    										));
    										$_SESSION['token'] = $token;
    										header('location: ../profil.php?action=6&id='.$txn_id);
    									
    									}
    													else if($payment_amount == '5.00')
    													{
    														$token = 50;
    														$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    
    															
    															$somme = $payment_amount.' €';
    														$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    														$insert->execute(array(
    														'ident' => $txn_id,
    														'email' => $payer_email,
    														'pseudo' => $users['username'],
    														'amount' => $somme
    														));
    														$_SESSION['token'] = $token;
    														header('location: ../profil.php?action=6&id='.$txn_id);
    													
    													}
    																	else if($payment_amount == '10.00')
    																	{
    																			$token = 100;
    																		$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    																			$somme = $payment_amount.' €';
    																		$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    																		$insert->execute(array(
    																		'ident' => $txn_id,
    																		'email' => $payer_email,
    																		'pseudo' => $users['username'],
    																		'amount' => $somme
    																		));
    																			$_SESSION['token'] = $token;
    																		header('location: ../profil.php?action=6&id='.$txn_id);
    																	}
    																					else if($payment_amount == '15.00')
    																					{
    																							$token = 200;
    																						$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    																							$somme = $payment_amount.' €';
    																						$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    																						$insert->execute(array(
    																						'ident' => $txn_id,
    																						'email' => $payer_email,
    																						'pseudo' => $users['username'],
    																						'amount' => $somme
    																						));
    																							$_SESSION['token'] = $token;
    																						header('location: ../profil.php?action=6&id='.$txn_id);
    																					}
    																									else if($payment_amount == '20.00')
    																									{
    																											$token = 300;
    																											$update = $bdd->query('UPDATE accounts SET credits =  credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    																											$somme = $payment_amount.' €';
    																										$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    																										$insert->execute(array(
    																										'ident' => $txn_id,
    																										'email' => $payer_email,
    																										'pseudo' => $users['username'],
    																										'amount' => $somme
    																										));
    																											$_SESSION['token'] = $token;
    																										header('location: ../profil.php?action=6&id='.$txn_id);
    																									}
    														else if($payment_amount == '25.00')
    														{
    																$token = 400;
    																$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    																$somme = $payment_amount.' €';
    																$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    																	$insert->execute(array(
    																		'ident' => $txn_id,
    																		'email' => $payer_email,
    																		'pseudo' => $users['username'],
    																		'amount' => $somme
    																	));
    																		$_SESSION['token'] = $token;
    																	header('location: ../profil.php?action=6&id='.$txn_id);
    														}
    					else if($payment_amount == '30.00')
    					{
    							$token = 500;
    							$update = $bdd->query('UPDATE accounts SET credits = credits + "'.$token.'" WHERE id = "'.$_SESSION['pay'].'"');
    							$somme = $payment_amount.' €';
    							$insert = $bdd->prepare('INSERT INTO paypal(ident_pay,email_acheteur,pseudo,montant) VALUES (:ident, :email, :pseudo, :amount)  ');
    								$insert->execute(array(
    									'ident' => $txn_id,
    									'email' => $payer_email,
    									'pseudo' => $users['username'],
    									'amount' => $somme
    								));
    									$_SESSION['token'] = $token;
    								header('location: ../profil.php?action=6&id='.$txn_id);
    					}
    			}
    			else
    			{
    				echo '<pre>';
    				echo $txn_id;
    				echo '</pre>';
    			}
    
    
    ?>



    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2017 à 22:19:29

      Salut,

      Quelle version de l'API Paypal tu utilise ? 
      J'ai récemment configuré cette API sur un serveur, très facilement, et cela n'y ressemble pas du tout 

      • Partager sur Facebook
      • Partager sur Twitter
        19 novembre 2017 à 22:28:00

        Je  n'utilise pas l'api mes un tutoriel de la ferme du web , je ne comprend pas encore trés bien api et beaucoup de mal a le faire allez 

        si tu a un tutoriel a me conseiller je suis prenneur 

        cordialement 

        Je viens de m'apercevoir d'une chose , mon paiement est bien passé est renvoi bien sauf qu'avant il renvoyé en post et la il renvoi en GET , ce que je n'est pas demander peu ton modifier cela car dans mon formulaire la method est == POST

        paypal/paiementValide.php?amt=1.00&cc=EUR&cm=<%3Fphp%20echo%20%24_SESSION%5B%27id%27%5D%3B%3F>&item_name=Boutique%20IRP&st=Completed&tx=3LB795400F5044238

        -
        Edité par anubis55 19 novembre 2017 à 22:48:22

        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2017 à 22:49:34

          Mmm utiliser les services de paypal et les intégrer à son site web, c'est utiliser une API.

          Voici un lien vers l'API officielle mise à jour.

          https://github.com/paypal/PayPal-PHP-SDK

          Plusieurs façon de l'intégrer à son site, en le téléchargeant ou en passant par Composer..

          Mais la mise en place est vraiment simple, tout est dans ce repo git, avec des exemples et une documentation.

          Globalement, cela ressemblera à ça :

          Le dossier Paypal téléchargé est placé à votre guise dans votre serveur avec un fichier Autoload pour charger toutes les classes;

          Intégration de l'autoload :

          require_once 'cheminversledossier/PayPal-PHP-SDK/autoload.php';

          Création de l'objet paypal :

          $apiContext = new ApiContext(new OAuthTokenCredential('code de votre application', 'code secret de votre application'));

          Pour effectuer un paiement quelconque ..

           if(isset($_POST['id_annonce']) && isset($_POST['id_a']) && isset($_POST['id_v'])) {
                  $surcout = htmlspecialchars($_POST['prix_surcout']);
                  $idod = htmlspecialchars($_POST['id_annonce']);
                  $idacheteur = htmlspecialchars($_POST['id_a']);
                  $idvendeur = htmlspecialchars($_POST['id_v']);
                
                  $personnerepo = new PersonneRepository();
                  $annoncerepo = new AnnoncesodRepository();
                  $annonceod = $annoncerepo->getAnnonceOD($idod);
                  $id = $annonceod->getId_annonce();
                  //Je récupère toutes mes infos sur l'annonce, le prix etc dans ma BDD, mais tu peux le faire également avec un POST comme tu as l'air de le faire ..
          
                  $payer = new Payer();
                  $payer->setPaymentMethod("paypal");
          
                  $item1 = new Item();
                  $item1->setName('Annonce n° '.$id.'')
                      ->setCurrency('EUR')
                      ->setQuantity(1)
                      ->setPrice($annonceod->getPrix_annonce());
          
                  $itemList = new ItemList();
                  $itemList->setItems(array($item1));
          
                  $details = new Details();
                  $details->setShipping($surcout)
                      ->setSubtotal($annonceod->getPrix_annonce());
          
                  $amount = new Amount();
                  $amount->setCurrency("EUR")
                      ->setTotal($annonceod->getPrix_annonce() + $surcout)
                      ->setDetails($details);
          
                  $transaction = new Transaction();
                  $transaction->setAmount($amount)
                      ->setItemList($itemList)
                      ->setDescription("Payment description")
                      ->setInvoiceNumber(uniqid());
          
                  $baseUrl = PATH;
                  $redirectUrls = new RedirectUrls();
                  $redirectUrls->setReturnUrl("$baseUrl/paiement/index?success=true&ida=".$idacheteur."&idv=".$idvendeur."&id=".$idod."")
                      ->setCancelUrl("$baseUrl/paiement/index?success=false");
          
                  $payment = new Payment();
                  $payment->setIntent("sale")
                      ->setPayer($payer)
                      ->setRedirectUrls($redirectUrls)
                      ->setTransactions(array($transaction));
          
                  try {
                      $payment->create($apiContext);
                  } catch (\Exception $ex) {
                      die($ex);
                  }
          
                  $approvalUrl = $payment->getApprovalLink();
          
                  header('Location:'.$approvalUrl);
          }

          Enfin vers l'URL vers laquelle tu as choisis de rediriger :

           $idannonce = htmlspecialchars($_GET['id']);
           $paymentId = htmlspecialchars($_GET['paymentId']);
           $payerId = htmlspecialchars($_GET['PayerID']);
          
           $payment = Payment::get($paymentId, $this->apiContext);
           $execute = new PaymentExecution();
           $execute->setPayerId($payerId);
          
           try {
               $result = $payment->execute($execute, $this->apiContext);
           } catch (\Exception $e) {
                $data = json_decode($e->getData());
                echo $data->message;
                die;
           }



          Je t'invite également à aller voir pas la l'ami : 

          https://developer.paypal.com/

          Ca te sera bien utile pour créer ton application, pour faire fonctionner l'API

          -
          Edité par valentinmoulinier 19 novembre 2017 à 22:58:14

          • Partager sur Facebook
          • Partager sur Twitter
            19 novembre 2017 à 22:54:46

            Je viens de m'apercevoir d'une chose , mon paiement est bien passé est renvoi bien sauf qu'avant il renvoyé en post et la il renvoi en GET , ce que je n'est pas demander peu ton modifier cela car dans mon formulaire la method est == POST

            paypal/paiementValide.php?amt=1.00&cc=EUR&cm=<%3Fphp%20echo%20%24_SESSION%5B%27id%27%5D%3B%3F>&item_name=Boutique%20IRP&st=Completed&tx=3LB795400F5044238



            • Partager sur Facebook
            • Partager sur Twitter

            Paypal

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown