2

ruby と httparty を使用して、どこでも Quickbooks online / intuit にレコードを作成する例を投稿できますか?

どこでも intuit を使用して ruby​​ on rails アプリへの統合に取り組んでおり、新しいレコードを作成しようとすると POST リクエストで問題が発生します。要求の本文に XML データを必要としない POST コマンドを使用して、データ (顧客) を正常に取得できましたが、渡す必要がある必須フィールドを持つ新しいレコードを作成しようとすると問題が発生しますリクエストの本文の XML。

レコードを作成しようとしているエンティティで、同じ種類のエラーが発生します: 無効または必須フィールドがありません。本文 (必須フィールドのデータが追加される場所) の XML が無視されている (フォーマットが正しくない?) か、添付されていないように思えます。

ruby に詳しい誰かが、httparty を使用したレコード作成の例を投稿してくれることを期待していました。httparty を使用して XML を正しく渡す方法がわかれば、自分で問題を解決できます。

私は customer.com の例 ( https://code.intuit.com/integration/viewvc/viewvc.cgi/IntuitAnywhere-Ruby/customer.com/?root=intuitanywhere&system=exsy1003 )を使用してきました。 Rails 3.1 で動作させるには無関係な変更が必要でした。サンプルで提供されているデータのプルと処理を使用しています。これは、httparty を使用して構築された非常に標準的な API ラッパーのように見えます。

company_controller customers メソッドにあるものと同様のプルを使用しています。XML を送信しようとした 2 つの異なる方法を次に示します。

#########################################
#Example 1 - XML

e = @company.intuit_token.post("https://qbo.intuit.com/qbo1/resource/account/v2/#{@company.realm}",
    { :body => 
        "<Account xmlns:ns2=\"http://www.intuit.com/sb/cdm/qbo\" xmlns=\"http://www.intuit.com/sb/cdm/v2\">
            <Name>Test Account 2</Name>
            <Desc>Test Account</Desc>
            <Subtype>Savings</Subtype>
            <AcctNum>5001</AcctNum>
            <OpeningBalanceDate>2010-05-14</OpeningBalanceDate>
        </Account>",
    :headers => {
        "Content-Type" => "application/xml"
    }}
)

#########################################
#Example 2 - hash

e = @company.intuit_token.post("https://qbo.intuit.com/qbo1/resource/account/v2/#{@company.realm}",
    { :body => { 
        :Account => {
            :Name => "Loan Account 2",
            :Desc  => "Loac Account 2",
            :Subtype     => "Savings",
            :AcctNum    => "5001",
            :OpeningBalanceDate    => "2011-04-22"
        }
    },
    :headers => {
        "Content-Type" => "application/xml"
    }}
)
4

1 に答える 1

1

intuitが提供するcustomer.comの例では、httparty gemを使用してPOST呼び出しを行っていると誤って想定していたため、間違った構文を使用していました。彼らは実際にOAuthgemのPOST呼び出しを使用しています。その構文は、http://oauth.rubyforge.org/rdoc/classes/OAuth/AccessToken.htmlにあります。

また、Intuit AnywhereサービスがXML本体を受け入れるようにするには、ヘッダーを変更する必要がありました。どこでもintuitを使用してオンラインでクイックブックにレコードを作成するために最終的に機能したコードは次のとおりです。

    e = @company.intuit_token.post("https://qbo.intuit.com/qbo1/resource/account/v2/#{@company.realm}", "<Account xmlns:ns2=\"http://www.intuit.com/sb/cdm/qbo\" xmlns=\"http://www.intuit.com/sb/cdm/v2\"><Name>Test Account </Name><Desc>Test Account</Desc><Subtype>Savings</Subtype><AcctNum>5002</AcctNum><OpeningBalanceDate>2010-05-14</OpeningBalanceDate></Account>", {"Content-Type" => "application/xml", "standalone" => "yes", "encoding" => "UTF-8"})
于 2012-02-08T20:34:35.380 に答える