Quickbooks Online アカウントに接続してプログラムで新しい請求書を入力し、それらの請求書に対して支払いを行い、さらには新しい費用を入力する ASP.NET アプリケーションがあります。これにはあらゆる種類の API とプロセスがあり、何年にもわたって多くの変更が加えられているようで、どこから始めればよいか混乱しています。ある種の App Store などにリリースするアプリを作成するつもりはありません。これは個人的な使用 (自動化など) のためだけです。シンプルで簡単なアプローチを探しています。
1 に答える
このためのあらゆる種類の API とプロセスがあり、何年にもわたって多くの変更が加えられているようです。
それは控えめな表現です。Intuit は、混乱を招き、実装が不十分な API の王様です。:-)
ある種のApp Storeなどにリリースするアプリを作成するつもりはありません
これは内部使用のみであるため、この時点での唯一のオプションは、QuickBooks Online 用の QuickBooks SDK/qbXML ゲートウェイです。
(IPP/Intuit Anywhere は最新の API ですが、FAQに記載されているように、現在 Intuit Anywhere は、他者に再販する SaaS アプリ専用です。)
qbXML と QuickBooks Online を使い始める最も簡単な方法は、HTTP POST データをゲートウェイに直接送信することです。サンプル コードは次のようになります。
string requestUrl = null;
requestUrl = "https://apps.quickbooks.com/j/AppGateway";
HttpWebRequest WebRequestObject = null;
StreamReader sr = null;
HttpWebResponse WebResponseObject = null;
StreamWriter swr = null;
try
{
WebRequestObject = (HttpWebRequest)WebRequest.Create(requestUrl);
WebRequestObject.Method = "POST";
WebRequestObject.ContentType = "application/x-qbxml";
WebRequestObject.AllowAutoRedirect = false;
string post = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<?qbxml version=""6.0""?>
<QBXML>
<SignonMsgsRq>
<SignonDesktopRq>
<ClientDateTime>%%CLIENT_DATE_TIME%%</ClientDateTime>
<ApplicationLogin>APPLICATION_LOGIN</ApplicationLogin>
<ConnectionTicket>CONNECTION_TICKET</ConnectionTicket>
<Language>English</Language>
<AppID>APP_ID</AppID>
<AppVer>1</AppVer>
</SignonDesktopRq>
</SignonMsgsRq>
<QBXMLMsgsRq onError=""continueOnError"">
<CustomerQueryRq requestID=""2"" />
</QBXMLMsgsRq>
</QBXML>";
post = post.Replace("%%CLIENT_DATE_TIME%%", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(post);
post = xmlDoc.InnerXml;
WebRequestObject.ContentLength = post.Length;
swr = new StreamWriter(WebRequestObject.GetRequestStream());
swr.Write(post);
swr.Close();
WebResponseObject = (HttpWebResponse)WebRequestObject.GetResponse();
sr = new StreamReader(WebResponseObject.GetResponseStream());
string Results = sr.ReadToEnd();
}
finally
{
try
{
sr.Close();
}
catch
{
}
try
{
WebResponseObject.Close();
WebRequestObject.Abort();
}
catch
{
}
このサンプル コードを使用するには、アプリケーションのログインと接続チケットが必要になることに注意してください。これらは、 QuickBooks 統合 wikiの DESKTOP REGISTRATION ウォークスルーに従って取得できます。
それ以上の抽象化が必要な場合は、SDK に含まれている QBFC ライブラリを使用することもできます。「QBOEConnector」.NET コンポーネントは、過去に人々にとって問題であったことに注意してください (何らかの奇妙な理由で、いくつかの奇妙なレジストリ編集などが必要になります...)。
QuickBooks OSRを使用して([OE] チェックボックスをオンにし、[US] チェックボックスをオフにし、画面上部の [メッセージの選択] ドロップダウンを使用して、[XML Ops] タブを選択します)、利用可能なリクエストを表示できます。 QuickBooks Online に送信します。リストに表示されない場合は、QuickBooks Online API でサポートされていません。