kod düzeyinde Magento2 rest api çağırmak gerekir nasıl varsayılan magento REST APIS aramak için
kod düzeyinde Magento2 rest api çağırmak gerekir nasıl varsayılan magento REST APIS aramak için
Yanıtlar:
Magento 2, alıştığımız Magento'nun eski sürümüne benzer şekilde REST (Temsili Durum Transferi) ve SOAP'ı (Basit Nesne Erişim Protokolü) destekler. Resmi belgeler çoğunlukla belirli bir dilde örnekler olmadan ham kıvrılma talebine dayanmaktadır. PHP yaptığımız şeydir ve bunu kullanan birçok kişi de olacaktır, bu yüzden size Magento 2 API'sini nasıl bağlayacağınız ve kullanacağınıza dair gerçek PHP örnekleri vermeye çalıştık.
Magento'da API'ya erişimi olan üç kullanıcı türü vardır ve bunlar:
1) Misafir kullanıcı Anonim izinle kaynaklara erişebilirler.
2) Yönetici / Entegrasyon Konfigürasyon tarafından yetkilendirilen kaynaklara erişimleri vardır.
3) Müşteri Kaynaklara öz veya anonim izni ile erişebilirler.
Kullanabileceğimiz üç tür kimlik doğrulama vardır: 1) Belirteç tabanlı kimlik doğrulama
Burada fikir, ilk bağlantı sırasında kullanıcı adı ve şifre sağlamak ve token sona erene kadar takip eden istekler için kullanılacak jetonu almaktır.
PHP ile rest API kullanarak örnek
<?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);
Not: - kullanıcı adının uygun kullanıcılara sahip yönetici kullanıcı olduğundan emin olun.
OAuth tabanlı kimlik doğrulama
API'ya erişime OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ) aracılığıyla izin verilir . Bu durumda, Magento API'sini kaynak sahiplerinden alınan onay ile üçüncü taraflara kaynaklara erişime izin veren bir hizmet olarak düşünün. Örneğin, üçüncü taraf uygulamasından (istemci) Magento API'sinden (hizmet) müşteri (kaynak sahibi) bilgisi alma. Bu, bu makalenin kapsamının biraz dışındadır ve ayrı bir makale hazırlanmaktadır, ancak “Kimlik bağlantısı URL'si” ve “Geri arama URL'si” olmadan entegrasyon kullanımına basit bir örnek vardır.
Yapmanız gereken Sistem> Entegrasyonlara gidip “Kimlik bağlantısı URL'si” ve “Geri Arama URL'si” olmadan yeni entegrasyon eklemek. Kaynak erişimini API sekmesinde düzenlemeyi unutmayın.
Sonra şu komut dosyasını çalıştırın:
<?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);
searchCriteria ex kullanmamız gereken birkaç 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
bkz. http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html
Zaten verilen örneği tamamlamak, ancak url'deki get parametrelerini kullanmak için şunu kullanın: -
$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);