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
Réponse acceptée

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 ?

Lartak
Réponse acceptée

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.

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.

Motel
Auteur

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()));

    }

}
Motel
Auteur

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
Auteur

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" } ?