Shopify - 客户端订单标签

Shopify - Client side order Tagging

根据我得到的要求,在 Shopify 商店中,管理员应该能够搜索从客户选择的交货日期开始的订单。我能找到的唯一可行的方法是用交货标记订单并从标签中过滤订单。我的问题是,在创建订单时,是否有正确的方法来标记客户给定交货日期的订单? (我不允许使用任何付费 app/plug-in)

我可以通过管理员命令找出两种方法 API,但两者都有问题,

  1. 将 webhook(用于订单确认事件)写入外部服务器,以获取用户选择的交货日期并从那里调用管理订单 API 来标记订单 - 问题维护服务器仅用于标记订单是否是一种开销,即使我这样做是因为管理员 API 不允许 CORS 这可行吗? (而且由于店主甚至不想为付费插件付费,因此维护服务器也不实际)

  2. 订单确认后从客户端调用管理员API。我尝试了这个并且它按预期工作但问题是我必须保留管理员 API 存储在客户端 JavaScript 中的订单和交易的凭据,这根本不是一个好习惯,因为据我所知。

允许使用购物车属性在客户端创建有关订单的其他详细信息,它们也显示在管理订单页面上,但 Shoify 不允许使用添加到的购物车属性搜索订单订单。

如果有人可以为此提出解决方案,我将不胜感激。

您实际上可以使用 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');
});