Partage
  • Partager sur Facebook
  • Partager sur Twitter

Intégration paypal, passage de sandbox à live

    5 avril 2018 à 18:04:51

    Bonjour,

    Voila je rencontre un petit problème avec mon code. J'ai suivis le tutoriel PHP pour paypal express checkout( https://youtu.be/n-Vbjd2eI_4 ), J'ai tout bien réussi et le paiement via sandbox marche :D
    Par contre j'ai lu que le paiement 'sandbox' est utilisé juste pour faire des tests et avec un compte paypal normal on ne peut pas payer dessus ( j'ai moi même essayé je n'y arrive), je voulais donc passer au mode 'live'.

    J'ai donc bien rentrer le client id et la clef secrète d'un compte en mode live, ensuite dans mon code javascript j'ai remplacer env: 'sandbox' par env: 'production' :

    paypal.Button.render({ env: 'production', // Or 'sandbox', commit: true, // Show a 'Pay Now' button style: { color: 'blue', size: 'small' }, 

    Mais lorsque que je clique sur mon bouton paypal, ça me renvois cette erreur:

    Je ne comprend pas pourquoi celà ne marche pas, j'ai aussi ce message d'erreur qui s'affiche lorsque je clique sur le bouton 'live' pour voir mon client id:

    Mais il me dit juste que toutes les fonctionnalités ne sont pas disponible et ce que ça pose vraiment problème ? :/

    Pour une meilleur compréhension voici la totalité de mon code:

    payment.php:

    <?php
    
    require '../vendor/autoload.php';
    $ids = require('paypal.php');
    
    $apiContext = new \PayPal\Rest\ApiContext(
    	new \PayPal\Auth\OAuthTokenCredential(
    		$ids['id'],
    		$ids['secret']
    	)
    );
    
    
    $list = new \PayPal\Api\ItemList();
    
    $item = (new \PayPal\Api\Item())
    		->setName('Test')
    		->setPrice($_POST['foo'])
    		->setCurrency('EUR')
    		->setQuantity(1);
    $list->addItem($item);
    
    $details = (new \PayPal\Api\Details())
                ->setSubtotal($_POST['foo']);			
    			
    $amount = (new \PayPal\Api\Amount())
    			->setTotal($_POST['foo'])
    			->setCurrency('EUR')
    			->setDetails($details);
    
    $transaction = (new \PayPal\Api\Transaction())
    				->setItemList($list)
    				->setDescription('Achat test')
    				->setAmount($amount)
    				->setCustom('Achat test');
    			
    
    $payment = new \PayPal\Api\Payment();
    $payment->setTransactions([$transaction]);
    $payment->setIntent('sale');
    $redirectUrls = (new \PayPal\Api\RedirectUrls())
    	->setReturnUrl('pay.php')
    	->setCancelUrl('index.php');
    $payment->setRedirectUrls($redirectUrls);
    $payment->setPayer((new \PayPal\Api\Payer())->setPaymentMethod('paypal'));
    
    try {
    	$payment->create($apiContext);
    	echo json_encode([
    		'id' => $payment->getId()
    	]);
    } catch (\PayPal\Exception\PayPalConnectionException $e) {
    	var_dump(json_decode($e->getData()));
    }
    
    

    Ma page pay.php:

    <?php
    require '../vendor/autoload.php';
    $ids = require 'paypal.php';
    
    $apiContext = new \PayPal\Rest\ApiContext(
    	new \PayPal\Auth\OAuthTokenCredential(
    		$ids['id'],
    		$ids['secret']
    	)
    );
    
    $payment = \PayPal\Api\Payment::get($_POST['paymentID'], $apiContext);
    
    $execution = (new \PayPal\Api\PaymentExecution())
    			->setPayerId($_POST['payerID'])
    			->setTransactions($payment->getTransactions());
    
    try {
    	$payment->execute($execution, $apiContext);
    	echo json_encode([
    		'id' => $payment->getId()
    	]);
    	
    } catch (\PayPal\Exception\PayPalConnectionException $e) {
    	header('HTTP 500 Internal Server Error', true, 500);
    	var_dump(json_decode($e->getData()));
    }
    


    Et enfin ma page index.php:

    <div id="paypal-button"></div> 
    <script>
    				var paymentlien = 'payment.php';
    				var paylien = 'pay.php';
    				var test = '<?= $pubinfos['pub_prix']; ?>';
    				var useridpub = '<?= $_SESSION['id']; ?>';
    				var pubidpub = '<?= $pubinfos['pub_id']; ?>';
    				var tempspub = '<?= $pubinfos['pub_times']; ?>';
    				paypal.Button.render({
    				  env: 'production', // Or 'sandbox',
    
    				  commit: true, // Show a 'Pay Now' button
    
    				  style: {
    					color: 'blue',
    					size: 'small'
    				  },
    					
    					payment: function() {    
    						 return paypal.request.post(paymentlien, {
    									foo: test,
    						}).then(function(data) {
    							return data.id;
    						})
    					},
    					
    				  onAuthorize: function(data, actions) {
    					return paypal.request.post(paylien, {
    									paymentID: data.paymentID,
    									payerID:   data.payerID,
    									userID: useridpub,
    									pubID: pubidpub,
    									tempsPUB: tempspub
    					}).then(function() {
    						console.log(data)
    						alert('Merci pour votre achat')
    					}).catch(function (err) {
    						console.log('erreur', err)
    					});
    				  }, 
    				}, '#paypal-button');
    	 </script>



    Merci d'avance pour vos réponses !
    Cordialement

    -
    Edité par Sami Ben 5 avril 2018 à 18:06:05

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2018 à 18:56:57

      Up, toujours pas trouvé de solution svp !
      • Partager sur Facebook
      • Partager sur Twitter
        25 juin 2018 à 11:11:41

        J'ai le même souci, tu as toruvé ta solution ???
        • Partager sur Facebook
        • Partager sur Twitter
          25 juin 2018 à 11:15:21

          Salut,

          les API PayPal entre la sandbox et la prod sont différentes, c'est des comptes complètement séparés, donc vérifie les valeurs de config saisie, l'erreur vient de là.

          • Partager sur Facebook
          • Partager sur Twitter
            25 juin 2018 à 13:26:40

            Les seules valeurs différentes que je vois sont le idclient et le secret + l'url d'appel qui est https://api.paypal.com/v1/oauth2/token au https://api.sandbox.paypal.com/v1/oauth2/token, non?

            • Partager sur Facebook
            • Partager sur Twitter
              25 juin 2018 à 13:42:56

              J'ai l'USER, le PASSWORD, la SIGNATURE API et l'URL.
              • Partager sur Facebook
              • Partager sur Twitter
                16 septembre 2019 à 9:41:14

                bjr sami ben jai tres exactement le meme probleme que toi. As-tu eu une solution ?
                • Partager sur Facebook
                • Partager sur Twitter

                Intégration paypal, passage de sandbox à live

                × 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