trzeba wywołać Magento2 rest api na poziomie kodu, jak wywołać domyślną REST APIS magento
źródło
trzeba wywołać Magento2 rest api na poziomie kodu, jak wywołać domyślną REST APIS magento
Magento 2 obsługuje REST (Representational State Transfer) i SOAP (Simple Object Access Protocol), podobnie jak stara wersja Magento, do której byliśmy przyzwyczajeni. Oficjalna dokumentacja opiera się głównie na surowym żądaniu zwijania bez przykładów w określonym języku. PHP jest tym, co robimy i będzie z niego korzystać także wiele osób, dlatego staraliśmy się podać prawdziwe przykłady PHP, w jaki sposób połączyć się i korzystać z Magento 2 API.
Istnieją trzy typy użytkowników, którzy mają dostęp do API w Magento, a są to:
1) Użytkownik-gość Mają dostęp do zasobów z anonimowym pozwoleniem.
2) Administrator / integracja Mają dostęp do zasobów, na które są autoryzowane przez konfigurację.
3) Klient Mają dostęp do zasobów za zgodą samego siebie lub anonimowego.
Istnieją trzy rodzaje uwierzytelnienia, których możemy użyć: 1) Uwierzytelnianie oparte na tokenach
Ideą tutaj jest podanie nazwy użytkownika i hasła podczas pierwszego połączenia i otrzymanie tokena, który będzie używany w następnych żądaniach, dopóki token nie wygaśnie.
Oto przykład używania rest API przez PHP
<?php
$userData = array("username" => "USERNAMe", "password" => "PASSWORD");
$ch = curl_init("http://www.YOUR_DOMIAN.com/rest/V1/integration/admin/token");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($userData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Content-Lenght: " . strlen(json_encode($userData))));
$token = curl_exec($ch);
$ch = curl_init("http://www.YOUR_DOMIAN.com/rest/V1/products/LC515");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Bearer " . json_decode($token)));
$result = curl_exec($ch);
var_dump($result);
Uwaga: - upewnij się, że nazwa użytkownika to admin z odpowiednimi zasobami
Uwierzytelnianie oparte na OAuth
Dostęp do API jest dozwolony przez OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ). W takim przypadku pomyśl o Magento API jako o usłudze, która umożliwia dostęp do zasobów stronom trzecim poprzez zatwierdzenie otrzymane od właścicieli zasobów. Na przykład uzyskiwanie informacji o kliencie (właścicielu zasobu) z API Magento (usługa) z aplikacji (klienta) innej firmy. Jest to trochę poza zakresem tego artykułu, a oddzielny artykuł jest w przygotowaniu, jednak istnieje prosty przykład użycia integracji bez „adresu URL linku tożsamości” i „adresu URL wywołania zwrotnego”.
Musisz przejść do System> Integrations i dodać nową integrację bez „URL linku tożsamości” i „URL wywołania zwrotnego”. Pamiętaj, aby edytować dostęp do zasobów na karcie API.
Następnie uruchom ten skrypt:
<?php
function sign($method, $url, $data, $consumerSecret, $tokenSecret)
{
$url = urlEncodeAsZend($url);
$data = urlEncodeAsZend(http_build_query($data, '', '&'));
$data = implode('&', [$method, $url, $data]);
$secret = implode('&', [$consumerSecret, $tokenSecret]);
return base64_encode(hash_hmac('sha1', $data, $secret, true));
}
function urlEncodeAsZend($value)
{
$encoded = rawurlencode($value);
$encoded = str_replace('%7E', '~', $encoded);
return $encoded;
}
// REPLACE WITH YOUR ACTUAL DATA OBTAINED WHILE CREATING NEW INTEGRATION
$consumerKey = '0b3d76jra3log3i2dthslvf0fg54avjv';
$consumerSecret = 'yk8ypwrqrjepa01g3bt0f57ii6kgkqb4';
$accessToken = 'pjhpgtv3un78h83wmhcbk0s8nuxbfhx0';
$accessTokenSecret = 'ryf7sqesnrsn23aifragqywttbm3gkch';
$method = 'GET';
$url = 'http://www.YOUR_DOMIAN..com/rest/V1/products/LC515';
//
$data = [
'oauth_consumer_key' => $consumerKey,
'oauth_nonce' => md5(uniqid(rand(), true)),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time(),
'oauth_token' => $accessToken,
'oauth_version' => '1.0',
];
$data['oauth_signature'] = sign($method, $url, $data, $consumerSecret, $accessTokenSecret);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => [
'Authorization: OAuth ' . http_build_query($data, '', ',')
]
]);
$result = curl_exec($curl);
curl_close($curl);
var_dump($result);
kilka API musimy użyć searchCriteria np .:
GET http://<magento_host>/index.php/rest/V1/products?
searchCriteria[filter_groups][0][filters][0][field]=name&
searchCriteria[filter_groups][0][filters][0][value]=%25Leggings%25&
searchCriteria[filter_groups][0][filters][0][condition_type]=like&
searchCriteria[filter_groups][0][filters][1][field]=name&
searchCriteria[filter_groups][0][filters][1][value]=%25Parachute%25&
searchCriteria[filter_groups][0][filters][1][condition_type]=like
patrz http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html
na poczcie należy wykonać konfigurację poniżej
źródło
Aby ukończyć podany już przykład, ale użyj parametrów get w adresie URL, użyj:
źródło