eBay-API mit PHP -

Programmierung, Templatedesign & Codeschnipsel
Antworten
Maik_Koch
Beiträge: 3
Registriert: 12. Jan 2019 18:50
Land: Deutschland

eBay-API mit PHP -

Ich versuche mich an einer eBay-API in PHP. Letztendlich soll das .php folgendes können:
1. Alle meine Artikel anzeigen, welche ich bei eBay gelistet habe.
2. Wie kann ich mir alle Artikel als csv downloaden? Die Datei soll mehr Infos zu den Artikeln enthalten als ein eBay-CSV Manager. (siehe Code Block 1)
3. Wie kann ich mit Hilfe der API die Versandkosten bei Artikeln mit Versandkosten i.H.v. 4,99 EUR auf 5,99 EUR erhöhen? (siehe Code Block 2)

FYI: Ich rufe die php-Datei nur über den Browser ohne eine SDK oder einer IDE ab.

Problem:
Die Ausgabe ist entweder ein weißer Bildschirm oder ein Syntaxfehler ( ' . $data['userToken'] . ' '220705951941' '; ** Ende des Tests **/ while ($main = mysqli_fetch_object($sql_main)) { $requestXmlBody_item = ' ' . $data['userToken'] . ' ' . $main->artikelNr . ' '; //build eBay headers using variables passed via constructor //initialise a CURL session $connection_item = curl_init(); curl_setopt($connection_item, CURLOPT_URL, ...)

Ich wäre für jede Hilfe sehr dankbar.

Folgend mein Code:

<?php
//***** Code-Block 1 *****
/*
List all my articles
*/
require_once('../../../func/central_test.php');
require_once('../../../db/intranet.php');
ini_set('max_execution_time', 9000);

$data_item['verb'] = "GetItemRequest";
$data['devID'] = "AAAA-AAAA-AAAA-AAAA";
$data['appID'] = "BBBB-BBBB-BBBB-BBBB";
$data['certID'] = "CCCC-CCCC-CCCC-CCCC";
$data['serverUrl'] = "https://api.ebay.com/ws/api.dll";
$data['userToken'] = "DDDD**DDDD**DDDD**DDDD";
$data['username'] = "EEE";
$data['siteID'] = 77;

$headers_item = array(
//Regulates versioning of the XML interface for the API
"X-EBAY-API-COMPATIBILITY-LEVEL: 967",
//set the keys
"X-EBAY-API-DEV-NAME: " . $data['devID'],
"X-EBAY-API-APP-NAME: " . $data['appID'],
"X-EBAY-API-CERT-NAME: " . $data['certID'],
"X-EBAY-API-CALL-NAME: " . $data_item['verb'],
"X-EBAY-API-SITEID: " . $data['siteID']
);


$sql_main = mysqli_query($connection, "SELECT Artikelnummer as artikelNr FROM nr_ebay_angebote WHERE up_kat = '1' AND disable = '0'");

/** Test mit einem Beispiel-Artikel **
$requestXmlBody_item = '<?xml version="1.0" encoding="utf-8"?>
<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>' . $data['userToken'] . '</eBayAuthToken>
</RequesterCredentials>
<ItemID>'220705951941'</ItemID>
</GetItemRequest>';
** Ende des Tests **/

while ($main = mysqli_fetch_object($sql_main)) {
$requestXmlBody_item = '<?xml version="1.0" encoding="utf-8"?>
<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>' . $data['userToken'] . '</eBayAuthToken>
</RequesterCredentials>
<ItemID>' . $main->artikelNr . '</ItemID>
</GetItemRequest>';


//build eBay headers using variables passed via constructor
//initialise a CURL session
$connection_item = curl_init();
curl_setopt($connection_item, CURLOPT_URL, $data['serverUrl']);

//stop CURL from verifying the peer"s certificate
curl_setopt($connection_item, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection_item, CURLOPT_SSL_VERIFYHOST, 0);

//set the headers using the array of headers
curl_setopt($connection_item, CURLOPT_HTTPHEADER, $headers_item);

//set method as POST
curl_setopt($connection_item, CURLOPT_POST, 1);

//set the XML body of the request
curl_setopt($connection_item, CURLOPT_POSTFIELDS, $requestXmlBody_item);

//set it to return the transfer as a string from curl_exec
curl_setopt($connection_item, CURLOPT_RETURNTRANSFER, 1);

//Send the Request
$response = curl_exec($connection_item);

//Send the Request
$response = curl_exec($connection);

$responseXml = $response;
echo $responseXml;

//close the connection
curl_close($connection_item);
}

echo "End of request."

?>



<?php
//***** Code-Block 2 *****
/*
change the shipping cost from 4.99 to 5.99 EUR
*/
require_once('../../../func/central_test.php');
require_once('../../../db/intranet.php');
ini_set('max_execution_time', 9000);

$data_item['verb'] = "ShippingCostSummary";
$data['devID'] = "AAAA-AAAA-AAAA-AAAA";
$data['appID'] = "BBBB-BBBB-BBBB-BBBB";
$data['certID'] = "CCCC-CCCC-CCCC-CCCC";
$data['serverUrl'] = "https://api.ebay.com/ws/api.dll";
$data['userToken'] = "DDDD**DDDD**DDDD**DDDD";
$data['username'] = "EEE";
$data['siteID'] = 77;

$headers_item = array(
//Regulates versioning of the XML interface for the API
"X-EBAY-API-COMPATIBILITY-LEVEL: 967",
//set the keys
"X-EBAY-API-DEV-NAME: " . $data['devID'],
"X-EBAY-API-APP-NAME: " . $data['appID'],
"X-EBAY-API-CERT-NAME: " . $data['certID'],
"X-EBAY-API-CALL-NAME: " . $data_item['verb'],
"X-EBAY-API-SITEID: " . $data['siteID']
);

$sql_main = mysqli_query($connection, "SELECT Artikelnummer as artNumb FROM nr_ebay_angebote WHERE up_kat = '1' AND disable = '0'");

while ($main = mysqli_fetch_object($sql_main)) {
$requestXmlBody_item = '<?xml version="1.0" encoding="utf-8"?>
<ShippingCostSummary>
<ListedShippingServiceCost currencyID="CurrencyCodeType"> currentCost </ListedShippingServiceCost>
<ShippingServiceCost currencyID="CurrencyCodeType"> newShippingCost </ShippingServiceCost>
</ShippingCostSummary>;


//build eBay headers using variables passed via constructor
//initialise a CURL session
$connection_item = curl_init();
curl_setopt($connection_item, CURLOPT_URL, $data['serverUrl']);

//stop CURL from verifying the peer"s certificate
curl_setopt($connection_item, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection_item, CURLOPT_SSL_VERIFYHOST, 0);

//set the headers using the array of headers
curl_setopt($connection_item, CURLOPT_HTTPHEADER, $headers_item);

//set method as POST
curl_setopt($connection_item, CURLOPT_POST, 1);

//set the XML body of the request
curl_setopt($connection_item, CURLOPT_POSTFIELDS, $requestXmlBody_item);

//set it to return the transfer as a string from curl_exec
curl_setopt($connection_item, CURLOPT_RETURNTRANSFER, 1);

//Send the Request
$response = curl_exec($connection);

$responseXml = $response;
echo $responseXml;

if ($response->currentCost == 4.99) {
newShippingCost == 5.99;
}
}

?>


3 Monate gratis Händlerbund
mwp
Beiträge: 1458
Registriert: 12. Okt 2009 14:40
Land: Deutschland

Re: eBay-API mit PHP -

Maik_Koch hat geschrieben: 12. Jan 2019 20:27 Problem:
Die Ausgabe ist entweder ein weißer Bildschirm oder ein Syntaxfehler ( ' . $data['userToken'] . ' '220705951941' '; ** Ende des Tests **/ while ($main = mysqli_fetch_object($sql_main)) { $requestXmlBody_item = ' ' . $data['userToken'] . ' ' . $main->artikelNr . ' '; //build eBay headers using variables passed via constructor //initialise a CURL session $connection_item = curl_init(); curl_setopt($connection_item, CURLOPT_URL, ...)
Der in Klammern erwähnte Syntaxfehler erscheint nur, wenn du mit dem "Beispiel-Artikel" testest, oder? Das liegt an der ItemID. Statt '220705951941' muss 220705951941 rein.

Im Code Block 2 ist der Syntaxfehler dieser

Code: Alles auswählen

</ShippingCostSummary>;
richtig:

Code: Alles auswählen

</ShippingCostSummary>';
Diese Fehler sollte dir eigentlich schon jede Entwicklungsumgebung vor der Ausführung anzeigen. Sogar bei einer Benutzung eines simplen php Editor mit Syntax-Highlighting fällt so etwas auf. Das du die "php-Datei nur über den Browser" abrufst, hindert dich doch nicht daran, beim Bearbeiten der php-Datei einen entsprechend passenden Editor zu verwenden.

Ein weiterer Fehler ist

Code: Alles auswählen

if ($response->currentCost == 4.99) {
newShippingCost == 5.99;
}
richtig:

Code: Alles auswählen

if ($response->currentCost == 4.99) {
newShippingCost = 5.99;
}
Grundsätzlich frage ich mich, warum du erst die Artikel aus deinem Shopsystem ausliest, statt dir direkt von eBay alle gelistete Artikel geben zu lassen. Vielleicht tust du dir leichter, wenn du ein SDK nutzt, z. B. davidtsadler/ebay-sdk-php. Dort gibt es entsprechende Funktionen wie z. B. getMyeBaySelling.
Maik_Koch
Beiträge: 3
Registriert: 12. Jan 2019 18:50
Land: Deutschland

Re: eBay-API mit PHP -

Vielen Dank für die Antwort und die Hinweise!
a) Bei dem Syntaxfehler habe ich die ' entfernt. Es kam immer noch die dieselbe Fehlermeldung: ' . $data['userToken'] . ' 220705951941 '; ** Ende des Tests **/ while ($main = mysqli_fetch_object($sql_main)) { $requestXmlBody_item = ' ' . $data['userToken'] . ' ' . $main->artikelNr . ' '; //build eBay headers using variables passed via constructor //initialise a CURL session $connection_item = curl_init(); curl_setopt($connection_item, CURLOPT_URL, $data['serverUrl']); //...

b) für die anderen Dinge habe ich mir Notepad++ installiert.

c) Der 1. Code-Block diente für mich nur zum Testen. Denn ich mir künftig alles im Intranet auslegen, ohne mich überall extra einzuloggen. Deshalb soll es wenn möglich ohne SDK oder IDE gehen. Doch leider klappen die einfachen Anfragen nicht und ich frage mich, wie eine simple Abfrage in php aussehen soll damit ich eine Auflistung meiner Artikel im Browser angezeigt bekomme?
mwp
Beiträge: 1458
Registriert: 12. Okt 2009 14:40
Land: Deutschland

Re: eBay-API mit PHP -

zu a) Ich sehe keine Fehlermeldung. So wie ich das sehe, wird der Quellcode ausgegeben, sprich er parst den Teil nicht (mehr).

Mir kommt so ein Verdacht und es gibt ja keine dummen Frage: Welchen Webserver nutzt du zum Testen mit welcher php Version?
Benutzeravatar
koshop
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 6566
Registriert: 4. Sep 2012 13:23

Re: eBay-API mit PHP -

Windows Server IIS mit ASP und Access wegrenn
Maik_Koch
Beiträge: 3
Registriert: 12. Jan 2019 18:50
Land: Deutschland

Re: eBay-API mit PHP -

Apache mit PHP/5.6.14

Die Frage war super und hat mit geholfen, dass die Syntaxfehler weg sind (y).

Habt ihr auch eine Idee dazu, warum mir sonst nichts weiter angezeigt wird bzw. wie ich mir auch diesem die Daten anzeigen/verändern kann?
mwp
Beiträge: 1458
Registriert: 12. Okt 2009 14:40
Land: Deutschland

Re: eBay-API mit PHP -

Maik_Koch hat geschrieben: 15. Jan 2019 09:39 Apache mit PHP/5.6.14

Die Frage war super und hat mit geholfen, dass die Syntaxfehler weg sind (y).
Als ich mir deine Posts mehrmals durchgelesen habe, dämmerte es mir langsam. Und wie geschrieben, es war kein Fehler, auch kein Syntaxfehler.

Maik_Koch hat geschrieben: 15. Jan 2019 09:39 Habt ihr auch eine Idee dazu, warum mir sonst nichts weiter angezeigt wird bzw. wie ich mir auch diesem die Daten anzeigen/verändern kann?
Mach mal ein paar Einsteiger Tutorials zu PHP durch, um die Begrifflichkeiten zu lernen und zu verstehen, wie das ganze funktioniert, wie man Fehlersuche angeht, etc. Dann wird es dir auch leichter Fallen, die ganz einfachen Fehler zu finden.
elevennerds.de
Beiträge: 22
Registriert: 16. Jan 2019 19:05
Land: Deutschland

Re: eBay-API mit PHP -

Code: Alles auswählen

$response->currentCost == 4.99
Wo auch immer Du das rauskopiert hast, das ist schlechtester Programmierstil. Man kann ein float nicht auf Gleichheit prüfen, nur auf kleiner als oder größer als.
Benutzeravatar
Templer
Beiträge: 448
Registriert: 28. Sep 2017 07:22

Re: eBay-API mit PHP -

Also ich nutze die Funktion http://developer.ebay.com/DevZone/XML/d ... lling.html zum Abruf unserer aktiven Angebote auf eBay. Da bekommt man ein XML zurück, aus welchem ich mir die von mir benötigten Felder in eine CSV-Datei schreibe.
Antworten

Zurück zu „HTML, PHP, CSS, & Co.“

  • Information