javascript - NetSuite Suitelet 未选择 Shopify Webhook
问题描述
怎么了
我来自 shopify 的 Webhook 没有将详细信息传递给 NetSuite 中的 SuiteScript 2.0 Suitelet。
我想发生什么
我希望 shopify 将 JSON 对象发送到我的 netsuite Suitelet,以便我可以在 NetSuite 中处理订单。
细节
我正在尝试使用 Shopify 的 webhook 在 shopify 和 Netsuite 之间建立连接。
我的 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 可以正常工作。
我有什么尝试
- 我已经从 URL 中删除了额外的查询字符串参数“caller”和“key”。不能解决问题。
- 我已确认 Webhook 在将 URL 更改为 RequestBin 时有效。
解决方案
公共套件的一个令人沮丧的限制是它们要求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);
}
);
};
推荐阅读
- sql - 如何使用 T-SQL 从文本字符串中解析列
- nuxt.js - 无法读取未定义的属性(读取“$recaptcha”)
- git - 如何将 git 子模块集成到 git 工作流
- firebase - 使用 Express.js 的 firebase 函数的单元测试
- ios - 如何通过移动自动化测试来测试浏览器弹出?
- python - 在 Telegram 中使用 getUserProfilePhotos 获取图片配置文件用户
- r - 如何保存文件的最后一列有一个值
- sql - SQL切换多边形字符串中的经纬度位置
- c++ - 重设 wm 和 BadWindow 错误
- javascript - 在 vue.js 中工作我如何从我的谷歌电子表格中提取和发布数据?