Добавьте счет, платежи, расходы и т. Д. В Quickbooks через ASP.NET

У меня есть приложение ASP.NET, которое я хотел бы подключить к своей учетной записи Quickbooks Online, чтобы программно вводить новые счета, производить платежи по этим счетам и даже вводить новые расходы. Кажется, что для этого существуют всевозможные API и процессы, которые претерпели множество изменений за эти годы, поэтому я не понимаю, с чего начать. Я не собираюсь создавать приложение, которое я бы выпустил в какой-то магазин приложений или что-то в этом роде, это просто для личного использования (автоматизация и т. Д.). Я ищу простой и понятный подход.


person Brian David Berman    schedule 24.03.2013    source источник


Ответы (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.

person Keith Palmer Jr.    schedule 25.03.2013