通过API

时间:2016-12-30 20:59:11

标签: rest magento soap

我需要从其他网络应用程序中检索Magento订单评论。

Magento API文档似乎有两种方法,通过RESTSOAP

REST文档很少。它只表示URL结构如下:http://magentohost/api/rest/orders/:orderid/comments

此外,默认的REST响应是XML格式,但我需要它在JSON中。

我已经在Magento中设置了一个API用户,并且我使用SOAP从这个“其他”Web应用程序创建了评论。

我的问题,使用REST:

  1. 如何以JSON而不是XML获取响应?
  2. 如何进行身份验证?

1 个答案:

答案 0 :(得分:0)

如何使用REST Api检索Magento订单评论

以下是REST API身份验证和Retrive Order Comments的示例代码。

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"
  }
]