Demandware OCAPI修改订单

时间:2016-11-26 05:21:00

标签: demandware

我已经构建了一个小程序,帮助识别Demandware中状态不正确的订单,例如:(状态:新的,打开的,已完成的和发货状态:未发货,已发货)。

我基本上只使用OCAPI的order_search并将结果与​​我们的ERP进行比较。

但是现在我想自动修复一些状态,这需要我使用/ orders / {order_no} GET和PATCH调用,但是当我这样做时,我收到以下消息:

{ type: 'AccessWithoutUserForbiddenException',
 message: 'An authenticated user is required in order to access resource.' }

根据文档,订单的OAUTH使用:“通过OAuth令牌进行身份验证。”,但订单/ {order_no}使用:“通过OAuth令牌进行身份验证。需要有效用户。”

那么成为有效用户的正确策略是什么?

2 个答案:

答案 0 :(得分:2)

获取oAuth令牌的有效用户是Business Manager用户。因此,请登录到Business Manager并为您的用例创建新用户并授予必要的权限。

之后,您就可以执行特定资源。

基督教

答案 1 :(得分:0)

如果您使用account.demandware.com作为主机,它将抛出以下错误

{错误:“ unauthorized_client”,错误描述:“客户端ID” \'xxxxxxxxxxxxxxxxxxx \'的凭据无效,无法使用授权类型 \'urn:demandware:params:oauth:grant-type:client-id:dwsid:dwsecuretoken \'。 }

相反,您可以将主机更改为沙箱主机。再试一次。它应该工作。我也面临着同样的问题。

const key = new Buffer('business_manager_email_id' + ":" + 'business_manager_pwd' + ":" + 'client_pwd').toString("base64");
const options = {
    url: 'https://<sandbox_host>/dw/oauth2/access_token?client_id=your_client_id',
    method: "POST",
    headers: {
      'Authorization': "Basic " + key,
      "Content-Type": "application/x-www-form-urlencoded",
    },
    body: "grant_type=urn:demandware:params:oauth:grant-type:client-id:dwsid:dwsecuretoken"
  };