我是Rails的新手(但對於一般網頁開發並不陌生)。我正在使用mws-connect gem(https://github.com/devmode/mws)連接到亞馬遜商城網絡服務。我想取消訂單,並根據亞馬遜MWS API文檔,以下XML代碼是需要發送的內容(據我可以告訴):使用MWS-Connect gem的Rails中的亞馬遜MWS訂單取消請求
<?xml version="1.0"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier> M_IDENTIFIER</MerchantIdentifier>
</Header>
<MessageType>
OrderAcknowledgment
</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderAcknowledgement>
<AmazonOrderID>050-1234567-1234567</AmazonOrderID>
<StatusCode>Failure</StatusCode>
<CancelReason>Reason for cancellation</CancelReason>
</OrderAcknowledgment>
</Message>
</AmazonEnvelope>
寶石文檔不是清楚如何做到這一點,因爲這些例子都是關於如何添加或更新產品列表,我測試過並且工作得很好。我已經嘗試過我可以想到的所有方法,只是手動構建「提要」請求以提交該請求,並使用該類的其餘部分來處理提交內容,因爲我知道這很有效。我有一個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
此代碼不拋出任何錯誤,但是當我嘗試做cancel_feed.to_xml
(我所看到的是對提交的下一步飼料),我得到一個錯誤說
ArgumentError: Namespace indent has not been defined
是否有任何防護欄優點在那裏,可能有一個想法如何使這種寶石的工作,無論是to_xml方法,或者更好的是如何讓取消本身通過?我覺得我不太遠。我來自一個PHP背景,所以我的思考過程可能會有點偏離。到目前爲止,我一直很喜歡Rails,但是我在這一款上拉了我的頭髮,任何幫助都會被讚賞!