Frage

Ich versuche, eine ASP.NET-Seite zu erstellen, die Quickbooks Online Edition verbindet, lesen Sie ein paar Werte, und die Ergebnisse anzuzeigen. Bisher habe ich das SDK heruntergeladen Quickbooks, aber ich habe es nicht gelungen, ein einfaches Schritt-für-Schritt zu finden Beispiel dafür, wie eine asp.net Seite zu erstellen, um Quickbooks Online zu verbinden. Die Quickbooks SDK-Dokumentation und die SDK selbst ist sehr verwirrend und überwältigend. Wer weiß, von einem einfachen Schritt für Schritt Anleitung, wo beginnen ... oder vielleicht ein Hinweis auf dem ersten, was zu tun ist.

War es hilfreich?

Lösung 2

Hier sind alle Schritte, die ich nahm diese Arbeit zu bekommen. Besonderer Dank geht an Keith Palmer für seine Kommentare, Antworten und seine Website , die ich diese Arbeit wirklich geholfen bekommen.

  1. Die Registrierung bei http://appreg.quickbooks.com . Dadurch erhalten Sie Ihre App-ID und Name der Anwendung. Ich habe diese Einstellungen:

    • Zielanwendung: QBOE
    • Umwelt: Produktion
    • Anwendungstyp: Desktop

      • (unter Verwendung von Desktop-Dinge viel einfacher gemacht, soweit keine Zertifikate benötigen)
    • Ein Verifikationsschlüssel wird an Ihre E-Mail-Adresse gesendet, die Sie auf Seite 2 dieses Assistenten eingeben müssen.

  2. Richten Sie Ihre QBOE Verbindung . Sobald Sie Ihre Anwendung in Schritt 1 Abschluss der Registrierung erhalten Sie dann eine Anwendungs-ID haben. Verwenden Sie diese ID in der URL unter Ihre QBOE Verbindung einzurichten:
    • https://login.quickbooks.com/j / qbn / sdkapp / bestätigen? serviceid = 2004 & appid = APP_ID
    • Hinweis: Stellen Sie sicher, APP_ID in der obigen URL mit der Anwendungs-ID zu ersetzen, die erstellt wurde, wenn Sie Ihre Anwendung registrieren
    • .
    • Der Assistent führt Sie durch die folgenden Schritte:
      1. Die Angabe eines Namens für die Verbindung.
      2. Zugriffsrechte erteilen - Ich habe alle Accounting Rechte, da dies am einfachsten war
      3. .
      4. Login-Sicherheit angeben - Ich drehte mich um Login-Sicherheits Aus. Dies ist wichtig, da es macht die xml zum QBOE Absenden viel einfacher, da Sie kein Sitzungsticket für jeden Benutzer erhalten müssen.
      5. Sie erhalten dann einen Verbindungsschlüssel angegeben werden.
  3. An dieser Stelle haben Sie nun die 3 wichtigen Informationen , um Zugriff auf Ihre Quickbooks Online Edition (QBOE) Konto zu gewinnen.
    • Anwendungsname
    • Anwendungs-ID
    • Verbindungsschlüssel
  4. Schreiben Sie die XML QBOE mit den drei Stücken von Zugangsinformationen und der tatsächlichen Anforderung in Ihre QBOE Datenbank. Hier ist ein Beispiel c # -Code, der den QBOE Gateway veröffentlichen wird. Dadurch werden alle Kunden in Ihrer Datenbank Quickbooks zurück. Achten Sie auf die xml unten mit Ihrem Anwendungsnamen, Anwendungs-ID und Verbindungsschlüssel zu aktualisieren.

    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
            {
            }
        }
    
  5. Paar Dinge zu beachten:

    • Wie von Keith Palmer muss die qbxml weist darauf hin, Version 6.0 sein (obwohl die IDN Unified-On-Screen Reference zeigt 7.0)
    • Ich brauchte die onError = "ContinueOnError" Attribut enthalten.
    • die WebRequestObject.ContentLength Eigenschaft Einstellung erforderlich ist.
    • Inhaltstyp muss "application / x-qbxml"
    • sein
    • Und schließlich erhielt ich viele „Der Remoteserver hat einen Fehler zurückgegeben:. (400) Bad Request“ Ausnahmen, die überhaupt nicht hilfreich waren, aber am Ende konnte ich sie etwas falsch mit dem xml verfolgen. Also, wenn Sie diese Ausnahme zu Ihrer XML als die Quelle des Problems aussehen bekommen.

Andere Tipps

Yishai Antwort ist teilweise richtig, aber nicht ganz.

Sie können Ihre ASP .NET-Anwendung einloggen und die Ausgabe von Anfragen haben ohne mit dem Benutzer über auf die Quickbooks Online Login-Seite senden , wenn Sie machen sicher richtig, die Sicherheitseinstellungen festlegen , wenn Sie anschließen Ihre Anwendung Quickbooks Online Edition.

Während der Anwendung Registrierung / Verbindungsprozess, wird es Sie fragen, ob Sie aktivieren möchten oder aus Login-Sicherheit mit einer Eingabeaufforderung wie unten. Sie müssen es sagen, Sie wollen deaktivieren Login-Sicherheit, wenn Sie Quickbooks Online Edition Daten in der Lage sein wollen, den Zugriff auf ohne zwingen den Benutzer in jeder Zeit zu protokollieren. Die Aufforderung ist so etwas wie:

„Haben Sie auf Login-Sicherheit verwandeln?“

Sie müssen wählen: „Nein. Wer log in kann [Anwendungsname] kann die Verbindung verwenden“.

Außerhalb davon ist Yishai korrekt über den Prozess. , Erneut auf, auf den Punkt:

  • Registrieren Sie sich für ein QBOE Konto
  • Registrieren Sie Ihre integrierte Anwendung mit Intuit AppReg Service
  • Besuchen Sie einen bestimmten Link Ihre AppReg Anwendung auf Ihrem QBOE Konto zu binden (stellen Sie sicher, dass Sie Login-Sicherheit auszuschalten, wenn er fragt Sie!)
  • Erstellen HTTPS POST-Anfragen an Intuit-Servern über die Verwendung der Verbindung Ticket zu unterzeichnen Intuit werden Sie bieten
  • HTTPS POST-Anfragen Stellen qbXML Anfragen an Intuit-Server zu senden, die Sie hinzufügen können, ändern, löschen und Abfrage Datensätze innerhalb Quickbooks Online Edition.

Es gibt einige zusätzliche Dokumentation und einige Beispiel-Anfragen auf meinem Quickbooks Entwicklung und Integration Wiki , insbesondere die Quickbooks Online Edition Integration Seite.

Ich habe eine Lösung gebaut, das tut, was Sie in PHP sind gefragt, die ohne dass der Benutzer in jedem Mal anmelden, ändern und Abfragen von Daten innerhalb Quickbooks Online Edition fügen hinzu, und es funktioniert wie ein Weltmeister. Es schiebt und zieht Daten, um zwischen einem PHP-Warenkorb (VirtueMart) und Quickbooks Online Edition. Der PHP-Code finden Sie hier: Quickbooks PHP Framework

Als Seite beachten, es sei denn, Sie sehr vertraut sind mit SSL-Zertifikate zu erzeugen und sie über HTTPS POSTs senden, werden Sie sich eine ganze Menge Ärger sparen, indem das DESKTOP Modell der Kommunikation verwendet wird, und nicht der gehosteten Modell. So stellen Sie sicher, dass Ihre Verbindung Ticket halten sicher verschlüsselt.

Auch Yishai Vorschlag zu: „Man ist auf ihre Login-Seite programmatisch getroffen und die Berechtigungsnachweise vorlegen, als ob Sie einen Benutzer waren ich bin sicher, dass es nicht.‚Unterstützt‘, aber es funktionieren würde wahrscheinlich.“ geht speziell gegen die Sicherheit / Richtlinien für Entwickler Intuit und das SDK dargelegt. Wenn sie Sie tun, dass zu fangen, werden sie Ihre Anwendung verbieten Quickbooks zu verbinden.

Der Umriss von dem, was Sie tun müssen, sind in Kapitel 7 der QBSDK Dokumentation (zumindest in der 7.0-Version des SDK, die ich habe) skizziert. Sie haben einen Test-Account zu eröffnen und die Erlaubnis zu erhalten, auf ihren Servern.

verbinden

Wenn Sie Ihr Konto eingerichtet haben, bestehen die grundlegenden Authentifizierungsverfahren Ihre Benutzer auf die Quickbooks Online-Website der Umleitung eingeloggt sein, und sobald den Benutzer hat das getan, Quickbooks ruft Ihre Anwendung mit einer HTTPS-Post mit einem Ticket zurück, das so ist im Grunde ein Sitzungs-Handle, die Sie für Ihre Anfragen verwenden können, dass das System weiß, dass Sie authentifiziert werden. Wenn Sie diese Antwort erhalten, können Sie es analysieren und Ihre eigenen Login-Anfrage an das System senden, basierend auf was hast du zurück.

Dann ist (wenn ich die Dokumentation richtig verstanden) Sie tun im Grunde Https BEITRäGE von XML-Dateien mit den Quickbooks-Anfragen und Sie XML-Antworten erhalten, die Sie die gewünschten Daten zu analysieren, haben zu erhalten.

Ich hoffe, das wird Sie begonnen haben.

Der Rest des SDK ist die Dokumentation (die Sie müssen wissen, wie Sie Ihre Anfragen bilden und Ihre Antworten analysieren) und alles andere betrifft den Umgang mit dem Desktop-Produkt zu kommunizieren. Das einzige, was man vom Rest der Dokumentation gehen zu müssen, ist, wie die Fehlerbehandlung zu tun, was wirklich ist nur wichtig, wenn Sie Daten in Quickbooks Mitteilung verfassen. Wenn Sie gerade lesen, spielt es keine Rolle (entweder Ihre Anfrage klappt oder nicht, dann brauchen Sie nicht zu befürchten, wenn Sie müssen den Vorgang wiederholen oder wenn die in doppelten Daten führen würde).

EDIT: Bei Ihrem spezifischen Anwendungsfall ich zwei Optionen. (Sie sind nicht verrückt, nur nicht das typische Quickbooks Online-Szenario).

Eine davon ist auf ihre Login-Seite programmatisch getroffen und die Berechtigungsnachweise vorlegen, als ob Sie einen Benutzer waren. Ich bin sicher, es ist nicht „unterstützt“, aber es würde wahrscheinlich funktionieren.

Die andere ist, um die Ergebnisse cachen (die Sie wahrscheinlich sowieso tun sollten) und haben einen Admin-Bildschirm, wo jemand in Quickbooks Online anmeldet und aktualisiert die Ergebnisse jeden Morgen oder Abend oder was auch immer macht Sinn.

In den meisten kleinen Unternehmen, sie gehen für die erste Option entscheiden, aber die zweite wird noch konsequenter arbeiten, robust und tatsächlich von Intuit unterstützt werden, wenn Sie ein Problem haben.

Das sieht ziemlich nah an, was Sie brauchen: www.QuickbooksConnector.com

War es nicht in der Lage noch zum Download bereit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top