Oldthing SOAP WebService interface description

Endpoint URI: http://api.oldthing.de/soap/soap08.php

WSDL URI: http://api.oldthing.de/soap/soap08.php?WSDL

PHP SOAP client download URI: http://api.oldthing.de/soap/soap08.php?PHPSOAPCLIENT

Soap Service

Index

Public methods:

Public methods

authenticate

Result authenticate ( string apiKey )

Ermittelt das Token für eine Session zum Aufruf aller anderen Funktionen. Einen API-Schlüssel erhalten Sie nach Bewerbung bei oldthing. Ohne Authentifizierung (token) können nur die Funktionen "ping()" und "authenticate(apiKey)" aufgerufen werden.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	var_dump($token);

cancelOrder

Result cancelOrder (
    string token,
    string orderId,
    boolean resetArticles
)

Storniert eine Bestellung und versendet die entsprechenden Emails an den Kunden und Verkäufer.


Pflichtfelder sind:
Optionale Parameter sind:

cancelOrderItem

void cancelOrderItem (
    string token,
    string orderId,
    string articleId,
    int count,
    boolean resetArticle
)

Storniert einen Artikel innerhalb einer Bestellung.


Pflichtfelder sind:
Optionale Parameter sind:

deleteItem

Result deleteItem (
    string token,
    int id
)

Löscht ein Item (Produkt / Artikel) aus dem Bestand , welches über die interne id identifiziert wird. Diese Id wir z.B. über die Funktionen "getItem" und "getItems" zurückgegeben. Siehe auch "deleteItemBySku".

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	// insert item
	$r = $c->deleteItem($token, 123456789);
	if ($r->error) {
		echo $r->message;
	} else {
		echo 'Item gelöscht';
	}

deleteItemBySku

Result deleteItemBySku (
    string token,
    string sku
)

Löscht ein Item (Produkt / Artikel) aus dem Bestand , welches über die Artikelnummer (SKU) des Shopbetreibers identifiziert wird. Siehe auch <i>deleteItem</i>.

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	// insert item
	$r = $c->deleteItemBySku($token, 'mySku123');
	if ($r->error) {
		echo $r->message;
	} else {
		echo 'Item gelöscht';
	}

getCategories

Result getCategories (
    string token,
    int pid
)

Gibt die oldthing-Kategorien mit Namen und Id entsprechend ihrer Hirarchie zurück.


Die oldthing Kategorien liegen hierarchich vor (Baumstruktur).
token kann mit der Funktion authenticate(apiKey) ermittelt werden.
pid steht für "parent_id" - also die ID der Kategorie einer Stufe oberhalb in der Hirachie.
Mit "pid=0" erhält man die Kategorien der obersten Ebene.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	$r = $c->getCategories($token, 0);
	if ($r->error) {
		echo $r->message;
	} else {
		$rootCats = $r->data;
		$r2 = $c->getCategories($token, $rootCats[0]->id);
		var_dump($r2->data);
	}


getItem

Result getItem (
    string token,
    int id
)

Gibt das Item (Produkt / Artikel) zurück, welches über die interne id identifiziert wird. Beim Einfügen von Items mittels setItem wird die Id des items zurückgegeben.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;

	// use setItem for inserting an item
	// getting item with id 123456789
	
	$r = $c->getItem($token, 123456789);
	if (!$r->error)	var_dump($r->data);

		

getItemBySku

Result getItemBySku (
    string token,
    string sku
)

Gleiche Funktion wie "getItem", jedoch wird das Item über die Artikelnummer (SKU) des Shopbetreibers ermittelt.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;

	// use setItem for inserting an item
	
	$r = $c->getItemBySku($token, 'mySku123');
	if (!$r->error)	var_dump($r->data);

		

getItemIds

Result getItemIds (
    string token,
    int offset,
    int limit
)

Gibt alle Items (Produkte / Artikel) als array von Item-Objekten zurück, die lediglich die ID und SKU enthalten. Mit den optionalen Parametern "offset" und "limit" kann die Auswahl definiert werden.

getItems

Result getItems (
    string token,
    int offset,
    int limit
)

Gibt alle Items (Produkte / Artikel) als array von Item-Objekten zurück. Mit den optionalen Parametern "offset" und "limit" kann die Auswahl definiert werden.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;

	// use setItem for inserting some items - otherwise the result may be an empty array

	$offset = 0;	
	$r = $c->getItems($token, $offset, 10);
	while (!$r->error && (count($r->data) > 0)) {
		var_dump($r->data);
		if ($offset > 100) break;
		$offset += 10;
		$r = $c->getItems($token, $offset, 10);
	}

		

getOrder

Result getOrder (
    string token,
    string orderId
)

Gibt die Bestellung mit Artikel ID zurück.

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Pflichtfelder sind: Felder im Rückgabobject:

Programmbeispiel in PHP für getOrder:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
						 https://api.oldthing.de/soap/soap08.php?wsdl
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	$result = $c->getOrder($token, $orderId);
	if ($result->error) {
		echo $result->message;
	} else {
		print_r($result);
	}	


	/*
	result:

		stdClass Object
		(
		    [code] => 0
		    [error] =>
		    [message] =>
		    [data] => Array
		        (
		            [id] => 36
		            [status] => demand_note
		            [payment] => 31.96
		            [payment_extra] => 0.00
		            [shipping] => 0.00
		            [created_at] => 2016-11-24 17:09:27
		            [upated_at] => 2016-11-24 17:09:27
		            [paymentMethod] => Array
		                (
		                    [label] => Rechnung
		                    [name] => default
		                )

		            [items] => Array
		                (
		                    [0] => Array
		                        (
		                            [id] => 26575726
		                            [sku] => 12345768
		                            [quantity] => 1
		                        )
		                )
		            [buyer] => Array
                        (
                            [billing] => Array
                                (
                                    [salutation] => Herr
                                    [lastname] => Mustermann
                                    [firstname] => Dieter
                                    [company] => Firmenname
                                    [company_additional] => Zusatz zum Firmenname z.B. Inhaber
                                    [street] => Teststr 11
                                    [zip] => 10967
                                    [city] => Teststadt
                                    [additional] => Testzusatz
                                    [country] => Deutschland
                                )
                            [shipping] => Array
                                (
	                                [salutation] => Herr
	                                [lastname] => Mustermann
	                                [firstname] => Dieter
	                                [company] => Testfirma
	                                [company_additional] => Zusatz zum Firmenname z.B. Inhaber
	                                [street] => Teststr 99
	                                [zip] => 10968
	                                [city] => Musterstadt
	                                [additional] => Testzusatz
	                                [country] => Deutschland
                                )
                            [email] => max@mustermann.de
                            [userType] => private
                        )
		        )
		)
	*/

getOrders

Result getOrders (
    string token,
    string status,
    string offset
)

Gibt die Orders des Members zurück

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Optionen sind: Felder im Rückgabobject:

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	$result = $c->getOrders($token, 'new,payed');
	if ($result->error) {
		echo $result->message;
	} else {
		print_r($result);
	}	


	/*
	result:

	object(stdClass)#2 (4) {
	  ["code"]=>
	  int(0)
	  ["error"]=>
	  bool(false)
	  ["message"]=>
	  string(0) ""
	  ["data"]=>
	  array(56) {
	    [0]=>
	    array(3) {
	      ["id"]=>
	      string(3) "12534556"
	      ["status"]=>
	      string(3) "new"
	      ["date"]=>
	      string(19) "2016-12-07 20:21:07"
	    }
	    [1]=>
	    array(3) {
	      ["id"]=>
	      string(3) "42746488"
	      ["status"]=>
	      string(3) "new"
	      ["created_at"]=>
	      string(19) "2017-01-04 12:02:23"
	    }
	    .
	    .
	    .
	    .
	    .

	*/

ping

Result ping ( )

Eine Testfunktion der API, so dass die Verbindung sichergestellt werden kann. Diese Funktion wird im laufenden Betrieb nicht benötigt.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	$r = $c->ping();
	var_dump($r);

sendPaymentRequest

void sendPaymentRequest (
    string token,
    string orderId,
    string notice
)

Schickt eine Zahlungsaufforderung / Zahlungserinnerung an den Käufer.

setItem

Result setItem (
    string token,
    array item
)

Fügt ein neues Item (Produkt / Artikel) ein oder aktualisiert ein bestehendes Item (update). Ein Update erfolgt, wenn eine id gesetzt ist oder ein Item mit gegebener SKU vorhanden ist. Ansonsten wird das Item neu angelegt und erhält eine neue interne id, die zurückgegeben wird.

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Pflichtfelder sind:

Optionale Felder sind:

Optionales Feld location_ref

Das Feld location_ref beinhaltet ortsbezogene Daten z.B. bei Ansichtskarten gilt der Ort, welcher die Karte darstellt. Bei Angabe dieser Informationen wird die PLZ-Suche von oldthing unterstützt. Es gibt hier keine Pflichtfelder. Sinnvoll ist natürlich alle verfügbaren Daten einzutragen.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;
	
	$item = array(
		'title' => 'Kettenanhänger aus Pekannuss',
		'category_id' => '2584', // oldthing category id - see also getCategories
		'price' => '50.00',
		'tax' => '19',
		'shipping' => '5.00',
		'payment_info' => '',
		'shipping_info' => '',
		'sku' => 'ANR-0004711',
		'quantity' => '1',
		'description' => 'Tolles Schmuckstück, tolles Schmuckstück, tolles Schmuckstück, tolles Schmuckstück, tolles Schmuckstück',
		'condition' => 'Original in guter Qualität erhalten',
		'image_urls' => array('http://meine.domain.com/images/item_00001_large.jpg', 'http://meine.domain.com/images/item_00002_large.jpg'),
		'location_ref' => array('zip' => '53110', 'country' => 'DE', 'state' => 'NW', 'city' => 'Bonn', 'zip_old' => '5330', 'zip_old_eastwest' => 'W'),
		'user_fields' => array('karat' => 42)
	);
	
	// insert item
	$r = $c->setItem($token, $item);
	if ($r->error) {
		echo $r->message;
	} else {
		echo $r->data; // print the new id 

		// update item
		$item['id'] = $r->data; // not necesary - sku should be fine to identify the item
		$item['price'] = '51.00';
		$r = $c->setItem($token, $item);
		var_dump($r);
	}	

setOrderStatus

Result setOrderStatus (
    string token,
    string orderId,
    string status,
    string carrier,
    string tracking
)

Ändert den Status einer Bestellung und versendet die entsprechenden Emails an den Käufer und Verkäufer. ACHTUNG: Jeder Aufruf dieser Funktion versendet die entsprechenden Status Emails an den Kunden!

$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
$r = $c->authenticate('myApiKey');
$token = $r->data;

$orderId = 13253876;
$result = $client->setOrderStatus($token, $orderId, 'sent', 'Dhl', 'https://tracking-link.de');

setSaleNotifierUri

Result setSaleNotifierUri (
    string token,
    string uri
)

Setzt eine HTTP-Adresse, welche beim Kauf eines Produkts (Items) des Shops aufgerufen wird. Die gegebene URL wird nach Bestellungseingang über HTTP mit der POST-Methode aufgerufen (REST-Schnittstelle) wobei Bestelldaten und Details zum Artikel mitgesendet werden. Die URL wird dauerhaft gespeichert, so dass diese Funktion i.d.R. nur einmal aufgerufen werden muss.
Für den Webhook Aufruf gibt es zwei Versionen. Für Kunden mit Registrierung vor dem 01.12.2023 gilt Version 1. Alle Kunden mit späterer Registrierung arbeiten automatisch mit Version 2. Ein Umstieg von Version 1 auf Version 2 kann jederzeit durch unseren Kundendienst vorgenommen werden.

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;

	$version = 2;
	
	$c->setSaleNotifierUri($token, 'http://meine.domain.com/api/deleteItem.php', $version);
	$r = $c->testSaleNotifierUri($token, $version);
	var_dump($r);
Version 1
Version 1 sendet pro verkauftem Artikel einen seperaten Request mit folgenden Daten.
{
	"id": "123456789",
	"sku": "a1234",
	"title": "Teller mit Frauenportrait \"Sevres\", 19.Jhd.",
	"price": "11.50",
	"tax": "19",
	"shipping_price": "3.5",
	"order_shipping": "1.0",
	"order_date": "2023-11-21",
	"order_time": "16:42:34",
	"email": "max@mustermann.de",
	"userType": "private",
	"billing": {
		"salutation": "Herr",
		"lastname": "Mustermann",
		"firstname": "Max",
		"company": "InterMax",
		"company_additional": "2. Hinterhof",
		"street": "Hauptstra\u00dfe",
		"additional": "Raum 123",
		"zip": "12345",
		"city": "Entenhausen",
		"country": "DE"
	},
	"shipping": {
		"salutation": "Herr",
		"lastname": "Mustermann",
		"firstname": "Max",
		"company": "InterMax",
		"company_additional": "3. Hinterhof",
		"street": "Nebenstra\u00dfe",
		"additional": "Raum 456",
		"zip": "10962",
		"city": "Beispielstadt",
		"country": "DE"
	}
}
Version 2
Version 2 sendet einen Request pro Bestellung. Der Bestellung zugeordneten Artikel sind im Property 'items' gelistet.
Datenformat identisch zu getOrder()

'userType': 'private'
{
	"id": "369011",
	"status": "demand_note",
	"payment": "9.99",
	"payment_extra": "0",
	"shipping": "3",
	"created_at": "2023-11-21 14:06:42",
	"updated_at": "2023-11-21 14:28:59",
	"carrier": "Zusteller Anbieter",
	"tracking": "trackme-1234567",
	"paymentMethod": {
		"label": "Rechnung",
		"name": "default"
	},
	"items": [
		{
			"id": "47432866",
			"sku": "12345",
			"quantity": "1",
			"title": "Titel Artikel"
		},
		{
			"id": "47432866",
			"sku": "12346",
			"quantity": "2",
			"title": "Titel Artikel 2"
		}
	],
	"buyer": {
		"userType": "private",
		"email": "kaeufer@email.de",
		"billing": {
			"salutation": "Herr",
			"lastname": "Mustermann",
			"firstname": "Max",
			"street": "Musterstraße 2",
			"zip": "10967",
			"city": "Berlin",
			"address_additional": "Zweiter Hinterhof",
			"company": "Firmenname",
			"company_additional": "Firmenzusatz"
			"country": "DE"
		},
		"shipping": {
			"salutation": "Frau",
			"lastname": "Lisa",
			"firstname": "Musterfrau",
			"company": "Firmenname",
			"company_additional": "Firmenzusatz",
			"street": "Teststartße 92",
			"zip": "904098",
			"city": "Nürnberg",
			"address_additional": "Im Vorderhaus linker Aufgang",
			"country": "DE"
		}
	}
}
'userType': 'commercial'
{
	"id": "369011",
	"status": "demand_note",
	"payment": "9.99",
	"payment_extra": "0",
	"shipping": "3",
	"created_at": "2023-11-21 14:06:42",
	"updated_at": "2023-11-21 14:28:59",
	"carrier": "Zusteller Anbieter",
	"tracking": "trackme-1234567",
	"paymentMethod": {
		"label": "Rechnung",
		"name": "default"
	},
	"items": [
		{
			"id": "47432866",
			"sku": "12345",
			"quantity": "1",
			"title": "Titel Artikel"
		},
		{
			"id": "47432866",
			"sku": "12346",
			"quantity": "2",
			"title": "Titel Artikel 2"
		}
	],
    "buyer": {
		"userType": "commercial",
		"email": "mustermann@example.com",
		"corporation_type": "institution",
		"umstatzsteuerpflichtig": "1",
		"ust_id_nr": "DE123456789",
		"billing": {
			"company": "Name des Unternehmens",
			"company_additional": "Name Zusatz",
			"street": "Musterstra\u00dfe 15",
			"zip": "10967",
			"city": "M\u00fcnchen",
			"address_additional": "Zweiter Hinterhof",
			"country": "DE"
		},
		"shipping": {
			"company": "Name des Unternehmens Versand",
			"company_additional": "Name Zusatz Versand",
			"street": "Musterstra\u00dfe Versand 15",
			"zip": "90409",
			"city": "N\u00fcrnberg",
			"address_additional": "Adresszusatz Versand",
			"country": "DE"
		},
		"representative": {
			"salutation": "Herr",
			"lastname": "Ansprechpartner Nachname",
			"firstname": "Max"
		}
	}
}

testSaleNotifierUri

Result testSaleNotifierUri (
    string token,
    int version,
    string userType
)

Testfunktion: Ruft die vorher gesetzte Webhook URL (siehe setSaleNotifierUri) einmalig auf, so dass die Verarbeitung eines Verkaufs auf oldthing getestet werden kann. Die URL wird mittels HTTP-POST aufgerufen. Dabei werden Bestelldaten übergeben, die z.B. in einem PHP-Skript über das $_POST array entgegengenommen werden können.

Durch die Parameter $version ('1' oder '2') und $userType ('private' oder 'commerical') können Sie die für Sie zutreffende Version mit den beiden Nutzertypen testen.

token kann mit der Funktion authenticate(apiKey) ermittelt werden.

Programmbeispiel in PHP:

	$c = new SoapClient('https://api.oldthing.de/soap/soap08.php?wsdl');
	
	$r = $c->authenticate('myApiKey');
	$token = $r->data;

	$version = 2;
	$userType = 'commercial';
	
	$c->setSaleNotifierUri($token, 'http://meine.domain.com/api/deleteItem.php', $version, $userType);
	$r = $c->testSaleNotifierUri($token, $version);
	var_dump($r);

Powered by PhpWsdl - PDF download: Download this page as PDF