Sử dụng API Magento 2 REST với các ví dụ


Câu trả lời:


13

Magento 2 hỗ trợ REST (Chuyển trạng thái đại diện) và SOAP (Giao thức truy cập đối tượng đơn giản), giống như phiên bản cũ của Magento mà chúng ta đã từng sử dụng. Tài liệu chính thức chủ yếu dựa trên yêu cầu curl thô mà không có ví dụ trong một số ngôn ngữ cụ thể. PHP là những gì chúng tôi làm và cũng sẽ có nhiều người sử dụng nó, vì vậy chúng tôi đã cố gắng cung cấp cho bạn các ví dụ PHP thực sự về cách kết nối và sử dụng API Magento 2.

Có ba loại người dùng có quyền truy cập API trong Magento và đó là:

1) Người dùng khách Họ có quyền truy cập vào các tài nguyên với sự cho phép ẩn danh.

2) Quản trị viên / Tích hợp Họ có quyền truy cập vào các tài nguyên được ủy quyền theo cấu hình.

3) Khách hàng Họ có quyền truy cập vào các tài nguyên với sự cho phép tự hoặc ẩn danh.

Có ba loại xác thực mà chúng tôi có thể sử dụng: 1) Xác thực dựa trên mã thông báo

Ý tưởng ở đây là cung cấp tên người dùng và mật khẩu trong kết nối ban đầu và nhận mã thông báo sẽ được sử dụng cho các yêu cầu tiếp theo, cho đến khi mã thông báo hết hạn.

Dưới đây là ví dụ sử dụng API còn lại thông qua 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);

Lưu ý: - đảm bảo tên người dùng là người dùng quản trị viên với các tài nguyên phù hợp sẽ được chỉ định

Xác thực dựa trên OAuth

Quyền truy cập vào API được cho phép thông qua OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ). Trong trường hợp này, hãy nghĩ về Magento API như một dịch vụ cho phép truy cập tài nguyên cho bên thứ ba thông qua phê duyệt nhận được từ các chủ sở hữu tài nguyên. Ví dụ: nhận thông tin khách hàng (chủ sở hữu tài nguyên) từ API Magento (dịch vụ) từ ứng dụng (khách hàng) của bên thứ ba. Đây là một chút ngoài phạm vi cho bài viết này và bài viết riêng biệt đang được chuẩn bị, tuy nhiên có một ví dụ đơn giản về việc sử dụng tích hợp mà không có URL liên kết Nhận dạng URL và URL Gọi lại URL Hồi.

Những gì bạn cần làm là vào Hệ thống> Tích hợp và thêm tích hợp mới mà không cần liên kết Nhận dạng URL URL và URL Gọi lại URL Hồi. Hãy nhớ chỉnh sửa quyền truy cập tài nguyên trên tab API.

Sau đó chạy tập lệnh này:

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

vài API chúng ta cần sử dụng 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

tham khảo http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html


Vui lòng truy cập vào đây để xem vấn đề của tôi: - magento.stackexchange.com/q/260229/49733
wakar Ahamad

5

trong bài người đàn ông dưới đây cấu hình phải được thực hiện nhập mô tả hình ảnh ở đây


Magento phiên bản này được làm ở đâu? Tôi không thể định vị trang này.
AdamJones

@AdamJones đó là Người đưa thư trong ảnh chụp màn hình, không phải phụ trợ Magento 2.
DomainSoil

0

Để hoàn thành ví dụ đã cho, nhưng sử dụng tham số get trong url, sử dụng: -

$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);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.