根据我的要求,在Shopify商店,管理员应该能够从客户选择的交货日期中搜索订单。我能找到的唯一可行的方法是用订单标记订单并过滤标签中的订单。我的问题是,在订单创建时,是否有适当的方式在客户指定交货日期时标记订单? (我不允许使用任何付费应用/插件)
我可以通过管理订单API找到两种方法,但两者都有问题,
将webhook(用于订单确认事件)写入外部服务器,该服务器可以获取用户选择的交货日期并从那里调用管理订单API来标记订单 - 问题是它的开销维护服务器只是为了标记订单,即使我这样做,因为管理员API不允许CORS这是可行的吗? (并且由于店主甚至不想支付付费插件,维护服务器也不实用)
确认订单后,从客户端调用admin API。我尝试了这个,它的工作原理是预期的,但问题是我必须保留客户端JavaScript中存储的订单和事务的管理API凭据,根据我的知识,这根本不是一个好的做法。
允许使用cart-attributes在客户端创建有关订单的其他详细信息,并且它们也显示在管理员订单的页面上,但Shoify不允许使用添加到订单的购物车属性搜索订单。
如果有人能为此提出解决方案,我将不胜感激。
答案 0 :(得分:1)
您实际上可以使用没有服务器端要求的Chrome插件(或非常复杂的书签)来实现此目的。见https://developer.chrome.com/extensions/overview
你的api调用看起来像下面的POC脚本。 API calls不会按标记搜索订单,因此您可以跳过该标记并按照主题的.liquid代码设置的note_attribute进行过滤。然后,您的chrome插件会列出未结订单并按要求的交货日期显示。
获取现有订单并更新其注释属性:
jQuery.get('/admin/orders/5803440262.json').then(function(d) {
console.log(d.order);
var so = {
id: d.order.id,
note_attributes: [{
name: 'Test Value',
value: 'Test'
}]
};
jQuery.ajax({
url: '/admin/orders/' + so.id + '.json',
type: 'PUT',
data: JSON.stringify({
order: so
}),
contentType: 'application/json'
}).then(function(d) {
console.log(JSON.stringify(d, null, ' '));
});
});
并阅读订单:
jQuery.get('/admin/orders.json?limit=250').then(function(d) {
var count = 0;
d.orders.forEach(function(so) {
if (so.tags.indexOf('__amazon_pending') != -1) count++;
});
console.log(count + ' matching orders');
});