потрібно зателефонувати Magento2 відпочинок api на рівні коду, як викликати magento REST APIS
потрібно зателефонувати Magento2 відпочинок api на рівні коду, як викликати magento REST APIS
Відповіді:
Magento 2 підтримує REST (Представницький стан передачі) та SOAP (Простий протокол доступу до об’єктів), як і стару версію Magento, до якої ми звикли. Офіційна документація здебільшого базується на необробленому запиті на вигин без прикладів якоюсь конкретною мовою. PHP - це те, що ми робимо, і багато людей також використовуватиме його, тому ми постаралися дати вам справжні приклади PHP, як підключити та використовувати API Magento 2.
У Magento є три типи користувачів, які мають доступ до API:
1) Гість користувача У них є доступ до ресурсів з анонімним дозволом.
2) Адміністратор / інтеграція Вони мають доступ до ресурсів, для яких дозволено конфігурацією.
3) Клієнт У них є доступ до ресурсів з дозволу самостійно чи анонімно.
Ми можемо використовувати три типи аутентифікації: 1) Аутентифікація на основі маркера
Ідея тут полягає в тому, щоб надати ім'я користувача та пароль під час початкового з'єднання та отримати маркер, який буде використовуватися для запитів, які випливають, доки термін не закінчиться.
Ось приклад використання відпочинку API через 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);
Примітка: - переконайтеся, що ім’я користувача є адміністратором користувача з належними ресурсами
Аутентифікація на основі OAuth
Доступ до API дозволений через OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ). У цьому випадку розгляньте API Magento як послугу, яка дозволяє отримати доступ до ресурсів сторонній стороні через схвалення, отримане від власників ресурсів. Наприклад, отримання інформації про клієнта (власника ресурсу) від Magento API (послуга) від стороннього додатку (клієнта). Це трохи не виходить за межі цієї статті, і окрема стаття готується, проте є простий приклад використання інтеграції без "URL-адреси посилання ідентичності" та "URL-адреса зворотного виклику".
Що вам потрібно зробити, це перейти до системи> Інтеграції та додати нову інтеграцію без «Ідентифікатор URL-адреси посилання» та «URL-адреса зворотного виклику». Не забудьте відредагувати доступ до ресурсів на вкладці API.
Потім запустіть цей сценарій:
<?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);
декілька API, які нам потрібні для використання критеріїв пошуку:
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
зверніться до http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html
Для завершення вже наведеного прикладу, але використовуйте параметри get в URL-адресі, використовуйте: -
$consumerKey = '2f5jp18p92au5bdfjwp686_somemore';
$consumerSecret = 'x1b48mz2pg1do7gi42aqeb1_somemore';
$accessToken = 'o5msvni7j79t79tl09u18x6_somemore';
$accessTokenSecret = 'f9uhqbf4ym6rv4jdxyymt0u_somemore';
function sign($method, $url, $data, $get, $consumerSecret, $tokenSecret){
$data = array_merge($data,$get);
ksort($data);
$url = str_replace('%7E', '~', rawurlencode($url));
$data = str_replace('%7E', '~', rawurlencode(http_build_query($data, '', '&')));
$data = implode('&', [$method, $url, $data]);
$secret = implode('&', [$consumerSecret, $tokenSecret]);
return base64_encode(hash_hmac('sha1', $data, $secret, true));
}
$method = 'GET';
$url = 'https://your.host/rest/V1/customers/search';
$params =[
'search_criteria[filter_groups][0][filters][0][field]' => 'firstname',
'search_criteria[filter_groups][0][filters][0][value]' => '%dallas%',
'search_criteria[filter_groups][0][filters][0][condition_type]' => 'like',
'search_criteria[filter_groups][1][filters][0][field]' => 'lastname',
'search_criteria[filter_groups][1][filters][0][value]' => '%clarke%',
'search_criteria[filter_groups][1][filters][0][condition_type]' => 'like',
];
//$url = 'https://your.host/rest/V1/products/sku';
//$params = [];
$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, $params, $consumerSecret, $accessTokenSecret);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_URL => $url.'?'.http_build_query($params),
CURLOPT_HTTPHEADER => [
'Authorization: Basic '. base64_encode('not:telling'),
'Authorization: OAuth ' . http_build_query($data, '', ',')
]
]);
$result = curl_exec($curl);
curl_close($curl);
var_dump($result);