Api Shopify-客户端订单标记

Api Shopify-客户端订单标记,api,shopify,Api,Shopify,根据我得到的要求,在Shopify商店,管理员应该能够从客户选择的交货日期搜索订单。我能找到的唯一可行的方法是在订单上贴上交货标签,并从标签中过滤订单。我的问题是,在创建订单时,是否有一种正确的方式将订单标记为客户给定的交货日期?(我不允许使用任何付费应用程序/插件) 我可以通过AdminOrders API找到两种方法,但都有问题 将webhook(用于订单确认事件)写入外部服务器,该服务器可以获取用户选择的交付日期,并从那里调用管理订单API来标记订单-问题是,仅维护用于标记订单的服务器是一

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

我可以通过AdminOrders API找到两种方法,但都有问题

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

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

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


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

    实际上,您可以使用Chrome插件(或真正复杂的bookmarklet)来实现这一点,而无需服务器端的要求。看

    您的api调用看起来类似于以下POC脚本。不会按标签搜索订单,因此您可以跳过该标签,并通过主题的.liquid代码设置的note_属性进行过滤。你的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');
    });
    

    我没有回答你的确切问题,但如果你想创建一个有管理页面的Shopify应用程序,你必须有自己的服务器或主机,因为你需要服务器端语言。此外,出于安全考虑,您永远不应该从客户端调用AdminAPI。此外,您应该考虑和创建报表作为SueTieldAdmin中的嵌入式页面。请看这个:你所说的拥有管理页面的意思是控制管理页面?因为shopfy还提供了管理页面,即使在shopfy托管的情况下也是如此。如果您正在创建管理页面,那么这些页面应该托管在您的服务器上。另一种情况是,如果您修改了主题,即客户页面,则不应将其用于管理。您是否正在尝试创建有关该主题的新页面?有了ESDK,你可以向管理员添加新页面。我想要的是制作shopify管理员订单页面,该页面已经存在,可以根据订单的交付日期搜索订单。这可以通过订单标签来实现,但令人遗憾的是,在创建订单时,我无法找到一种用用户选择的交货日期来标记订单的正确方法。我明白了。嗯,我认为第二种选择不是一个好的选择,你应该选择webhook方式,或者你可以有一个cron,每隔几个小时或者类似的时间调用API,但是在这两种情况下,你的客户都需要一个服务器。谢谢你的回复。写一个插件是一个很好的新方法,我想不出来。但据我所知,它仍然存在一些问题。1) 它迫使我的客户在他更换设备时安装插件,并限制了他在任何时间、任何地点浏览的自由,因为如果是新设备,他必须安装插件。2) 我可能需要为所有浏览器编写插件,因为我不能确定它是否是唯一会被使用的chrome 3),如果它是插件,那么它将是显示订单列表的不同页面,但我需要在shopify admins orders页面中完成。如果你有这些要求,那么你最好使用托管应用程序。据我所知,Chrome手机浏览器不支持扩展。还有一个注意事项,因为我觉得你没有完全理解我的问题,所以我设法让订单具有一个注意事项属性(我认为注意事项属性和购物车属性指的是相同的)客户选择交货日期时的交货日期,该日期也可以在admins orders页面中看到。但问题是我找不到一种通过这些属性搜索订单的方法。这就是为什么我想到了标记订单,它允许在管理员页面过滤订单(我的问题是如何在客户端标记订单,而不是如何使用订单API通过标记搜索订单)。不,我知道你的问题是你需要按交货日期检索订单。你的问题是找到你可以用的东西。但是,标记将是静态的。你可以用“delivery:2017-08-12”这样的标签来标记,但你需要每天更改搜索,这样虽然可以,但这不是解决问题的好方法。扩展或应用程序允许您打开一个窗口,其中筛选器与今天的日期相对应。是的,搜索需要根据日期进行更改。是的,您的想法将提供更好的用户体验。我也会考虑的。