提问者:小点点

Shopify-客户端订单标记


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

我可以用管理订单应用编程接口找到两种方法,但都有问题,

>

订单确认后,从客户端调用管理API。我尝试了这个方法,它的工作原理是预期的,但问题是我必须将订单和事务的管理API凭据存储在客户端JavaScript中,据我所知,这根本不是一个好的做法。

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

如果有人能提出解决方案,我将不胜感激。


共1个答案

匿名用户

实际上,您可以使用Chrome插件(或非常复杂的bookmarklet)来实现这一点,而无需服务器端需求。看见https://developer.chrome.com/extensions/overview

您的api调用看起来类似于以下POC脚本。API调用不会搜索order by标记,因此您可以跳过该标记,并通过主题的。液体代码。你的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');
});