首页 > 解决方案 > NetSuite Suitelet 未选择 Shopify Webhook

问题描述

怎么了

我来自 shopify 的 Webhook 没有将详细信息传递给 NetSuite 中的 SuiteScript 2.0 Suitelet。

我想发生什么

我希望 shopify 将 JSON 对象发送到我的 netsuite Suitelet,以便我可以在 NetSuite 中处理订单。

细节

我正在尝试使用 Shopify 的 webhook 在 shopify 和 Netsuite 之间建立连接。

我已经设置了一个 webhook,如下所示 在此处输入图像描述

我的 webhook 的 URL 是;

https://XXXXXXX-sb1.extforms.netsuite.com/app/site/hosting/scriptlet.nl?script=XXX&deploy=XX&compid=XXXXXXX_SB1&h=XXXXXXXXXXXXXXXXXXX&caller=ecommerce&key=XXXX-XXXX-XXXX-XXXX

此链接调用 Suitelet,当我亲自将链接粘贴到 URL 中时,它是有效的。但是,当我单击“发送测试通知”时,我没有看到 Suitelet 已执行的任何证据。套件的第一行是;

log.debug("Running");

我已将 Webhook URL 更改为转到 RequestBin,并且确实 Webhook 可以正常工作。

我有什么尝试

  1. 我已经从 URL 中删除了额外的查询字符串参数“caller”和“key”。不能解决问题。
  2. 我已确认 Webhook 在将 URL 更改为 RequestBin 时有效。

标签: javascriptshopifynetsuitewebhookssuitescript2.0

解决方案


公共套件的一个令人沮丧的限制是它们要求User-Agent标头声称是浏览器。(参见例如SuiteAnswer #38695)。

我在使用 BigCommerce webhook 时遇到了和你一样的问题,我最终做的是通过一个简单的谷歌云函数来代理 webhook,该函数修改了用户代理。

const request = require('request');

exports.webhook = (req, res) => {
  request.post(
    {
      url: process.env.NETSUITE_SUITELET_URL,
      body: req.body,
      json: true,
      headers: {
        'User-Agent': 'Mozilla/5',
        Authorization: req.headers['authorization'],
      },
    },
    function(error, response, body) {
      res.send(body);
    }
  );
};

推荐阅读