通过API检索Magento订单评论
问题描述:
我需要从其他Web应用程序检索Magento订单评论。通过API检索Magento订单评论
Magento API文档似乎有两种方法可以做到这一点,通过REST和SOAP。
REST文档很少。它只说URL结构是这样的:http://magentohost/api/rest/orders/:orderid/comments
此外,默认的REST响应是XML,但我需要它在JSON。
我已经有一个在Magento中设置的API用户,并且我使用SOAP创建了来自这个“其他”web应用程序的评论。
我的问题,使用REST:
- 我如何在JSON而不是XML响应?
- 我如何进行身份验证?
答
如何以检索Magento的订单评论与REST API
这里是REST API认证和Retrive订单注释的示例代码。
Magento的测试文件
<?php
session_start();
$mageFilename = '../app/Mage.php';
require $mageFilename;
Mage::app();
// $callbackUrl is a path to your file with OAuth authentication example for the Admin user
$callbackUrl = "http://magentohost/extrafiles/oauth-test.php";
//oAuth Initiate URL
$temporaryCredentialsRequestUrl = "http://magentohost/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
//oAuth Authorize
$adminAuthorizationUrl = 'http://magentohost/admin/oauth_authorize';
//oAuth Token URL
$accessTokenRequestUrl = 'http://magentohost/oauth/token';
//API Url
$apiUrl = 'http://magentohost/api/rest';
//Consumer Key
$consumerKey = '{{PUT_YOUR_CONSUMER_KEY}}';
//Consumer Secret
$consumerSecret = '{{CONSUMER_SECRET}}';
if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1)
{
$_SESSION['state'] = 0;
}
try
{
$authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
$oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
$oauthClient->enableDebug();
if (!isset($_GET['oauth_token']) && !$_SESSION['state'])
{
$requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
$_SESSION['secret'] = $requestToken['oauth_token_secret'];
$_SESSION['state'] = 1;
header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
exit;
}
else if ($_SESSION['state'] == 1)
{
$oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
$accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
$_SESSION['state'] = 2;
$_SESSION['token'] = $accessToken['oauth_token'];
$_SESSION['secret'] = $accessToken['oauth_token_secret'];
header('Location: ' . $callbackUrl);
exit;
}
else
{
$oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
$resourceUrl = "$apiUrl/orders/21833/comments";
$oauthClient->fetch($resourceUrl, array(), 'GET', array('Accept' => '*/*'));
echo $oauthClient->getLastResponse();
}
}
catch (OAuthException $e)
{
print_r($e->getMessage());
echo "<br/>";
print_r($e->lastResponse);
}
exit;
?>
回应:
[
{
"created_at": "2016-12-06 15:53:28",
"comment": "On order, Following Activity is done By: XXX Captured amount of $2,669.97 online. Transaction ID: \"XXXXXXX\".",
"is_customer_notified": "2",
"is_visible_on_front": "0",
"status": "processing"
},
{
"created_at": "2016-12-06 15:53:28",
"comment": "Order is Created with following : Order is Created By: XXX Grand Total: $2669.97",
"is_customer_notified": null,
"is_visible_on_front": "0",
"status": "processing"
}
]