Furgonetka - przykład użycia WebAPI w PHP

0

Witam mam pytanie posiadam wygenerowany token a skrypt generuje błąd, czy oprócz tokenu będzie potrzebny login i hasło do komunikacji z api ?

https://biznes.furgonetka.pl/dokumentacja-api#examples-php



try {

    // do obsługi Furgonetka WebAPI posłużymy się klasą SoapClient
    $client = new \SoapClient('http://biznes-test.furgonetka.pl/api/soap/v2?wsdl', [
        'trace' => true,
        'cache_wsdl' => false,
    ]);

    // Access token uzyskać możesz pod adresem: https://biznes.furgonetka.pl/dokumentacja-oauth
    $auth = [
        'access_token' => 'eyJ...v6A',
    ];

    // pobieram listę przewoźników skonfigurowanych na koncie
    $services = $client->getServices([
        'data' => [
            'auth' => $auth,
        ],
    ])->getServicesResult;

    if (!$services->services) {
        if (!empty($services->errors)) {
            $errors = $services->errors->item;
        }
        throw new \Exception('Nie zdołano pobrać listy przewoźników.');
    }

    $services = $services->services->item;

    // przewoźnik, którym chcę nadać paczkę
    $service_type = 'dpd';

    // ustalam service_id dla wybranego przewoźnika
    foreach ($services as $service) {
        if ($service->type === $service_type) {
            $service_id = $service->id;
            break;
        }
    }

    if (!isset($service_id)) {
        throw new \Exception('Nie zdołano ustalić service_id dla ' . $service_type);
    }

    // pobieram listę aktualnych regulaminów
    $regulations = $client->getRegulations([
        'data' => [
            'auth' => $auth,
        ],
    ])->getRegulationsResult;

    if (!$regulations->services) {
        if (!empty($regulations->errors)) {
            $errors = $regulations->errors->item;
        }
        throw new \Exception('Nie zdołano pobrać listy regulaminów.');
    }

    $regulations = $regulations->services->item;

    // ustalam aktualną wersję regulaminu dla wybranego przewoźnika
    foreach ($regulations as $service) {
        if ($service->service_type === $service_type) {
            $regulations_accept = $service->version;
            break;
        }
    }

    if (!isset($regulations_accept)) {
        throw new \Exception('Nie ustalono regulaminu dla ' . $service_type);
    }

    // parametry naszej przesyłki
    $paramsPackages = [
        'data' => [
            'auth' => $auth,
            'partner_reference_number' => 147861,
            'service_id' => $service_id,
            'type' => 'package',
            'regulations_accept' => $regulations_accept,
            'sender' => [
                'name' => 'Jan Kowalski',
                'email' => '[email protected]',
                'street' => 'Polna 1/2',
                'postcode' => '82-300',
                'city' => 'Elbląg',
                'phone' => '+48 500 999 888',
            ],
            'receiver' => [
                'name' => 'Adam Mickiewicz',
                'email' => '[email protected]',
                'street' => 'Grunwaldzka 22/33',
                'postcode' => '80-300',
                'city' => 'Gdańsk',
                'phone' => '+48 600 999 888',
            ],
            'label' => [
                'file_format' => 'pdf',
                'page_format' => 'a6',
            ],
            'parcels' => [
                [
                    'width' => 10,
                    'height' => 20,
                    'depth' => 30,
                    'value' => 555,
                    'weight' => 11,
                    'description' => 'Buty dziecięce',
                ],
            ],
            'services' => [
                'cod' => [
                    'amount' => 555,
                    'iban' => '47114020040000350275770660',
                    'express' => true,
                    'name' => 'Jan Kowalski'
                ],
                'guarantee_0930' => false,
                'guarantee_1200' => false,
                'saturday_delivery' => false,
                'sms_predelivery_information' => false,
                'insurance' => false,
                'fragile' => false,
                'self_pickup' => true,
            ],
        ],
    ];

    // wykonuje metodę "validatePackage", która sprawdzi poprawność parametrów przesyłki
    $validate = $client->validatePackage($paramsPackages)->validatePackageResult;

    if (!empty($validate->errors)) {
        $errors = $validate->errors->item;
        throw new \Exception('Popraw parametry przesyłki.');
    }

    // parametry poprawne, wykonuje metodę "createPackage" aby utworzyć przesyłkę
    $package = $client->createPackage($paramsPackages)->createPackageResult;

    if (!empty($package->errors)) {
        $errors = $package->errors->item;
        throw new \Exception('Nie udało się dodać przesyłki.');
    }

    // wyświetlam etykietę
    header('Content-type: application/pdf');
    header('Content-Disposition: inline; filename='
         . 'etykieta_dla_zamowienia_' . ($package->partner_reference_number).'.pdf');

    echo \base64_decode($package->documents->label->content);

} catch (\Exception $e) {

    echo 'Błąd: ', $e->getMessage();

    // lista błędów zwrócona przez metodę z WebAPI Furgonetka Biznes
    if (isset($errors)) {
        \var_dump($errors);
    }

}


0

A może tak napisałbyś jaki błąd?

0

zaraz za zmienną auth dostaje komunikat: Nie zdołano pobrać listy przewoźników

object(stdClass)[58]
  public 'services' => null
  public 'errors' => 
    object(stdClass)[59]
      public 'item' => 
        object(stdClass)[60]
          public 'field' => string 'error' (length=5)
          public 'message' => string 'Error authorization' (length=19)

Błąd: Nie zdołano pobrać listy przewoźników.
1

Rozbij sobie to na elementy.
Co dostajesz z samej autoryzacji?
Czyli tego fragmentu:

$services = $client->getServices([
        'data' => [
            'auth' => $auth,
        ],
    ])->getServicesResult;

BTW to ta slynna furgonetka od naciągania ludzi?

0

działa tylko że zamiast tego urla "http://biznes-test.furgonetka.pl/api/soap/v2?wsdl" trzeba podać prawdziwy "https://biznes.furgonetka.pl/api/soap/v2?wsdl"
tylko ja się pytam po jakiego grzyba wszędzie w dokumentacji podają niby ten url z test i nie chcą przepuścić albo dać cokolwiek z outputem typu "autoryzacja powiodła się w wersji testowej"

1

Bo pewnie tokena wygenerowałeś dla prod a nie dla dev.

0

@serek aaa dzięki za informacje, ogólnie dzięki wielkie za pomoc i fatygę

1 użytkowników online, w tym zalogowanych: 0, gości: 1