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 mais en mode live ca ne marche pas. Voici mon code et quelques images esperant que cela puissent mieux vous renseigner:
<?php require_once 'inc/db.php'; require 'inc/function.php'; require 'inc/Offer.php'; require 'vendor/autoload.php'; logged_only(); $ids = require 'paypal.php'; //on cree un ApiContext ki contient nos identifiants $apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
$ids['id'], $ids['secret'] ) ); //on recupere le pannier selectionne par l'utilisateur $key_offer = $_SESSION['offer_key']; $offer = Offer::getoffers()[$key_offer]; //on cree une liste d'item $list = new \PayPal\Api\ItemList(); if (isset($offer)) {
$item = (new \PayPal\Api\Item()) ->setName($offer['name']) ->setPrice($offer['price']) ->setCurrency('EUR') ->setQuantity(1); $list->addItem($item); //on cree une partie amount ki contient le paiement et les details sur le paiement $details = (new \PayPal\Api\Details()) ->setSubtotal($offer['price']) ->setTax($offer['tax']); $amount = (new \PayPal\Api\Amount()) ->setTotal($offer['total_price']) ->setCurrency('EUR') ->setDetails($details); //A la fin on envoie la transaction au paiement $transaction = (new \PayPal\Api\Transaction()) ->setItemList($list) ->setDescription($offer['description']) ->setAmount($amount) ->setCustom('id_utilisateur'); $payment = new \PayPal\Api\Payment(); $payment->setTransactions([$transaction]); $payment->setIntent('sale'); $redirectUrls = (new \PayPal\Api\RedirectUrls()) //A modifier ->setReturnUrl('https://localhost/pay.php') ->setCancelUrl('https://localhost/subscribe.php'); //End modif $payment->setRedirectUrls($redirectUrls); $payment->setPayer((new \PayPal\Api\Payer())->setPaymentMethod('paypal')); try { $payment->create($apiContext); //on sauvegarde le tout dans une variable globale $_SESSION['payment'] = $payment; header('location: ' . $payment->getApprovalLink()); } catch (\Paypal\Exception\PayPalConnectionException $e) { json_decode($e->getData()); } }
pay.php
<?php require_once 'inc/db.php'; require 'inc/function.php'; require 'inc/Offer.php'; require 'vendor/autoload.php'; logged_only(); $ids = require 'paypal.php'; //on cree un ApiContext ki contient nos identifiants $apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
$ids['id'], $ids['secret'] ) ); //on recupere la liste des offres choisie par l'utilisateur $key_offer = $_SESSION['offer_key']; $offer = Offer::getoffers()[$key_offer]; //var_dump($offer); //on recupere le paiement $pay = $payemet = \PayPal\Api\Payment::get($_GET['paymentId'], $apiContext); //on recupere les infos sur l'acheteur $payer_infos = $payemet->getPayer()->getPayerInfo(); //on recupere les dates de debut et de fin d'inscription au forfait de l'acheteur et quelques donnees sur la transaction $period_start = (new DateTime($_SESSION['payment']->create_time))->getTimestamp(); $_SESSION['subscription_start'] = $subscription_start = gmdate("Y-m-d H:i:s", $period_start); $period = $offer['period'] === 'Month' ? new DateInterval($offer['interval']) : new DateInterval('P1Y'); $period_end = (new DateTime())->add($period)->getTimestamp(); $_SESSION['subscription_end'] = $subscription_end = gmdate("Y-m-d H:i:s", $period_end); $payer_id = $payer_infos->payer_id; $payer_email = $payer_infos->email; $payer_first_name = $payer_infos->first_name; $payer_last_name = $payer_infos->last_name; $payer_country_code = $payer_infos->country_code; $price_text = $offer['price_text']; $username = $_SESSION['auth']->username; $pdo->prepare("UPDATE users SET subscription_start = ?, subscription_end = ?, payer_id = ?, payer_email = ?, payer_first_name = ?, payer_last_name = ?, payer_country_code = ?, price_text = ? where username = ?")->execute([$_SESSION['subscription_start'], $_SESSION['subscription_end'], $payer_id, $payer_email, $payer_first_name, $payer_last_name, $payer_country_code, $price_text, $username]); $execution = (new \PayPal\Api\PaymentExecution()) ->setPayerId($_GET['PayerID']) ->setTransactions($payemet->getTransactions()); try { $pay->execute($execution, $apiContext); $_SESSION['flash']['success']="Votre paiement s'est deroulé avec succès et prendra effet lors de votre prochaine reconnection 😊"; header('location: logoutpaypal.php'); } catch (\Paypal\Exception\PayPalConnectionException $e) { header('HTTP 500 Internal Server Error', true, 500); var_dump(json_decode($e->getData())); }
et biensur en live jai deja change mon clientID et mon Secret.
As tu donné les informations que Paypal te demandais ? Car vu la capture d'écran, il y a une activité suspecte sur ton compte et Paypal a restreint les fonctionnalités.
oui et si j'essaye de suivre votre logique vous me direz que je n'ai plus qu'a attendre que paypal finisse de traiter mon dossier. Mais moi j'aimerais etre sur que le probleme ne vienne pas d'une erreur de code ou d'une fonctionnalite que je devrais peut etre examinee ou activee en mode live
merci vraiment a tous pour ces reponses vraiment merci encore j'espere sincerement de tout coeur que vous avez raison qu'une fois que mon compte ne sera plus restreint tout ira bien
bjr a tous. IL est vrai que ce que je dirai ne cadre peut pas avec l'optique de ce forum mais est-ce que quelqu'un saurait par hasard (réellement parlant), après combien de temps paypal lève la restriction d'un compte parce que la je suis fatigue de les écrire merci
bonjour a tous, paypal a finalement levé la restriction de mon compte mais toujours rien...
probleme de connexion avec le serveur 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.
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça