У меня есть приложение ASP.NET, которое я хотел бы подключить к своей учетной записи Quickbooks Online, чтобы программно вводить новые счета, производить платежи по этим счетам и даже вводить новые расходы. Кажется, что для этого существуют всевозможные API и процессы, которые претерпели множество изменений за эти годы, поэтому я не понимаю, с чего начать. Я не собираюсь создавать приложение, которое я бы выпустил в какой-то магазин приложений или что-то в этом роде, это просто для личного использования (автоматизация и т. Д.). Я ищу простой и понятный подход.
Добавьте счет, платежи, расходы и т. Д. В Quickbooks через ASP.NET
Ответы (1)
Похоже, для этого существуют всевозможные API и процессы, которые за эти годы претерпели множество изменений.
Это преуменьшение. Intuit - король запутанных и плохо реализованных API. :-)
Я не собираюсь создавать приложение, которое я бы выпустил в какой-нибудь App Store или что-нибудь еще.
Поскольку это только для вашего внутреннего использования, единственным вариантом на данный момент является шлюз QuickBooks SDK / qbXML для QuickBooks Online.
(IPP / Intuit Anywhere - новейшие API-интерфейсы, но, как указано в FAQs, прямо сейчас 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 а>.
Если вам нужно больше абстракции, вы также можете использовать библиотеки QBFC, включенные в SDK. Имейте в виду, что компоненты .NET "QBOEConnector" были проблематичными для людей в прошлом (по какой-то странной причине им требовались некоторые странные правки реестра и прочее ...).
Вы можете использовать QuickBooks OSR (установите флажок "OE" , снимите флажок «США», используйте раскрывающееся меню «Выбрать сообщение» в верхней части экрана и выберите вкладку «XML Ops»), чтобы просмотреть доступные запросы для отправки в QuickBooks Online. Если вы не видите его в списке, он не поддерживается QuickBooks Online API.