Penggunaan Magento 2 REST API dengan contoh-contoh


Jawaban:


13

Magento 2 mendukung REST (Representational State Transfer) dan SOAP (Simple Object Access Protocol), sama seperti versi Magento lama yang biasa kami gunakan. Dokumentasi resmi sebagian besar didasarkan pada permintaan ikal mentah tanpa contoh dalam beberapa bahasa tertentu. PHP adalah apa yang kami lakukan dan akan ada banyak orang yang menggunakannya juga, jadi kami mencoba memberi Anda contoh nyata PHP tentang cara menghubungkan dan menggunakan Magento 2 API.

Ada tiga tipe pengguna yang memiliki akses ke API di Magento dan itu adalah:

1) Pengguna tamu Mereka memiliki akses ke sumber daya dengan izin anonim.

2) Administrator / Integrasi Mereka memiliki akses ke sumber daya yang diizinkan oleh konfigurasi.

3) Pelanggan Mereka memiliki akses ke sumber daya dengan izin sendiri atau anonim.

Ada tiga jenis otentikasi yang dapat kita gunakan: 1) Otentikasi berbasis Token

Ide di sini adalah untuk memberikan nama pengguna dan kata sandi selama koneksi awal dan menerima token untuk digunakan untuk permintaan yang mengikuti, sampai token berakhir.

Berikut ini contoh menggunakan API sisanya melalui 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);

Catatan: - pastikan nama pengguna admin pengguna dengan sumber daya yang tepat harus ditugaskan

Otentikasi berbasis OAuth

Akses ke API diizinkan melalui OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ). Dalam hal ini, pikirkan Magento API sebagai layanan yang memungkinkan akses ke sumber daya ke pihak ketiga melalui persetujuan yang didapat dari pemilik sumber daya. Misalnya, mendapatkan info pelanggan (pemilik sumber daya) dari Magento API (layanan) dari aplikasi pihak ketiga (klien). Ini sedikit keluar dari ruang lingkup untuk artikel ini dan artikel terpisah sedang dalam persiapan, namun ada contoh sederhana menggunakan integrasi tanpa "URL tautan Identitas" dan "URL Panggilan Balik".

Yang perlu Anda lakukan adalah pergi ke Sistem> Integrasi dan menambahkan integrasi baru tanpa "URL tautan Identitas" dan "URL Panggilan Balik". Ingatlah untuk mengedit akses sumber daya pada tab API.

Kemudian jalankan skrip ini:

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

beberapa API kita perlu menggunakan 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

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


Silakan kunjungi di sini untuk melihat masalah saya: - magento.stackexchange.com/q/260229/49733
wakar Ahamad

5

dalam posting man konfigurasi di bawah ini harus dilakukan masukkan deskripsi gambar di sini


Magento versi apa tangkapan layar ini dibuat? Saya tidak dapat menemukan halaman ini.
AdamJones

@AdamJones yang tukang pos di tangkapan layar, bukan backend Magento 2.
DomainSoil

0

Untuk melengkapi contoh yang sudah diberikan, tetapi gunakan parameter get di url, gunakan: -

$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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.