উদাহরণস্বরূপ Magento 2 REST এপিআই ব্যবহার


উত্তর:


13

ম্যাজেন্টো 2 আরইএসটি (প্রতিনিধিত্বমূলক স্টেট ট্রান্সফার) এবং এসওএপি (সিম্পল অবজেক্ট অ্যাক্সেস প্রোটোকল) সমর্থন করে, অনেকটা আমরা যে ম্যাজেন্টো ব্যবহার করতাম তার পুরানো সংস্করণের মতো। অফিসিয়াল ডকুমেন্টেশন বেশিরভাগ নির্দিষ্ট ভাষার উদাহরণ ছাড়াই কাঁচা কার্ল অনুরোধের ভিত্তিতে তৈরি। পিএইচপি হ'ল আমরা যা করি এবং সেখানেও অনেক লোক এটি ব্যবহার করে, তাই আমরা আপনাকে কীভাবে সংযুক্ত করতে এবং ম্যাজেন্টো 2 এপিআই ব্যবহার করতে হবে তার প্রকৃত পিএইচপি উদাহরণ দেওয়ার চেষ্টা করেছি।

তিনটি ব্যবহারকারীর ধরণ রয়েছে যা ম্যাগানোতে API এ অ্যাক্সেস পেয়েছে এবং সেগুলি হ'ল:

1) অতিথির ব্যবহারকারীর অনামী অনুমতি সহ সংস্থানগুলিতে অ্যাক্সেস রয়েছে।

2) প্রশাসক / সংহতকরণ তাদের কনফিগারেশনের দ্বারা অনুমোদিত এমন সংস্থাগুলিতে অ্যাক্সেস রয়েছে।

3) গ্রাহক স্ব বা বেনামে অনুমতি দিয়ে তাদের সংস্থানগুলি অ্যাক্সেস করতে পারেন।

তিন ধরণের প্রমাণীকরণ রয়েছে যা আমরা ব্যবহার করতে পারি: 1) টোকেন-ভিত্তিক প্রমাণীকরণ

আইডিয়াটি এখানে প্রাথমিক সংযোগের সময় ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহ করা এবং টোকেনের মেয়াদ শেষ না হওয়া অবধি অনুসরণকারী অনুরোধগুলির জন্য ব্যবহৃত টোকেন গ্রহণ করা receive

এখানে পিএইচপি এর মাধ্যমে বিশ্রাম এপিআই ব্যবহার করার উদাহরণ রয়েছে

<?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- ভিত্তিক প্রমাণীকরণ

OAuth 1.0a ( https://en.wikedia.org/wiki/OAuth ) এর মাধ্যমে API এ অ্যাক্সেস অনুমোদিত । এই ক্ষেত্রে, Magento এপিআইকে এমন একটি পরিষেবা হিসাবে ভাবুন যা সংস্থার মালিকদের কাছ থেকে অনুমোদনের মাধ্যমে তৃতীয় পক্ষের সংস্থাগুলিতে অ্যাক্সেসের অনুমতি দেয়। উদাহরণস্বরূপ, তৃতীয় পক্ষের অ্যাপ্লিকেশন (ক্লায়েন্ট) থেকে ম্যাজেন্টো এপিআই (পরিষেবা) থেকে গ্রাহক (সংস্থার মালিক) সম্পর্কিত তথ্য পাওয়া। এটি এই নিবন্ধটির সুযোগের বাইরে কিছুটা পৃথক এবং পৃথক নিবন্ধ প্রস্তুতিতে রয়েছে, তবে "পরিচয় লিঙ্ক 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);

কয়েকটি এপিআই আমাদের অনুসন্ধান ক্রিটেরিয়া প্রাক্তন ব্যবহার করতে হবে: -

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


আমার সমস্যাটি দেখার জন্য দয়া করে এখানে যান: - magento.stackexchange.com/q/260229/49733
ওয়াকার আহমাদ

5

পোস্ট ম্যানের নীচে কনফিগারেশনটি করতে হবে এখানে চিত্র বর্ণনা লিখুন


এই স্ক্রিনশটটি ম্যাজেন্টোটি কোন সংস্করণে তৈরি হয়েছিল? আমি এই পৃষ্ঠাটি সনাক্ত করতে পারি না।
অ্যাডামজোনস

@ অ্যাডম জোনস যা পোস্টম্যান স্ক্রিনশটে রয়েছে, ম্যাজেন্টো 2 ব্যাকএন্ডে নয়।
ডোমেনসয়েল

0

ইতিমধ্যে প্রদত্ত উদাহরণটি সম্পূর্ণ করতে, তবে ইউআরএল-এ প্যারামিটারগুলি ব্যবহার করুন:

$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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.