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 :)
dans ce cas essaye de le forcer à 0
je regarde l'erreur 400 et c'est souvent un pb de total mal calculé
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 ^^