Metody - klienci
GetComplaints
Zwraca listę reklamacji.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| id | nie | int | 0 | id szukanej reklamacji. |
| ownNumber | nie | int | - | numer własny reklamacji |
| modified | nie | string | 0000-00-00 00:00:00 | zwrócenie reklamacji dodanych/zmienionych z tą datą lub później |
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$response = $client->GetComplaints($authenticate, 117);
header('Content-Type: application/xml');
echo $response;
Dane zwracane + komentarze:
<complaints> <complaint> <number>WOW/2021/10/5</number> <!-- numer zgłoszenia (priorytet, wymagany) --> <id>117</id> <!-- id zgłoszenia w AtomStore --> <ownNumber>36136</ownNumber> <!-- nr własny zgłoszenia --> <orderID>65</orderID> <!-- numer zamówienia --> <user> <!-- dane użytkownika --> <atom_id>15</atom_id> <!-- id użytkownika w AtomStore --> <username><![CDATA[maciej.kowalski]]></username> <!-- nazwa użytkownika --> <email>maciej.kowalski@atomstore.pl</email> <!-- email --> <phone><![CDATA[ 123456789 ]]></phone> <!-- telefon --> </user> <pickupAddress> <!-- adres odbioru --> <firstName>Maciej</firstName> <!-- imie --> <lastName>Kowalski</lastName> <!-- nazwisko --> <company /> <!-- nazwa firmy --> <street>Turystyczna</street> <!-- ulica --> <streetNumber1>13</streetNumber1> <!-- nr domu --> <streetNumber2>6</streetNumber2> <!-- nr lokalu --> <postCode>31-917</postCode> <!-- kod pocztowy --> <city>Kraków</city> <!-- miasto --> <countryCode>pl</countryCode> <!-- kod kraju (ISO 3166-1 alfa-2) --> <phone>123456789</phone> <!-- telefon --> </pickupAddress> <deliveryAddress> <!-- adres doręczenia --> <firstName>Michał</firstName> <lastName>Testowy Imoje</lastName> <company /> <street>Dobrego Pasterza</street> <streetNumber1>13</streetNumber1> <streetNumber2>6</streetNumber2> <postCode>31-917</postCode> <city>Kraków</city> <countryCode>pl</countryCode> <phone>603603603</phone> </deliveryAddress> <product> <!-- zgłoszony produkt --> <id>100</id> <!-- id produktu w AtomStore --> <code>kkk111</code> <!-- kod produktu lub wariantu --> <productName> <!-- nazwa produktu --> <![CDATA[ Pompka do roweru ]]> </productName> <producer> <![CDATA[ Unibike ]]> <!-- nazwa producenta --> </producer> </product> <quantity>1</quantity> <!-- zamówiona ilość produktu --> <kind><![CDATA[Wymiana]]></kind> <!-- rodzaj zgłoszenia --> <type><![CDATA[Wada produktu]]></type> <!-- typ zgłoszenia--> <description><![CDATA[Produkt jest wadliwy]]></description> <!-- opis zgłoszenia --> <attachments> <!-- załączniki --> <attachment>http://demo.atomstore.pl/uploads/complaints/reklamacja1.jpeg</attachment> <!-- załącznik --> </attachments> <complaint_fields> <!-- pola własne zgłoszenia --> <complaint_field> <!-- pole własne zgłoszenia --> <id>11</id> <!-- id pola własnego --> <key>uzywany</key> <!-- klucz pola własnego --> <value><![CDATA[0]]></value> <!-- wartość pola --> </complaint_field> </complaint_fields> <created>2021-12-13 11:39:23</created> <!-- data utworzenia zgłoszenia w AtomStore--> <modified>2021-12-13 11:39:23</modified> <!-- data ostatniej modyfikacji zgłoszenia --> <considerationDate>2022-01-12</considerationDate> <!-- czas rozpatrzenia zgłoszenia --> <account_number>11 1111 1111 1111 1111 1111 1111</account_number> <!-- numer konta bankowego (do zwrotu środków) --> <status>Nowe</status> <!-- status zgłoszenia --> <priority>normal</priority> <!-- priorytet zgłoszenia --> <trackingNumber></trackingNumber> <!-- numer listu przewozowego --> </complaint> </complaints>
Uwagi:
- dane zwracane są w kolejności modyfikacji reklamacji w bazie danych AtomStore, rosnąco.
GetNewsletterSubscribers
Pobranie informacji o subskrybentach newslettera.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| timestamp | tak | string | - | zawężenie danych do subskrybentów utworzonych albo zmodyfikowanych z datą równą lub późniejszą od podanej; format daty: 0000-00-00 00:00:00 (tj. rok, miesiąc, dzień, godzina) |
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$response = $client->GetNewsletterSubscribers($authenticate, '2015-06-13 23:59:59');
header('Content-Type: application/xml');
echo $response;
Dane zwracane + komentarze:
<subscribers> <subscriber> <email><![CDATA[ maciej.kowalski@atomstore.pl ]]></email> <!-- adres e-mail --> <active>1</active> <!-- aktywność subskrybenta (1 = aktywny, 0 = nieaktywny) --> <modified>2015-06-14 12:03:38</modified> <!-- data ostatniej modyfikacji subskrybenta --> </subscriber> <subscriber> <email><![CDATA[ jan.nowak@gmail.com ]]></email> <active>0</active> <modified>2015-06-14 13:44:27</modified> <store_id>1,2</store_id> <!-- Jesli sklep jest multistore'em --> </subscriber> </subscribers>
Uwagi:
- subskrybent nieaktywny to albo subskrybent nowy i niepotwierdzony, albo subskrybent dezaktywowany przez administratora, albo ktoś, kto wypisał się z newslettera, przy czym zależnie od konfiguracji sklepu wypisanie się może skutkować także całkowitym usunięciem rekordu z bazy danych.
GetUsers
Pobieranie kartotek klientów z możliwością różnicowania danych.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| created | nie | string | 0000-00-00 00:00:00 | zawężenie danych do kartotek utworzonych z datą równą lub późniejszą od podanej |
| active | nie | string | opcjonalne filtrowanie według aktywności klientów (0 = kartoteki nieaktywne, 1 = kartoteki aktywne, pusty ciąg znaków = brak filtrowania wg tego kryterium) | |
| atomId | nie | int | 0 | selekcja pojedynczego klienta według jego id w AtomStore |
| externalId | nie | string | selekcja pojedynczego klienta według jego identyfikatora zewnętrznego | |
| phrase | nie | string | wyszukiwanie po adresie e-mail, nazwie użytkownika lub numerze telefonu | |
| modified | nie | string | 0000-00-00 00:00:00 | zawężenie danych do kartotek modyfikowanych z datą równą lub późniejszą od podanej |
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$response = $client->GetUsers($authenticate, '2015-03-22 05:00:00');
header('Content-Type: application/xml');
echo $response;
Dane zwracane + komentarze:
<users>
<user>
<atom_id>4195</atom_id> <!-- id klienta w AtomStore -->
<external_id>u_1238902</external_id> <!-- zewnętrzny identyfikator klienta, o ile został nadany -->
<created>2015-03-22 07:43:58</created> <!-- data utworzenia kartoteki w AtomStore-->
<modified>2015-03-22 07:43:58</modified> <!-- data aktualizacji kartoteki w AtomStore-->
<name><![CDATA[ Maciej Kowalski ]]></name> <!-- nazwa klienta -->
<locale>pol</locale> <!-- domyślny język klienta -->
<priceListId>10</priceListId> <!-- id cennika klienta -->
<email>maciej.kowalski@atomstore.pl</email> <!-- aktualny adres e-mail -->
<active>1</active> <!-- czy konto jest aktywne (1 = tak, 0 = nie) -->
<blocked>1</blocked> <!-- czy konto jest zablokowane (1 = tak, 0 = nie) -->
<credit>0.00</credit> <!-- aktualne saldo w kredycie kupieckim -->
<credit_min></credit_min> <!-- minimalne saldo w kredycie kupieckim (brak wartości = minimum wg ustawień) -->
<currency>PLN</currency> <!-- domyślna waluta klienta -->
<min_cart>200.00</min_cart> <!-- minimalna wartość zamówienia (w walucie domyślnej) -->
<tax>1</tax> <!-- 1 = normalny VAT w zamówieniach, 0 = samodzielny płatnik VAT (0%/zw) -->
<payment_term>14</payment_term> <!-- termin płatności (pole obecne tylko przy włączonym module B2B) -->
<client_group>Hurt</client_group> <!-- nazwa grupy, do której jest przypisany klient -->
<wholesale>1</wholesale> <!-- czy grupa, do której przypisano klienta, to grupa hurtowa (1 = tak, 0 = nie) -->
<loyalty_points>0</loyalty_points> <!-- ilość punktów w programie lojalnościowym -->
<addresses> <!-- adresy klienta -->
<address>
<address_id>32311</address_id> <!-- id adresu -->
<default>0</default> <!-- czy jest to domyślny adres dostawy (1 = tak, 0 = nie) -->
<invoice>1</invoice> <!-- czy są to domyślne dane do faktury/rachunku (1 = tak, 0 = nie) -->
<phone><![CDATA[ 543215432 ]]></phone> <!-- telefon -->
<company><![CDATA[ NetArch ]]></company> <!-- nazwa firmy -->
<nip><![CDATA[ 945-208-91-38 ]]></nip> <!-- NIP -->
<postcode><![CDATA[ 31-213 ]]></postcode> <!-- kod pocztowy -->
<city><![CDATA[ Kraków ]]></city> <!-- miasto -->
<street><![CDATA[ Turystyczna ]]></street> <!-- ulica -->
<street_number_1><![CDATA[ 777/2 ]]></street_number_1> <!-- nr domu/lokalu -->
<firstname><![CDATA[ Maciej ]]></firstname> <!-- imię -->
<lastname><![CDATA[ Kowalski ]]></lastname> <!-- nazwisko -->
<country_code>pl</country_code> <!-- kod kraju (ISO 3166-1 alfa-2) -->
<state_code>12</state_code> <!-- kod województwa -->
<fieldCustomStateCode><![CDATA[ 31-213 ]]></fieldCustomStateCode> <!-- pole własne, klucz pola własnego poprzedzony frazą 'field' -->
</address>
<address>
<address_id>32312</address_id>
<default>1</default>
<invoice>0</invoice>
<phone><![CDATA[ 543215432 ]]></phone>
<company><![CDATA[ ]]></company>
<nip><![CDATA[ ]]></nip>
<postcode><![CDATA[ 31-435 ]]></postcode>
<city><![CDATA[ Kraków ]]></city>
<street><![CDATA[ Partyzantów ]]></street>
<street_number_1><![CDATA[ 5 ]]></street_number_1>
<firstname><![CDATA[ Maciej ]]></firstname>
<lastname><![CDATA[ Kowalski ]]></lastname>
<country_code>pl</country_code>
<state_code>12</state_code>
</address>
</addresses>
<user_fields> <!-- dodatkowe pola w kartotece klienta -->
<user_field>
<key>wiek</key> <!-- klucz pola -->
<name>Wiek</name> <!-- nazwa pola -->
<value><![CDATA[ 39 lat ]]></value> <!-- wartość dla danego klienta -->
</user_field>
<user_field>
<key>plec</key>
<name>Płeć</name>
<value><![CDATA[ mężczyzna ]]></value>
</user_field>
</user_fields>
<agreements> <!-- Zgody klienta -->
<agreement>
<datetime>2020-05-11 13:51:27</datetime> <!-- Data -->
<name>regulamin</name> <!-- Nazwa robocza zgody -->
<label>Regulamin Strony</label> <!-- Etykieta zgody -->
<status>1</status> <!-- Status zgody -->
</agreement>
</agreements>
</user>
</users>
Uwagi:
- znaczniki <client_group> oraz <wholesale> nie zostaną zwrócone dla klientów nieprzypisanych do żadnej grupy,
- znacznik <loyalty_points> nie zostanie zwrócony przy wyłączonym programie lojalnościowym,
- liczba adresów może być pusta, może zawierać 1 pozycję (te same dane adresowe do faktury i do dostawy), może też zawierać więcej niż 2 pozycje.
SetClientGroupPrices
Zapis cen w cennikach odpowiadających zdefiniowanym grupom klientów.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| message | tak | message | - | struktura zawierająca pole 'xml', które powinno zawierać ciąg znaków w formacie XML; opis formatu poniżej |
Format XML + komentarze:
<client_group_prices> <client_group> <name>Hurtownicy</name> <!-- nazwa cennika --> <prices> <price> <code>k_111</code> <!-- kod produktu --> <value>10.1234</value> <!-- cena netto, precyzja do 4 miejsc po przecinku --> </price> <price> <product_external_id>ei99</product_external_id> <!-- identyfikator zewn. - alternatywna identyfikacja towaru --> <value>100</value> </price> </prices> </client_group> </client_group_prices>
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$xml = '<client_group_prices><client_group><name>Hurtownicy</name>';
$xml .= '<prices><price><code>k_111</code><value>10.1234</value></price></prices>';
$xml .= '</client_group></client_group_prices>';
$message = array('xml' => $xml);
$response = $client->SetClientGroupPrices($authenticate, $message);
echo $response;
Dane zwracane:
OK
Uwagi:
- metoda nie ingeruje w definicje grup klientów i w powiązania grup z cennikami (patrz: SetClientGroups), pozwala natomiast na tworzenie i uzupełnianie cenników nieprzypisanych do żadnej grupy,
- aktualnie nie ma możliwości podania cen w wartościach brutto,
- cenniki w AtomStore nie zawierają osobnych rekordów dla wariantów produktów, tak więc kody wariantów nie powinny figurować w wysyłanych danych.
SetClientGroups
Zarządzanie grupami klientów z automatycznym tworzeniem odpowiadającego cennika oraz z możliwością przypisania kontrahentów.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| message | tak | message | - | struktura zawierająca pole 'xml', które powinno zawierać ciąg znaków w formacie XML; opis formatu poniżej |
Format XML + komentarze:
<client_groups> <client_group> <name>Hurtownicy</name> <!-- nazwa grupy / cennika --> <users> <user> <!-- przypisanie klienta poprzez podanie jego zewnętrznego identyfikatora --> <external_id>k_10345</external_id> </user> <user> <!-- przypisanie klienta poprzez podanie jego identyfikatora w AtomStore --> <atom_id>23456</atom_id> </user> </users> </client_group> <client_group> <name>VIP</name> </client_group> </client_groups>
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$xml = '<client_groups><client_group><name>VIP</name></client_group></client_groups>';
$message = array('xml' => $xml);
$response = $client->SetClientGroups($authenticate, $message);
echo $response;
Dane zwracane:
OK
Uwagi:
- metoda powoduje zapis grupy klientów, ale też stworzenie i przypisanie do tej grupy cennika o identycznej nazwie,
- przypisanie klienta do grupy można realizować także poprzez metodę SetUsers, ale wówczas nieistniejąca grupa nie zostanie utworzona,
- grupy są idenfyfikowane po nazwie - obecnie nie ma możliwości zmiany nazwy istniejącej grupy.
SetNewsletterSubscriber
Dodanie, aktualizacja lub usunięcie subskrybenta. Aktualizacja tylko w zakresie przypisania adresu e-mail do wskazanej listy (grupy) subskrybentów.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| tak | string | - | adres e-mail | |
| action | tak | int | - | 1 = dodanie lub aktualizacja subskrybenta, 0 = usunięcie subskrybenta z bazy sklepu |
| newsletter_group_id | nie | int | 0 | id zdefiniowanej w panelu sklepu listy (grupy), do której ma zostać przypisany subskrybent |
| confirmation_request | nie | int | 0 | wartość 1 przesłana podczas dodawania subskrybenta spowoduje, że zostanie do niego wysłany e-mail z prośbą o potwierdzenie subskrypcji; wartość 0 → brak takiej wiadomości, subskrybent zostanie dodany jako aktywny |
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$response = $client->SetNewsletterSubscriber($authenticate, 'maciej.kowalski@atomstore.pl', 0);
echo $response;
Dane zwracane:
OK
Uwagi:
- metoda nie pozwala na przypisanie adresu e-mail do więcej niż 1 listy subskrybentów ani też na wykreślanie subskrybentów z list.
SetUserExternalId
Nadanie klientowi zewnętrznego identyfikatora.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| atomId | tak | int | - | id klienta w AtomStore |
| externalId | tak | string | - | zewnętrzny identyfikator klienta |
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$response = $client->SetUserExternalId($authenticate, 9876, 'k_10345');
echo $response;
Dane zwracane:
OK
Uwagi:
- nie ma ograniczeń odnośnie formatu identyfikatora zewnętrznego, natomiast zalecane jest stosowanie tylko cyfr i liter (bez polskich znaków),
- zewnętrzny identyfikator kontrahenta będzie obecny w danych do odczytu (klienci - GetUsers, zamówienia - GetOrdersSpecified), można go także wykorzystać do wskazania klienta w metodach zapisu (klienci - SetUsers, SetClientGroups; zamówienia - SetOrders),
- metoda jest zalecana jedynie wtedy, gdy zarządzanie bazą kontrahentów odbywa się w zewnętrznym systemie, jednak nowi klienci mogą się także rejestrować po stronie Atoma; po pobraniu ich danych zintegrowany system powinien odesłać zwrotnie przydzielone takim klientom identyfikatory.
SetUsers
Tworzenie klientów i aktualizacja ich danych.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| message | tak | message | - | struktura zawierająca pole 'xml', które powinno zawierać ciąg znaków w formacie XML; opis formatu poniżej |
Format XML + komentarze:
<users>
<user>
<external_id>kh_98765</external_id> <!-- zewnętrzny identyfikator klienta -->
<email>abcde@abcde.com</email> <!-- login / adres e-mail klienta -->
<additional_email></additional_email> <!-- dodatkowy adres, jeśli login nie jest prawidłowym adresem e-mail (niezalecane) -->
<name><![CDATA[PHU ABCDE]]></name> <!-- nazwa użytkownika -->
<active>1</active> <!-- 1 = klient aktywny, 0 = nieaktywny -->
<blocked>1</blocked> <!-- 1 = klient zablokowany, 0 = niezablokowany -->
<password>bllu9cscGFIbu4yHULw=</password> <!-- nowe hasło klienta, zgodnie z szyfrowaniem z ustawień -->
<tax>1</tax> <!-- 1 = normalny VAT w zamówieniach, 0 = samodzielny płatnik VAT (0%/zw) -->
<client_group>VIP</client_group> <!-- nazwa grupy klienta w AtomStore -->
<credit_min>0</credit_min> <!-- kredyt kupiecki: limit -->
<credit>5000</credit> <!-- kredyt kupiecki: aktualne saldo kontrahenta -->
<payment_term>14</payment_term> <!-- domyślny termin płatności (w dniach) -->
<min_cart>200.00</min_cart> <!-- minimalna wartość zamówienia (w walucie domyślnej) -->
<currency>EUR</currency> <!-- waluta kontrahenta -->
<locale>pol</locale> <!-- język kontrahenta -->
<priceListId>12</priceListId> <!-- id cennika -->
<addresses> <!-- dane adresowe -->
<address>
<default>1</default> <!-- domyślny adres dostawy (1 = tak, 0 = nie) -->
<invoice>1</invoice> <!-- dane do faktury (1 = tak, 0 = nie) -->
<firstname></firstname>
<lastname></lastname>
<company><![CDATA[PHU ABCDE]]></company>
<nip><![CDATA[999-888-77-66]]></nip>
<street><![CDATA[Nowa]]></street>
<street_number_1>11</street_number_1>
<street_number_2>22</street_number_2>
<postcode><![CDATA[33-444]]></postcode>
<city><![CDATA[Kraków]]></city>
<state_code></state_code> <!-- kod województwa (opcjonalnie) -->
<country_code><![CDATA[PL]]></country_code> <!-- kod kraju -->
<phone/>
<fieldCustomStateCode><![CDATA[ 31-213 ]]></fieldCustomStateCode> <!-- pola własne zdefiniowane już w systemie, klucz pola własnego poprzedzony frazą 'field' (opcjonalnie) -->
</address>
</addresses>
<salesrep> <!-- przypisanie kontrahenta do handlowca (tylko w B2B) -->
<email>sklep-h-99@sklep.pl</email> <!-- adres e-mail handlowca -->
<firstname></firstname> <!-- imię handlowca (opcjonalnie) -->
<lastname></lastname> <!-- nazwisko handlowca (opcjonalnie) -->
</salesrep>
<user_fields> <!-- dodatkowe pola opisujące klienta -->
<user_field>
<key><![CDATA[klucz_pola]]></key>
<name><![CDATA[Nazwa pola]]></name>
<value><![CDATA[wartość]]></value>
</user_field>
</user_fields>
<payer> <!-- przypisanie płatnika (tylko w B2B) -->
<external_id>ERP-776</external_id> <!-- identyfikator zewn. konta, które ma być płatnikiem kontrahenta -->
</payer>
</user>
<user>
<atom_id>123123</atom_id> <!-- wskazanie istniejącego klienta poprzez jego ID w AtomStore -->
<!-- (...) -->
<addresses>
<address>
<address_id>8812312</address_id> <!-- wskazanie istniejącego adresu poprzez jego ID w AtomStore -->
<!-- (...) -->
</address>
</addresses>
</user>
<user>
<atom_id>100</atom_id> <!-- wskazanie istniejącego klienta poprzez jego ID w AtomStore -->
<deleted>1</deleted> <!-- usuwa wskazanego użytkownika -->
</user>
</users>
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$xml = '<users><user><external_id>kh_98765</external_id><name>PHU ABCDE</name></user></users>';
$message = array('xml' => $xml);
$response = $client->SetUsers($authenticate, $message);
header('Content-Type: application/xml');
echo $response;
Dane zwracane:
<savedUsers> <savedUser> <user_id>123122</user_id> <external_id>kh_98765</external_id> </savedUser> </savedUsers>
Uwagi:
- pole <external_id> jest wymagane podczas tworzenia nowego klienta,
- pole <atom_id> pozwala tylko na aktualizowanie kartotek (jeśli użytkownik o wskazanym id nie istnieje, dane są ignorowane),
- pole <email> nigdy nie służy do rozpoznania użytkownika; jeśli w danych nowego klienta nie podano adresu e-mail, to w zależności od ustawień dane są ignorowane lub login generowany jest jako user_x@ , gdzie x = <external_id>,
- pole <name> jest wymagane podczas tworzenia nowego klienta,
- pole <client_group> musi być uzupełnione nazwą grupy, która jest już zdefiniowana w sklepie,
- pole <locale> jest wykorzystywane tylko podczas tworzenia nowego klienta,
- pole <address> → <country_code> może być uzupełnione kodem lub nazwą kraju; jeśli kraj nie zostanie w ten sposób rozpoznany, do adresu zostanie przypisany kraj domyślny,
- pole <salesrep> może być uzupełnione danymi handlowca, który nie jest jeszcze zdefiniowany w sklepie - jego konto zostanie automatycznie dodane,
- pole <user_fields> może zawierać wartości niezdefiniowanych dotychczas pól - zostaną one automatycznie dodane do systemu,
- dane zwracane, <savedUsers>, zawierają jedynie wykaz dodanych użytkowników,
- nowy klient otrzymuje losowo wygenerowane hasło; przy odpowiedniej konfiguracji Atom API wysyła do niego wiadomość z opcjonalnie dołączonym odnośnikiem do strony, na której może wprowadzić nowe hasło do sklepu.
SetUsersLoyaltyPoints
Zapis zdarzenia w programie lojalnościowym, tzn. zmiana, zwiększenie lub zmniejszenie wskazanemu klientowi ilości punktów w programie lojalnościowym.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| message | tak | message | - | struktura zawierająca pole 'xml', które powinno zawierać ciąg znaków w formacie XML; opis formatu poniżej |
Format XML + komentarze:
<pointsChanges> <pointsChange> <atomId>4195</atomId> <!-- wskazanie klienta poprzez jego id w AtomStore --> <change>10</change> <!-- wartość ZMIANY ilości punktów --> <comments><![CDATA[ nagroda za polecenie sklepu ]]></comments> <!-- uwagi do zdarzenia, opcjonalnie --> </pointsChange> <pointsChange> <atomId>4195</atomId> <currentPoints>990</currentPoints> <!-- ustawienie ŁĄCZNEJ ilości punktów na koncie klienta --> </pointsChange> <pointsChange> <externalId>u_1238902</externalId> <!-- wskazanie klienta poprzez jego zewn. identyfikator --> <change>-50</change> <comments><![CDATA[ wymiana punktów w sklepie stacjonarnym ]]></comments> </pointsChange> </pointsChanges>
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$xml = '<pointsChanges><pointsChange>';
$xml .= '<atomId>4195</atomId><change>10</change><comments><![CDATA[ +10 punktów ]]></comments>';
$xml .= '</pointsChange></pointsChanges>';
$message = array('xml' => $xml);
$response = $client->SetUsersLoyaltyPoints($authenticate, $message);
echo $response;
Dane zwracane:
OK
Uwagi:
- wartości przekazywane w polach <change> i <currentPoints> mogą być ujemne (poprzedzone minusem),
- jeśli w 1 zdarzeniu przekazano zarówno <change>, jak i <currentPoints>, wykorzystane zostanie tylko pole <currentPoints>,
- po przetworzeniu danych metoda zwraca "OK"; aby potwierdzić ilość punktów klienta po zmianie, należy wywołać metodę GetUsers.
GetPartners
Zwraca partnerów jeśli włączony jest program partnerski.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| partnerId | nie | int | 0 | Filtrowanie według id partnera |
| partnerEmail | nie | string | Filtrowanie według email partnera | |
| timestamp | nie | string | 0000-00-00 00:00:00 | Filtrowanie po dacie utworzenia wpisu w historii naleznosci partnera |
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$response = $client->GetPartners($authenticate, 1, '', '2015-03-22 05:00:00');
header('Content-Type: application/xml');
echo $response;
Dane zwracane + komentarze:
<partners> <partner> <partnerID>1</partnerID> <!-- id partnera w AtomStore --> <userID>123</userID> <!-- id usera powiazanego z partnerem w AtomStore --> <click_charge>2.00</click_charge> <purchase_charge>2.00</purchase_charge> <purchase_commission>2.00</purchase_commission> <current_charge>2.00</current_charge> <paymentHistory> <!-- Historia naleznosci --> <payment> <action>32311</action> <!-- akcja naleznosci --> <created>2020-01-01 00:00:00</created> <!-- Data naleznosci --> <value>12.00</value> <!-- wartosc naleznosci --> <orderID>123123</orderID> <!-- Zamowienie powiazane z naleznoscia --> </payment> </paymentHistory> </partner> </partners>
Uwagi:
-
SetPartners
Ustawienie należności partnerów.
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| message | tak | message | - | struktura zawierająca pole 'xml', które powinno zawierać ciąg znaków w formacie XML; opis formatu poniżej |
Format XML + komentarze:
<partners> <partner> <id>123</id> <!-- ID partnera --> <charge>30.00</charge> <!-- Nowa nalezność --> </partner> <partner> <email>123</email> <!-- Email partnera --> <charge>30.00</charge> <!-- Nowa nalezność --> </partner> </partners>
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$xml = '<partners>';
$xml .= '<partner>';
$xml .= '<id>123</id><charge>30.00</charge>';
$xml .= '</partner>';
$xml .= '</partners>';
$message = array('xml' => $xml);
$response = $client->SetPartners($authenticate, $message);
echo $response;
Dane zwracane:
OK
Uwagi:
SetComplaints
Zapis reklamacji lub zwrotu
Parametry wejściowe:
| nazwa | obowiązkowy | typ | domyślnie | opis |
| authenticate | tak | auth | - | struktura składająca się z pól 'login' i 'password' |
| message | tak | message | - | struktura zawierająca pole 'xml', które powinno zawierać ciąg znaków w formacie XML; opis formatu poniżej |
Format XML + komentarze:
<complaints>
<complaint>
<number>WOW/2021/10/5</number> <!-- numer nowego zgłoszenia (wymagane) -->
<ownNumber>36136</ownNumber> <!-- nr własny zgłoszenia -->
<statusID>1</statusID> <!-- id statusu zgłoszenia (priorytet) -->
<status>Nowe</status> <!-- status zgłoszenia -->
<orderSynchID>8001</orderSynchID> <!-- id zamówienia w sklepie głównym - synchronizacja -->
<orderID>8001</orderID> <!-- id zamówienia w sklepie głównym -->
<pickupAddress> <!-- adres odbioru -->
<firstName>Maciej</firstName> <!-- imie -->
<lastName>Kowalski</lastName> <!-- nazwisko -->
<company /> <!-- nazwa firmy -->
<street>Turystyczna</street> <!-- ulica -->
<streetNumber1>13</streetNumber1> <!-- nr domu -->
<streetNumber2>6</streetNumber2> <!-- nr lokalu -->
<postCode>31-917</postCode> <!-- kod pocztowy -->
<city>Kraków</city> <!-- miasto -->
<countryCode>pl</countryCode> <!-- kod kraju (ISO 3166-1 alfa-2) -->
<phone>123456789</phone> <!-- telefon -->
</pickupAddress>
<deliveryAddress> <!-- adres doręczenia -->
<firstName>Michał</firstName>
<lastName>Testowy Imoje</lastName>
<company />
<street>Dobrego Pasterza</street>
<streetNumber1>13</streetNumber1>
<streetNumber2>6</streetNumber2>
<postCode>31-917</postCode>
<city>Kraków</city>
<countryCode>pl</countryCode>
<phone>603603603</phone>
</deliveryAddress>
<quantity>0</quantity> <!-- zamówiona ilość produktu -->
<description><![CDATA[Produkt jest wadliwy]]></description> <!-- opis zgłoszenia -->
<account_number>11 1111 1111 1111 1111 1111 1111</account_number> <!-- numer konta bankowego (do zwrotu środków) -->
<considerationDate>2022-01-12</considerationDate> <!-- czas rozpatrzenia zgłoszenia -->
<created>2021-12-13 11:39:23</created> <!-- data utworzenia zgłoszenia w AtomStore-->
<trackingNumber>5689276279476</trackingNumber> <!-- numer listu przewozowego -->
<priority>normal</priority> <!-- priorytet zgłoszenia ('low', 'normal', 'high') -->
<product> <!-- zgłoszony produkt -->
<code>kkk111</code> <!-- kod produktu lub wariantu (wymagany) -->
<name> <!-- nazwa produktu (opcjonalne) -->
<![CDATA[ Pompka do roweru ]]>
</name>
<producer>
<![CDATA[ Unibike ]]> <!-- nazwa producenta (opcjonalne) -->
</producer>
</product>
<user> <!-- dane użytkownika -->
<email>maciej.kowalski@atomstore.pl</email> <!-- email (wymagany) -->
<username><![CDATA[maciej.kowalski]]></username> <!-- nazwa użytkownika -->
<phone><![CDATA[ 123456789 ]]></phone> <!-- telefon -->
</user>
<kind><![CDATA[Wymiana]]></kind> <!-- rodzaj zgłoszenia -->
<type><![CDATA[Wada produktu]]></type> <!-- typ zgłoszenia-->
<external_ids>
<external_id> <!-- zapis external_id -->
<id>163745</id> <!-- id zewnętrzne -->
<name></name> <!-- nazwa zewnętrzna -->
<inventory_supplier_id></inventory_supplier_id> <!-- id dostawcy -->
<module_key></module_key> <!-- nazwa modułu -->
</external_id>
</external_ids>
<attachments> <!-- załączniki -->
<attachment>http://demo.atomstore.pl/uploads/complaints/reklamacja1.jpeg</attachment> <!-- załącznik -->
</attachments>
<custom_complaint_fields> <!-- zapis pól własnych -->
<uzywany><![CDATA[0]]></uzywany>
</custom_complaint_fields>
<custom_fields> <!-- zapis pól własnych -->
<custom_field>
<key>uzywany</key> <!-- klucz pola własnego -->
<value><![CDATA[33]]></value> <!-- wartość pola własnego -->
</custom_field>
</custom_fields>
</complaint>
<complaint>
<number>WOW/2021/10/5</number> <!-- numer nowego zgłoszenia (wymagane) -->
<orderID>8001</orderID> <!-- id zamówienia w sklepie głównym -->
<products> <!-- wiele produktów -->
<product>
<code>PROD_3578385</code> <!-- kod produktu lub wariantu (wymagany) -->
<description><![CDATA[Produkt jest wadliwy]]></description> <!-- opis zgłoszenia dla produktu -->
<quantity>1</quantity> <!-- zamówiona ilość produktu -->
</product>
<product>
<code>PROD_3573636</code> <!-- kod produktu lub wariantu (wymagany) -->
<description><![CDATA[Produkt jest wadliwy]]></description> <!-- opis zgłoszenia dla produktu -->
<quantity>1</quantity> <!-- zamówiona ilość produktu -->
</product>
</products>
</complaint>
<complaint>
<number>WOW/2021/10/5</number> <!-- numer zgłoszenia, które ma zostać zaktualizowane -->
<id>117</id> <!-- id zgłoszenia w AtomStore, które ma zostać zaktualizowane -->
<account_number>22 2222 2222 2222 2222 2222 2222</account_number> <!-- numer konta bankowego (do zwrotu środków) -->
</complaint>
</complaints>
Przykładowe wywołanie (PHP):
$client = new SoapClient('http://demo.atomstore.pl/atom_api/wsdl/atom_api');
$authenticate = array('login' => 'admin', 'password' => 'admin');
$xml = '<complaints><complaint><number>WOW/2021/10/5</number><id>117</id><account_number>22 2222 2222 2222 2222 2222 2222</account_number></complaint></complaints>';
$message = array('xml' => $xml);
$response = $client->SetComplaints($authenticate, $message);
echo $response;
Dane zwracane:
OK
Uwagi:
- status można przekazać poprzez ID w Atomie (statusID) lub nazwą (status)
- rodzaj (kind) za pomocą nazwy
- typ (type) też za pomocą nazwy

