NetSuite Suitelet не принимает Shopify Webhook - PullRequest
1 голос
/ 23 октября 2019

Что происходит

Мой Webhook из shopify не передает подробности моему Suite Suite 2.0 Suitelet в NetSuite.

Что я хочу, чтобы произошло

Я хочу, чтобы shopify отправил объект JSON в свой пакет netsuite Suitelet, чтобы я мог обработать заказ в NetSuite.

Подробности

Iя пытаюсь установить соединение между shopify и Netsuite с помощью веб-крючков Shopify.

Я настроил веб-крючок следующим образом enter image description here

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");

Я изменил URL-адрес Webhooks вместо этого, чтобы перейти на RequestBin и достаточно уверен, что webhook работает.

ЧТО Я ИСПРАВИЛ

  1. Я удалил дополнительные параметры строки запроса "звонящий" и "ключ" из URL. Не решает проблему.
  2. Я подтвердил, что Webhook работает при изменении URL на RequestBin.

1 Ответ

0 голосов
/ 23 октября 2019

Одно разочаровывающее ограничение для общедоступных сьютлетов заключается в том, что им требуется заголовок User-Agent, чтобы заявлять о себе как о браузере. (См., Например, SuiteAnswer # 38695 ).

У меня была та же проблема, что и у вас с веб-крючком BigCommerce, и в итоге я сделал прокси-подключение через простую облачную функцию Google, котораяизменен пользовательский агент.

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);
    }
  );
};
...