【问题标题】:shopify order fulfillment issue using shopify_api gem使用 shopify_api gem 的 shopify 订单履行问题
【发布时间】:2012-08-23 11:40:36
【问题描述】:

我在通过 shopify_api gem 履行订单中的订单项时遇到问题。当我履行单个订单项时,它会履行订单中的所有订单项。我已经调查过了,有人说设置标题,请清除。

我正在做的是

order = ShopifyAPI::Order.find(order_id)

假设此订单有多个订单项

f = ShopifyAPI::Fulfillment.new(:params => { :order_id => order.id, :line_items => [ {"id" => order.line_items.first.id} ] })

f.prefix_options = { :order_id => order.id }

f.save

这段代码履行了订单中的所有订单项,并将履行状态设置为已履行,这是不希望的。


以下是标头、实现对象和 tcpdump 的详细信息:

Shopify 标题

(rdb:1) p ShopifyAPI::Fulfillment.headers
{"User-Agent"=>"ShopifyAPI/3.0.1 ActiveResource/3.1.1 Ruby/1.9.2", "X-Shopify-Access-Token"=>"be9d4adaa35e7f82b720a3567250424c"}

履行对象

#<ShopifyAPI::Fulfillment:0xca2086c @attributes={"params"=>#<ShopifyAPI::Fulfillment::Params:0xca20b00 @attributes={"order_id"=>138494648, "notify_customer"=>true, "tracking_number"=>"12345678", "line_items"=>[#<ShopifyAPI::LineItem:0xca28904 @attributes={"id"=>225568082}, @prefix_options={}, @persisted=false>]}, @prefix_options={}, @persisted=false>}, @prefix_options={:order_id=>138494648}, @persisted=false>

tcpdump 输出

10:07:14.498936 IP localhost.localdomain.34941 > localhost.localdomain.domain: 50737+ AAAA? olson-pfeffer-and-ratke1494.myshopify.com。 (59) E..W..@.@.D........}.5.C.V.1........olson-pfeffer-and-ratke1494 myshopify.com.. ... 10:07:14.655477 IP localhost.localdomain.domain > localhost.localdomain.34941:50737 1/1/0 CNAME shop.shopify.com。 (160) E.....@.@.1........X. :.... localhost.localdomain.domain: 39864+ A? olson-pfeffer-and-ratke1494.myshopify.com。 (59) E..W..@.@.D............5.C.V......olson-pfeffer-and-ratke1494 myshopify.com.. ... 10:07:14.948404 IP localhost.localdomain.domain > localhost.localdomain.36871: 39864 5/4/4 CNAME shop.shopify.com., A 204.93.213.40, A 204.93.213.41, A 204.93.213.42, A 204.93。 213.44 (301) E..I..@.@.;........5...5.H......olson-pfeffer-and-ratke1494 myshopify。 com........X...shops.shopify.2.G........X...].(.G........X ...].).G........X...].*.G........X...].,.M.......... .ns3.p19.dynect.net..M............ns4......M............ns1......M....... ....ns2..........0....NF..................0....NG...... ...0.... 10:07:16.326985 IP6 geek-laptop.46193 > geek-laptop.46193:UDP,长度 16 ......@..................................q.q..j....... ......6k.. 10:07:16.338153 IP6 geek-laptop.46193 > geek-laptop.46193:UDP,长度 20 ......@.................................q.q../#........).....!.6k.. 10:07:16.340185 IP6 geek-laptop.46193 > geek-laptop.46193: UDP, length 16 ......@.................................q.q...G... ........!.6k.. 10:07:16.350974 IP6 geek-laptop.46193 > geek-laptop.46193:UDP,长度 924 `......@..................................q.q..tk...... ..).................................................. ..................................................... 。“.......“.......F ..................................................... ..................................................... ..................................................... ................................................C ..................................................... ................................................................2 ..................................................... .....................................w ..................................................... ................................................) ..................................................... ................................................8

【问题讨论】:

    标签: ruby-on-rails api shopify


    【解决方案1】:

    实际的问题是,当您创建履行时,您将 :params =&gt; hash_of_fulfillment_data 传递给 new 方法。只需传递数据,您不需要 params 键。这只是标准的 ActiveResource,没什么特别的。这应该有效:

    f = ShopifyAPI::Fulfillment.new(:order_id => order.id, :line_items =>[ {"id" => order.line_items.first.id} ] )
    f.prefix_options = { :order_id => order.id }
    f.save
    

    【讨论】:

    • 感谢您的回答,是的,我正在使用 shopify_api gem 您能否准确告诉我需要设置哪些标头?例如。 ShopifyAPI::Fulfillment.headers.merge!({:what => "here"})
    • 此外,我不明白他们什么时候提供了 api,我们正在使用它与 gem 一起使用的方式,那么为什么 gem 不负责正确设置标题?
    • 这就是我回答的第二部分的内容,应该正确设置它们。这就是为什么我要求您捕获正在发送和发布的实际请求,以便我们查看正在发送的内容。
    • 我在回答您的问题部分提供了以下详细信息,因为添加评论不允许我发布足够的数据。请检查并让我知道是否可以做任何事情。
    • Santosh:感谢您提供的信息 :) 将来,使用像 gist.github.com 这样的服务是您最好的选择,因为它可以让您插入任意数量的文本,并提供语法选项突出显示等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多