• ComputerBase erhält eine Provision für Käufe über eBay-Links.

ebay Abfrage Artikel und Verkäufe für den import nach Dolibarr

interface31

Ensign
Registriert
Dez. 2009
Beiträge
156
Hi, ich versuche gerade eine Abfrage bei ebay durchzuführen und diese zu Dolibarr zu importieren.

Test Abfrage klappt soweit auch

Code:
<?php

require_once DIR . '/vendor/autoload.php';

require_once DIR . '/src/EbayService.php';

use EbayDolibarr\EbayService;

use DTS\eBaySDK\Trading\Types\GetMyeBaySellingRequestType;

use DTS\eBaySDK\Trading\Types\ItemListCustomizationType;

use DTS\eBaySDK\Trading\Types\GetOrdersRequestType;

use DTS\eBaySDK\Trading\Enums\DetailLevelCodeType;

use DTS\eBaySDK\Trading\Services\TradingService;

use DTS\eBaySDK\Trading\Types\CustomSecurityHeaderType;

use DTS\eBaySDK\Trading\Types\PaginationType;

try {

    $config = [

        'appId' => 'ebay DEV ID',

        'certId' => 'ebay CERT ID',

        'devId' => 'DEV ID',

        'authToken' => TOKEN',

        'siteId' => 77  // 77 für Deutschland

    ];

    $service = new TradingService([

        'credentials' => [

            'appId' => $config['appId'],

            'certId' => $config['certId'],

            'devId' => $config['devId']

        ],

        'siteId' => $config['siteId'],

        'sandbox' => false

    ]);

    echo "=== Aktive Listings ===\n";

    $pageNum = 1;

    $totalListings = 0;

    $entriesPerPage = 200;

    $hasMore = true;

    while ($hasMore) {

        $request = new GetMyeBaySellingRequestType();

        $request->RequesterCredentials = new CustomSecurityHeaderType();

        $request->RequesterCredentials->eBayAuthToken = $config['authToken'];

        // Konfiguriere die ActiveList

        $request->ActiveList = new ItemListCustomizationType();

        $request->ActiveList->Include = true;

        $request->DetailLevel = [DetailLevelCodeType::C_RETURN_ALL];

        // Setze Paginierung

        $request->ActiveList->Pagination = new PaginationType();

        $request->ActiveList->Pagination->EntriesPerPage = $entriesPerPage;

        $request->ActiveList->Pagination->PageNumber = $pageNum;

        $response = $service->getMyeBaySelling($request);

        if ($response->Ack !== 'Failure') {

            if (isset($response->ActiveList->ItemArray) && $response->ActiveList->ItemArray !== null) {

                $currentPageCount = count($response->ActiveList->ItemArray->Item);

                $totalListings += $currentPageCount;

            

                // Prüfe ob es weitere Seiten gibt

                if (isset($response->ActiveList->PaginationResult)) {

                    $totalPages = $response->ActiveList->PaginationResult->TotalNumberOfPages;

                    $hasMore = ($pageNum < $totalPages);

                    echo "Seite $pageNum von $totalPages verarbeitet ($currentPageCount Listings)\n";

                } else {

                    $hasMore = false;

                }

            } else {

                $hasMore = false;

            }

        } else {

            throw new \Exception('Fehler beim Abrufen der Listings: ' . print_r($response->Errors, true));

        }

        $pageNum++;

    }

    echo "Gefundene aktive Listings insgesamt: $totalListings\n\n";

    // Hole die letzten Verkäufe mit Kundendaten

    echo "=== Letzte Verkäufe mit Kundendaten ===\n";

    $request = new GetOrdersRequestType();

    $request->RequesterCredentials = new CustomSecurityHeaderType();

    $request->RequesterCredentials->eBayAuthToken = $config['authToken'];

    // Setze Zeitraum (letzte 60 Tage)

    $request->CreateTimeFrom = new \DateTime('-60 days');

    $request->CreateTimeTo = new \DateTime();

    $request->OrderRole = 'Seller';

    $request->OrderStatus = 'All';

    // Detaillierte Informationen anfordern

    $request->DetailLevel = [DetailLevelCodeType::C_RETURN_ALL];

    $request->IncludeFinalValueFee = true;

    $response = $service->getOrders($request);

    if ($response->Ack !== 'Failure') {

        if (isset($response->OrderArray) && $response->OrderArray !== null) {

            $orders = $response->OrderArray->Order;

            echo "Anzahl der Bestellungen: " . count($orders) . "\n";

            foreach ($orders as $order) {

                echo "\nBestellung ID: {$order->OrderID}\n";

                echo "Käufer: {$order->BuyerUserID}\n";

                if (isset($order->ShippingAddress)) {

                    echo "Lieferadresse:\n";

                    echo "  Name: {$order->ShippingAddress->Name}\n";

                    echo "  Straße: {$order->ShippingAddress->Street1}\n";

                    echo "  PLZ/Ort: {$order->ShippingAddress->PostalCode} {$order->ShippingAddress->CityName}\n";

                    echo "  Land: {$order->ShippingAddress->CountryName}\n";

                }

                echo "Bestelldatum: " . $order->CreatedTime->format('Y-m-d H:i:s') . "\n";

                echo "Status: {$order->OrderStatus}\n";

                echo "Gesamtbetrag: {$order->Total->value} {$order->Total->currencyID}\n";

                echo "----------------------------------------\n";

            }

        } else {

            echo "Keine Bestellungen im angegebenen Zeitraum gefunden.\n";

        }

    } else {

        throw new \Exception('Fehler beim Abrufen der Bestellungen: ' . print_r($response->Errors, true));

    }

    echo "\n✅ Verbindung erfolgreich!\n";

} catch (\Exception $e) {

    echo "❌ Fehler bei der Verbindung:\n";

    echo $e->getMessage() . "\n";

}



Problem ist aber beim richtigen Sync in Dolibarr es nicht klappt

Bekomme immer
[2025-02-10T09:51:42.643281+00:00] ebay-dolibarr.ERROR: Failed to sync order 11-12687-01695: Error creating/getting third party: Unknown property BuyerInfo [] []

Mein Dolibarr File:
Code:
<?php

namespace EbayDolibarr;

use GuzzleHttp\Client;

class DolibarrService {

    private $client;

    private $apiUrl;

 

    public function __construct($config) {

        $this->apiUrl = rtrim($config['apiUrl'], '/');

        $this->client = new Client([

            'headers' => [

                'DOLAPIKEY' => $config['apiKey'],

                'Accept' => 'application/json',

                'Content-Type' => 'application/json'

            ],

            'verify' => false, // Disable SSL verification

            'http_errors' => false // Don't throw exceptions for HTTP errors

        ]);

    }

 

    public function createProduct($data) {

        try {

            // Validate required data

            if (!isset($data['ItemID']) || !isset($data['Title'])) {

                throw new \RuntimeException('Missing required fields: ItemID and Title are required');

            }

            // Clean and prepare the data

            $productData = [

                'ref' => $data['ItemID'],

                'label' => substr($data['Title'], 0, 255), // Limit title length

                'description' => $data['Description'] ?? '',

                'price_base_type' => 'TTC',

                'price' => floatval($data['StartPrice'] ?? 0),

                'price_ttc' => floatval($data['StartPrice'] ?? 0),

                'type' => 0, // 0 for product, 1 for service

                'status' => 1, // Status (1 = on sale)

                'status_buy' => 1, // Can be purchased

                'url' => 'https://www.ebay.de/itm/' . $data['ItemID'],

                'note_private' => 'Imported from eBay',

                'ref_ext' => $data['ItemID'],

                'barcode' => $data['ItemID'], // Using ItemID as barcode for tracking

                'stock_reel' => 1 // Set initial stock

            ];

            error_log("Checking if product exists: " . $data['ItemID']);

        

            // Check if product already exists by ref_ext

            $response = $this->client->get($this->apiUrl . '/products', [

                'query' => ['sqlfilters' => "ref_ext='" . $data['ItemID'] . "'"]

            ]);

        

            if ($response->getStatusCode() >= 400) {

                error_log('Failed to check existing product. Response: ' . $response->getBody());

                throw new \RuntimeException('Failed to check existing product: ' . $response->getBody());

            }

        

            $result = json_decode($response->getBody(), true);

            if (!is_array($result)) {

                error_log('Invalid response format from Dolibarr API: ' . $response->getBody());

                throw new \RuntimeException('Invalid response format while checking product existence');

            }

        

            if (!empty($result)) {

                error_log("Updating existing product: " . $data['ItemID']);

                // Product exists, update it

                $response = $this->client->put($this->apiUrl . '/products/' . $result[0]['id'], [

                    'json' => $productData

                ]);

            } else {

                error_log("Creating new product: " . $data['ItemID'] . " with data: " . json_encode($productData));

                // Create new product

                $response = $this->client->post($this->apiUrl . '/products', [

                    'json' => $productData

                ]);

            }

        

            error_log("Sending product data to Dolibarr: " . json_encode($productData)); // Protokolliere gesendete Daten

        

            $responseBody = (string)$response->getBody();

            $statusCode = $response->getStatusCode();

            error_log("Dolibarr API response for product {$data['ItemID']} (status {$statusCode}): $responseBody"); // Protokolliere API-Antwort

        

            if ($statusCode >= 400) {

                error_log("Failed to create/update product {$data['ItemID']}: $responseBody");

                throw new \RuntimeException("API error (status $statusCode): " . $responseBody);

            }

        

            $responseData = json_decode($responseBody, true);

            if (!is_array($responseData)) {

                error_log("Invalid response format from Dolibarr API for product {$data['ItemID']}: $responseBody");

                throw new \RuntimeException('Invalid response format from Dolibarr API');

            }

        

            error_log("Successfully processed product {$data['ItemID']}");

            return $responseData;

        

        } catch (\Exception $e) {

            $errorMsg = 'Error in createProduct for ItemID ' . ($data['ItemID'] ?? 'unknown') . ': ' . $e->getMessage();

            error_log($errorMsg);

            throw new \RuntimeException($errorMsg);

        }

    }

 

    public function createOrder($order) {

        try {

            if (!isset($order->BuyerUserID) || !isset($order->OrderID) || !isset($order->CreatedTime)) {

                throw new \RuntimeException('Required order fields missing (BuyerUserID, OrderID, or CreatedTime)');

            }

            // Check if order already exists

            $existingResponse = $this->client->get($this->apiUrl . '/orders', [

                'query' => ['sqlfilters' => "ref_ext='" . $order->OrderID . "'"]

            ]);

            $existingOrders = json_decode($existingResponse->getBody(), true);

            if (!empty($existingOrders)) {

                error_log("Order " . $order->OrderID . " already exists in Dolibarr");

                return $existingOrders[0];

            }

            // Create third party if not exists

            $buyer = $this->getOrCreateThirdParty($order);

            if (!isset($buyer['id'])) {

                throw new \RuntimeException('Failed to create/get third party: ' . json_encode($buyer));

            }

        

            // Get total amount

            $total = isset($order->Total) ? ($order->Total->value ?? 0) : 0;

        

            // Create order

            $orderData = [

                'socid' => $buyer['id'],

                'date' => $order->CreatedTime->format('Y-m-d'),

                'ref_ext' => $order->OrderID,

                'ref_client' => $order->BuyerUserID,

                'total_ht' => $total,

                'total_ttc' => $total,

                'note_private' => 'Imported from eBay'

            ];

        

            error_log("Creating order with data: " . json_encode($orderData));

        

            $response = $this->client->post($this->apiUrl . '/orders', [

                'json' => $orderData

            ]);

        

            if ($response->getStatusCode() >= 400) {

                throw new \RuntimeException('Dolibarr API error: ' . $response->getBody());

            }

    

            $responseBody = (string)$response->getBody();

            error_log("Dolibarr API response: $responseBody");

        

            $orderData = json_decode($responseBody, true);

            if (!is_array($orderData) || !isset($orderData['id'])) {

                throw new \RuntimeException('Invalid response format from Dolibarr API: ' . $responseBody);

            }

        

            // Add order lines

            if (isset($order->TransactionArray->Transaction)) {

                $transactions = $order->TransactionArray->Transaction;

                if (!is_array($transactions)) {

                    $transactions = [$transactions];

                }

            

                foreach ($transactions as $transaction) {

                    try {

                        $this->addOrderLine($orderData['id'], $transaction);

                    } catch (\Exception $e) {

                        error_log("Failed to add order line: " . $e->getMessage());

                        throw new \RuntimeException('Failed to add order line: ' . $e->getMessage());

                    }

                }

            } else {

                error_log("Warning: No transactions found for order " . $order->OrderID);

            }

        

            return $orderData;

        

        } catch (\Exception $e) {

            error_log("Error creating order " . ($order->OrderID ?? 'unknown') . ": " . $e->getMessage());

            throw $e;

        }

    }

 

    private function getOrCreateThirdParty($order) {

        if (!isset($order->BuyerUserID)) {

            throw new \RuntimeException('BuyerUserID is required');

        }

        error_log("Processing buyer: " . $order->BuyerUserID);

        try {

            // Try to find existing third party by eBay user ID

            $response = $this->client->get($this->apiUrl . '/thirdparties', [

                'query' => ['sqlfilters' => "ref_ext='" . $order->BuyerUserID . "'"]

            ]);

        

            if ($response->getStatusCode() >= 400) {

                throw new \RuntimeException('Failed to search for third party: ' . $response->getBody());

            }

        

            $result = json_decode($response->getBody(), true);

            if (!empty($result)) {

                error_log("Found existing third party for eBay user: " . $order->BuyerUserID);

                return $result[0];

            }

        

            // Try to get email from various possible properties

            $email = null;

            $possibleEmailFields = [

                'TransactionArray.Transaction.0.Buyer.Email',

                'TransactionArray.Transaction.Buyer.Email',

                'BuyerInfo.BuyerEmail'

            ];

        

            foreach ($possibleEmailFields as $field) {

                $value = $this->getNestedProperty($order, $field);

                if ($value) {

                    $email = $value;

                    break;

                }

            }

        

            // Get buyer name from BuyerInfo if available

            $buyerName = $order->BuyerUserID;

            if ($this->getNestedProperty($order, 'BuyerInfo.Name')) {

                $buyerName = $this->getNestedProperty($order, 'BuyerInfo.Name');

            }

        

            // Prepare third party data

            $thirdPartyData = [

                'name' => $buyerName,

                'name_alias' => 'eBay Buyer',

                'ref_ext' => $order->BuyerUserID,

                'client' => 1,

                'status' => 1

            ];

        

            // Add shipping address if available

            if (isset($order->ShippingAddress)) {

                $address = $order->ShippingAddress;

                $thirdPartyData = array_merge($thirdPartyData, [

                    'address' => $address->Street1 ?? '',

                    'zip' => $address->PostalCode ?? '',

                    'town' => $address->CityName ?? '',

                    'phone' => $address->Phone ?? '',

                    'country_id' => $this->getCountryId($address->CountryName ?? '')

                ]);

            }

        

            if ($email) {

                $thirdPartyData['email'] = $email;

            } else {

                error_log("No email found for buyer: " . $order->BuyerUserID);

            }

        

            error_log("Creating new third party with data: " . json_encode($thirdPartyData));

        

            // Create the third party

            $response = $this->client->post($this->apiUrl . '/thirdparties', [

                'json' => $thirdPartyData

            ]);

        

            if ($response->getStatusCode() >= 400) {

                throw new \RuntimeException('Failed to create third party: ' . $response->getBody());

            }

        

            $responseData = json_decode($response->getBody(), true);

            if (!isset($responseData['id'])) {

                throw new \RuntimeException('Invalid response format from Dolibarr API');

            }

        

            error_log("Successfully created third party with ID: " . $responseData['id']);

            return $responseData;

        

        } catch (\Exception $e) {

            error_log('Error in getOrCreateThirdParty: ' . $e->getMessage());

            throw new \RuntimeException('Error creating/getting third party: ' . $e->getMessage());

        }

    }

 

    private function addOrderLine($orderId, $transaction) {

        try {

            // Extract values with null checks

            $itemId = isset($transaction->Item) ? ($transaction->Item->ItemID ?? '') : '';

            $quantity = $transaction->QuantityPurchased ?? 1;

            $price = isset($transaction->TransactionPrice) ? ($transaction->TransactionPrice->value ?? 0) : 0;

            $title = isset($transaction->Item) ? ($transaction->Item->Title ?? 'Untitled Item') : 'Untitled Item';

        

            error_log("Processing order line for item: $itemId ($title)");

        

            // First check if the product exists in Dolibarr by ref_ext

            if ($itemId) {

                $productResponse = $this->client->get($this->apiUrl . '/products', [

                    'query' => ['sqlfilters' => "ref_ext='" . $itemId . "'"]

                ]);

            

                if ($productResponse->getStatusCode() >= 400) {

                    error_log("Failed to check product existence: " . $productResponse->getBody());

                    throw new \RuntimeException('Failed to check product existence: ' . $productResponse->getBody());

                }

            

                $products = json_decode($productResponse->getBody(), true);

            

                if (empty($products)) {

                    error_log("Product not found in Dolibarr: $itemId. Creating order line without product link.");

                    $fk_product = null;

                } else {

                    error_log("Found product in Dolibarr with ID: " . $products[0]['id']);

                    $fk_product = $products[0]['id'];

                }

            } else {

                error_log("No ItemID provided for transaction. Creating order line without product link.");

                $fk_product = null;

            }

        

            $subprice = floatval($price);

            $orderLine = [

                'fk_commande' => $orderId,

                'fk_product' => $fk_product,

                'qty' => $quantity,

                'subprice' => $subprice,

                'price' => $subprice,

                'total_ht' => $subprice * $quantity,

                'total_ttc' => $subprice * $quantity,

                'total_tva' => 0,

                'tva_tx' => 0,

                'product_type' => 0,  // 0 for product, 1 for service

                'description' => $title,

                'ref_ext' => $itemId

            ];

        

            error_log("Creating order line with data: " . json_encode($orderLine));

        

            $response = $this->client->post($this->apiUrl . '/orders/' . $orderId . '/lines', [

                'json' => $orderLine

            ]);

        

            $responseBody = (string)$response->getBody();

            $statusCode = $response->getStatusCode();

        

            error_log("Dolibarr API response for order line (status {$statusCode}): $responseBody");

        

            if ($statusCode >= 400) {

                error_log("Failed to create order line: $responseBody");

                throw new \RuntimeException("Failed to create order line (status $statusCode): $responseBody");

            }

        

            $responseData = json_decode($responseBody, true);

            if (!is_array($responseData)) {

                error_log("Invalid response format from Dolibarr API: $responseBody");

                throw new \RuntimeException('Invalid response format from Dolibarr API');

            }

        

            error_log("Successfully created order line for item: $itemId");

            return $responseData;

        

        } catch (\Exception $e) {

            $errorMsg = "Error adding order line for item $itemId: " . $e->getMessage();

            error_log($errorMsg);

            throw new \RuntimeException($errorMsg);

        }

    }

 

    private function getNestedProperty($obj, $path) {

        $parts = explode('.', $path);

        $current = $obj;

    

        foreach ($parts as $part) {

            if (is_object($current) && isset($current->$part)) {

                $current = $current->$part;

            } elseif (is_array($current) && isset($current[$part])) {

                $current = $current[$part];

            } else {

                return null;

            }

        }

    

        return $current;

    }

    /**

     * Get Dolibarr country ID from country name

     * @param string $countryName The country name from eBay

     * @return int|null The Dolibarr country ID or null if not found

     */

    private function getCountryId($countryName) {

        if (empty($countryName)) {

            return null;

        }

        // Common country mappings (add more as needed)

        $countryMap = [

            'Germany' => 'DE',

            'Deutschland' => 'DE',

            'United Kingdom' => 'GB',

            'France' => 'FR',

            'Spain' => 'ES',

            'Italy' => 'IT',

            'Netherlands' => 'NL',

            'Belgium' => 'BE',

            'Austria' => 'AT',

            'Switzerland' => 'CH'

        ];

        // Convert country name to ISO code

        $isoCode = $countryMap[$countryName] ?? $countryName;

        try {

            // Query Dolibarr API for country ID

            $response = $this->client->get($this->apiUrl . '/setup/dictionary/countries', [

                'query' => [

                    'sortfield' => 'code_iso',

                    'sqlfilters' => "(t.code_iso:=:'" . $isoCode . "')"

                ]

            ]);

            $data = json_decode($response->getBody(), true);

        

            if (is_array($data) && !empty($data)) {

                return (int)$data[0]['id'];

            }

        } catch (\Exception $e) {

            // Log error but don't throw - we'll return null

            error_log("Failed to get country ID for $countryName: " . $e->getMessage());

        }

        return null;

    }

}


meine ebay file:
Code:
<?php

namespace EbayDolibarr;

use DTS\eBaySDK\Trading\Services\TradingService;

use DTS\eBaySDK\Trading\Types\GetMyeBaySellingRequestType;

use DTS\eBaySDK\Trading\Types\GetOrdersRequestType;

use DTS\eBaySDK\Trading\Enums\DetailLevelCodeType;

class EbayService {

    private $service;

    private $config;

    public function __construct($config) {

        $this->config = $config;

        $this->service = new TradingService([

            'credentials' => [

                'appId' => $config['appId'],

                'certId' => $config['certId'],

                'devId' => $config['devId']

            ],

            'siteId' => $config['siteId']

        ]);

    }

    public function getActiveListings() {

        $request = new GetMyeBaySellingRequestType();

        $request->RequesterCredentials = new \DTS\eBaySDK\Trading\Types\CustomSecurityHeaderType();

        $request->RequesterCredentials->eBayAuthToken = $this->config['authToken'];

        $request->ActiveList = new \DTS\eBaySDK\Trading\Types\ItemListCustomizationType();

        $request->ActiveList->Include = true;

        $request->DetailLevel = [DetailLevelCodeType::C_RETURN_ALL];

        $response = $this->service->getMyeBaySelling($request);

    

        if ($response->Ack !== 'Failure') {

            return $response->ActiveList->ItemArray->Item;

        }

    

        throw new \Exception('Failed to get eBay listings: ' . print_r($response->Errors, true));

    }

    public function getOrders($days = 30) {

        try {

            $request = new GetOrdersRequestType();

            $request->RequesterCredentials = new \DTS\eBaySDK\Trading\Types\CustomSecurityHeaderType();

            $request->RequesterCredentials->eBayAuthToken = $this->config['authToken'];

        

            // Get orders for the last X days

            $request->CreateTimeFrom = new \DateTime('-' . $days . ' days');

            $request->CreateTimeTo = new \DateTime();

        

            // Include detailed information about orders

            $request->DetailLevel = [DetailLevelCodeType::C_RETURN_ALL];

            $request->OrderRole = 'Seller';

            $request->OrderStatus = 'All';

        

            // Request specific order fields

            $request->OutputSelector = [

                'OrderArray.Order.OrderID',

                'OrderArray.Order.OrderStatus',

                'OrderArray.Order.BuyerUserID',

                'OrderArray.Order.ShippingAddress',

                'OrderArray.Order.Total',

                'OrderArray.Order.CreatedTime',

                'OrderArray.Order.TransactionArray.Transaction.Item',

                'OrderArray.Order.TransactionArray.Transaction.QuantityPurchased',

                'OrderArray.Order.TransactionArray.Transaction.TransactionPrice',

                'OrderArray.Order.TransactionArray.Transaction.Buyer',

                'OrderArray.Order.TransactionArray.Transaction.Buyer.Email',

                'OrderArray.Order.BuyerInfo.BuyerEmail',

                'OrderArray.Order.BuyerInfo.Name',

                'OrderArray.Order.BuyerInfo.ShippingAddress'

            ];

        

            error_log('Fetching eBay orders with token: ' . substr($this->config['authToken'], 0, 20) . '...');

            $response = $this->service->getOrders($request);

        

            if ($response->Ack === 'Failure') {

                $errors = [];

                if (isset($response->Errors)) {

                    foreach ($response->Errors as $error) {

                        $errors[] = sprintf(

                            'Error %s: %s (Severity: %s)',

                            $error->ErrorCode,

                            $error->LongMessage ?? $error->ShortMessage,

                            $error->SeverityCode

                        );

                    }

                }

                throw new \Exception('Failed to get eBay orders: ' . implode(', ', $errors));

            }

        

            if (!isset($response->OrderArray) || !isset($response->OrderArray->Order)) {

                error_log('No orders found in eBay response');

                return [];

            }

        

            error_log('Successfully fetched ' . count($response->OrderArray->Order) . ' orders from eBay');

            return $response->OrderArray->Order;

        

        } catch (\Exception $e) {

            error_log('Error in getOrders: ' . $e->getMessage());

            throw $e;

        }

    }

}

Problem das der import nicht vollzogen wird, weder Produkte, Bestellungen oder Kunden,
Hat jemand von euch versucht sowas umzusetzten?

cu
 
Zuletzt bearbeitet:
Und das ganze ordentlich formatiert in ein Code-Tag packen:
1739191598817.png
 
Hier mal die Fehlermeldung:
Code:
[2025-02-10T20:15:34.404146+00:00] ebay-dolibarr.ERROR: Failed to sync order 11-16284-04915: Error creating/getting third party: Unknown property BuyerInfo [] []

Das mit dem
BuyerInfo

passt wohl nicht aber wenn ich entferne komme ich auch nicht weiter :-(
 
PHP ist für so etwas nicht das Mittel der Wahl.
 
Naja bisher ging es mit Dolibarr ganz gut damit, denke es liegt hier an den Infos von ebay
 
  • Gefällt mir
Reaktionen: CyborgBeta
Irgendwas ist mit dem Access Token oder Abfrage nicht so wie gedacht, ich habe ein kommerzielles System wo es geht mit dem selben Token möchte aber weg davon. Kennt sich jemand aus mit den ebay Token und Co ?
 
Zurück
Oben