Utilisation de l'API REST Magento 2 avec des exemples


Réponses:


13

Magento 2 prend en charge REST (Representational State Transfer) et SOAP (Simple Object Access Protocol), un peu comme l'ancienne version de Magento à laquelle nous étions habitués. La documentation officielle est principalement basée sur une demande de boucle brute sans exemples dans une langue spécifique. PHP est ce que nous faisons et il y aura de nombreuses personnes l'utilisant également, nous avons donc essayé de vous donner de vrais exemples PHP de la façon de se connecter et d'utiliser l'API Magento 2.

Il existe trois types d'utilisateurs qui ont accès à l'API dans Magento et ce sont:

1) Utilisateur invité Ils ont accès aux ressources avec une autorisation anonyme.

2) Administrateur / Intégration Ils ont accès à des ressources dont la configuration est autorisée.

3) Client Ils ont accès aux ressources avec leur propre autorisation ou leur autorisation anonyme.

Il existe trois types d'authentification que nous pouvons utiliser: 1) Authentification basée sur des jetons

L'idée ici est de fournir un nom d'utilisateur et un mot de passe lors de la connexion initiale et de recevoir le jeton à utiliser pour les demandes qui suivent, jusqu'à l'expiration du jeton.

Voici un exemple d'utilisation d'API rest via 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);

Remarque: - assurez-vous que le nom d'utilisateur est un utilisateur administrateur avec les ressources appropriées doit être attribué

Authentification basée sur OAuth

L'accès à l'API est autorisé via OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ). Dans ce cas, considérez l'API Magento comme un service qui permet l'accès aux ressources à des tiers via l'approbation obtenue des propriétaires des ressources. Par exemple, obtenir des informations sur le client (propriétaire de la ressource) à partir de l'API Magento (service) à partir d'une application tierce (client). Ceci est un peu hors de portée de cet article et un article séparé est en préparation, mais il existe un exemple simple d'utilisation de l'intégration sans «URL de lien d'identité» et «URL de rappel».

Ce que vous devez faire est d'aller dans Système> Intégrations et d'ajouter une nouvelle intégration sans «URL de lien d'identité» et «URL de rappel». N'oubliez pas de modifier l'accès aux ressources sur l'onglet API.

Exécutez ensuite ce script:

<?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);

quelques API dont nous avons besoin pour utiliser searchCriteria ex: -

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

voir http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html


Veuillez visiter ici pour voir mon problème: - magento.stackexchange.com/q/260229/49733
wakar Ahamad

5

dans l'homme de poste ci-dessous, la configuration doit être effectuée entrez la description de l'image ici


Dans quelle version Magento cette capture d'écran a-t-elle été réalisée? Je ne trouve pas cette page.
AdamJones

@AdamJones c'est Postman dans la capture d'écran, pas le backend de Magento 2.
DomainSoil

0

Pour compléter l'exemple déjà donné, mais utilisez les paramètres get dans l'url, utilisez: -

$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);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.