PayPal Express CheckOut mise en place du paiement

Par TBMaster59, il y a 7 ans


Bonjour,

Après de multiples recherche je viens vers vous car je n'arrive pas à resoudre mon problème. J'ai suivi le tutoriel de Grafikart sur PayPal CheckOut. Mon code :

$api_keys = [ 'id' => 'ID', 'secret' => 'SECRET' ]; $apiContext = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( $api_keys['id'], $api_keys['secret'] ) ); $list = new \PayPal\Api\ItemList(); $item = (new \PayPal\Api\Item()) ->setName('Tarif '.$tarif) ->setPrice($price) ->setCurrency('EUR') ->setQuantity(1) ->setDescription('...'); $list->addItem($item); $details = (new \PayPal\Api\Details()) ->setSubtotal($price) ->setTax(0); $amount = (new \PayPal\Api\Amount()) ->setTotal($price) ->setCurrency("EUR") ->setDetails($details); $transaction = (new \PayPal\Api\Transaction()) ->setItemList($list) ->setDescription('Achat sur code39.fr') ->setAmount($amount); $payment = new \PayPal\Api\Payment(); $payment->setTransactions($transaction); $payment->setIntent('sale'); $redirectUrls = (new \PayPal\Api\RedirectUrls()) ->setReturnUrl('http://localhost/pay.php') ->setCancelUrl('http://localhost/calendrier-des-villes/'); $payment->setRedirectUrls($redirectUrls); $payment->setPayer((new \PayPal\Api\Payer())->setPaymentMethod('paypal')); try { $payment->create($apiContext); echo $payment->getApprovalLink(); } catch(\PayPal\Exception\PayPalConnectionException $e) { echo "<pre>"; var_dump($e->getMessage()); }

Mais au lancement du code du code j'obtiens une erreur (Les variables $tarifs et $price sont définient plus tôt) :

string(93) "Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment."

La transaction ressemble à ça :

{ "transactions":{ "item_list":{ "items":[ { "name":"Tarif 4 joueurs", "price":"56", "currency":"EUR", "quantity":1 } ] }, "description":"Achat sur code39.fr", "amount":{ "total":"56", "currency":"EUR", "details":{ "subtotal":"56", "tax":"0" } } }, "intent":"sale", "redirect_urls":{ "return_url":"http://localhost/pay.php", "cancel_url":"http://localhost/calendrier-des-villes/" }, "payer":{ "payment_method":"paypal" } }

Merci de votre aide :)

7 réponses

Huggy, il y a 7 ans

T'as pas de shipping ?

TBMaster59, il y a 7 ans

Non je n'en ai pas !

Huggy, il y a 7 ans

dans ce cas essaye de le forcer à 0

je regarde l'erreur 400 et c'est souvent un pb de total mal calculé

TBMaster59, il y a 7 ans

Rien ne change, toujours la même erreur...

Huggy, il y a 7 ans

le système sandbox est merdique, parfois il faut attendre et ça remarche

TBMaster59, il y a 7 ans

Ok, je vais attendre un ou deux jours, et je verrai bien :) Merci

TBMaster59, il y a 7 ans

Nan, c'est bien un problème dans mon code car quand je fait avec l'exemple de paypal, ça fonctionne :

{ "intent": "sale", "experience_profile_id":"experience_profile_id", "redirect_urls": { "return_url": "https://example.com", "cancel_url": "https://example.com" }, "payer": { "payment_method": "paypal" }, "transactions": [ { "amount": { "total": "4.00", "currency": "USD", "details": { "subtotal": "2.00", "shipping": "1.00", "tax": "2.00", "shipping_discount": "-1.00" } }, "item_list": { "items": [ { "quantity": "1", "name": "item 1", "price": "1", "currency": "USD", "description": "item 1 description", "tax": "1" }, { "quantity": "1", "name": "item 2", "price": "1", "currency": "USD", "description": "item 2 description", "tax": "1" }] }, "description": "The payment transaction description.", "invoice_number": "merchant invoice", "custom": "merchant custom data" }] }

Mais je vois pas ou j'ai oublier un truc ^^