Problème api Paypal

Par Motel, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je souhaite recuperer les getSku() mais le probleme c'est que quand j'ai deux produits dans le panier je recupere que 1 getSku() et pas le deuxième !

foreach ($payment->getTransactions() as $transaction) { foreach ($transaction->getItemList()->getItems() as $item) { // var_dump($item->getSku()); exit(); } }

voila ce que cela me renvoi string(2) "16"

6 réponses

Kenor, il y a 8 ans

Pour être sûr, ton "exit" tu l'avais bien mis après ton foreach (car là, fatalement, ça s'arrête au premier item).

Sinon, précise le SDK que tu utilises.

Lartak, il y a 8 ans

Bonsoir.
C'est la sortie du var_dump qui est comme ça, il te suffit par exemple de faire une boucle sur la variable $sku, pour récupérer chaque valeur individuellement.

Motel, il y a 8 ans

Salut, j'ai retirer le exit() j'utilise le SDK REST APIs https://packagist.org/packages/paypal/rest-api-sdk-php

Voici le code de la page

<?php // require 'vendor/autoload.php'; // --- $ids = require 'paypal.php'; $apiContext = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( $ids['id'], $ids['secret'] ) ); if(isset($_GET['paymentId']) AND isset($_GET['token']) AND isset($_GET['PayerID'])) { $payment = \PayPal\Api\Payment::get($_GET['paymentId'], $apiContext); $execution = (new \PayPal\Api\PaymentExecution()) ->setPayerId($_GET['PayerID']) ->setTransactions($payment->getTransactions()); try { $payment->execute($execution, $apiContext); $id = $payment->getId(); $MethodPayment = $payment->getPayer()->getPaymentMethod(); foreach ($payment->getTransactions() as $transaction) { foreach ($transaction->getItemList()->getItems() as $item) { $sku = $item->getSku(); } } var_dump($sku); } catch (\PayPal\Exception\PayPalConnectionException $e) { var_dump(json_decode($e->getDate())); } }
Kenor, il y a 8 ans

hum ... tu fais la même erreur du coup.
Tu écrases ta variable à chaque boucle, donc fatalement, ça ne marchera pas mieux

$sku = []; // init ta variable foreach ($payment->getTransactions() as $transaction) { foreach ($transaction->getItemList()->getItems() as $item) { $sku[] = $item->getSku(); // ajout chaque item à ton tableau } } var_dump($sku);

En faisant ça, ça dit quoi ?

Motel, il y a 8 ans

Ca fonctionne ça me retournearray(2) { [0]=> string(2) "15" [1]=> string(2) "16" } c'est ce que je voulais c'est parfait merci beaucoup pour ton aide :)

Motel, il y a 8 ans

y a-t-il un moyen de récupérer selement le string(2) "15" string(2) "16" au lieu de array(2) { [0]=> string(2) "15" [1]=> string(2) "16" } ?