Ruby on rails 使用MWS Connect gem在Rails中请求Amazon MWS订单取消

Ruby on rails 使用MWS Connect gem在Rails中请求Amazon MWS订单取消,ruby-on-rails,amazon-mws,Ruby On Rails,Amazon Mws,我是Rails新手(但一般来说对web开发并不陌生)。我正在使用mws connect gem()连接到Amazon Marketplace Web服务。我正在尝试取消订单,根据Amazon MWS API文档,需要发送以下xml代码(据我所知): 1.01 M_标识符 订单确认 1. 050-1234567-1234567 失败 取消的原因 gem文档不清楚如何做到这一点,因为这些示例都是关于如何添加或更新产品列表的,我已经测试过,效果很好。我已经尝试了我能想到的所有方法,只是手动构建“

我是Rails新手(但一般来说对web开发并不陌生)。我正在使用mws connect gem()连接到Amazon Marketplace Web服务。我正在尝试取消订单,根据Amazon MWS API文档,需要发送以下xml代码(据我所知):


1.01
M_标识符
订单确认
1.
050-1234567-1234567 
失败
取消的原因
gem文档不清楚如何做到这一点,因为这些示例都是关于如何添加或更新产品列表的,我已经测试过,效果很好。我已经尝试了我能想到的所有方法,只是手动构建“提要”请求来提交它,并使用类的其余部分来处理提交内容,因为我知道这是可行的。SalesOrder类中当前的代码示例如下:

def self.cancel_amazon_order(amazon_order_id, cancel_reason)
  mws = Mws.connect(
    merchant: 'merchant_id',
    access: 'access_key',
    secret: 'secret'
  )
  cancel_feed = Mws::Feed.new 'merchant_id', :order_acknowledgement do
    @messages << {
      MessageID: '1',
      OrderAcknowledgement: {
        AmazonOrderID: amazon_order_id,
        StatusCode: 'Failure',
        CancelReason: cancel_reason
      }
    }
  end
end
def self.取消亚马逊订单(亚马逊订单id,取消原因)
mws=mws.connect(
商户:“商户id”,
访问:“访问密钥”,
秘密:“秘密”
)
取消\u feed=Mws::feed.new'merchant\u id',:订单\u确认do

@消息如果有人感兴趣,我最终得到的解决方案是:

mws = Mws.connect merchant: AMAZON_CONFIG['merchant_id'], access: AMAZON_CONFIG['access'], secret: AMAZON_CONFIG['secret']

cancel_xml = Nokogiri::XML::Builder.new do | xml |
  xml.AmazonEnvelope('xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:noNamespaceSchemaLocation' => 'amznenvelope.xsd') {
    xml.Header {
      xml.DocumentVersion '1.01'
      xml.MerchantIdentifier AMAZON_CONFIG['merchant_id']
    }
    xml.MessageType 'OrderAcknowledgement'
    xml.Message {
      xml.MessageID '1'
      xml.OrderAcknowledgement {
        xml.AmazonOrderID order_id
        xml.StatusCode 'Failure'
        items.each do | item |
          xml.Item {
            xml.AmazonOrderItemCode item[:item_code]
            xml.CancelReason 'NoInventory'
          }
        end

      }
    }
  }
end.to_xml

mws.feeds.submit cancel_xml, {feed_type: :order_acknowledgement}
mws = Mws.connect merchant: AMAZON_CONFIG['merchant_id'], access: AMAZON_CONFIG['access'], secret: AMAZON_CONFIG['secret']

cancel_xml = Nokogiri::XML::Builder.new do | xml |
  xml.AmazonEnvelope('xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:noNamespaceSchemaLocation' => 'amznenvelope.xsd') {
    xml.Header {
      xml.DocumentVersion '1.01'
      xml.MerchantIdentifier AMAZON_CONFIG['merchant_id']
    }
    xml.MessageType 'OrderAcknowledgement'
    xml.Message {
      xml.MessageID '1'
      xml.OrderAcknowledgement {
        xml.AmazonOrderID order_id
        xml.StatusCode 'Failure'
        items.each do | item |
          xml.Item {
            xml.AmazonOrderItemCode item[:item_code]
            xml.CancelReason 'NoInventory'
          }
        end

      }
    }
  }
end.to_xml

mws.feeds.submit cancel_xml, {feed_type: :order_acknowledgement}