Domanda

Sto cercando di creare una pagina ASP.NET che si connette a QuickBooks in linea Edition, leggere un paio di valori, e visualizzare i risultati. Finora ho scaricato l'SDK QuickBooks, ma sono stato in grado di trovare un semplice esempio passo-passo su come creare una pagina asp.net per la connessione a QuickBooks Online. La documentazione QuickBooks SDK e l'SDK in sé è molto confusa e travolgente. Qualcuno sa di un semplice passo a passo su dove iniziare ... o forse un suggerimento sulla prima cosa da fare.

È stato utile?

Soluzione 2

Ecco tutti i passi che ho fatto per ottenere questo lavoro. Un ringraziamento speciale a Keith Palmer per i suoi commenti, risposte, e il suo sito web che in realtà mi ha aiutato a ottenere questo lavoro.

  1. registrare l'applicazione http://appreg.quickbooks.com . Questo vi darà il proprio ID e il nome dell'applicazione App. Ho usato queste impostazioni:

    • Applicazione di destinazione: QBOE
    • Ambiente: Produzione
    • Tipo di applicazione: Desktop

      • (per mezzo del tavolo ha reso le cose molto più facile, per quanto non necessitano di certificati)
    • Una chiave di verifica viene inviato al tuo indirizzo email, che è necessario inserire a pagina 2 di questa procedura guidata.

  2. Imposta il tuo QBOE connessione . Una volta terminata la registrazione l'applicazione nella fase 1, si avrà quindi un ID applicazione. Utilizzare questo ID nell'URL di seguito per impostare la connessione QBOE:
    • https://login.quickbooks.com/j / QBN / sdkapp / confermare service_id = 2004 & appid = APP_ID
    • Nota: assicurarsi di sostituire APP_ID l'url sopra con l'ID applicazione che è stato creato al momento della registrazione l'applicazione
    • .
    • La procedura guidata vi porterà attraverso le seguenti fasi:
      1. Specifica di un nome per la connessione.
      2. concedere diritti di accesso - ho dato tutti i diritti contabili dal momento che questo è stato più semplice
      3. .
      4. Specifica Entrata di sicurezza - ho girato Accesso Security Off. Questo è importante dal momento che rende la presentazione della XML al QBOE molto più facile dal momento che non è necessario per ottenere un ticket di sessione per ciascun utente.
      5. Verrà quindi data una chiave di connessione.
  3. A questo punto si hanno ora i 3 importanti pezzi di informazioni al fine di ottenere l'accesso al tuo account QuickBooks in linea Edition (QBOE).
    • Nome applicazione
    • ID applicazione
    • chiave di connessione
  4. Inserisci il codice XML per QBOE con i 3 pezzi di informazioni di accesso e la richiesta effettiva nel database QBOE. Qui è campione di codice C # che inviare al gateway QBOE. Ciò restituirà tutti i clienti nel database QuickBooks. Assicurati di aggiornare il codice XML sottostante con il tuo Nome applicazione, ID applicazione, e chiave di connessione.

    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. Un paio di cose da notare:

    • Come sottolineato da Keith Palmer versione qbxml deve essere 6.0 (anche se l'IDN Unified su schermo di riferimento mostra 7.0)
    • avevo bisogno di includere l'onError = attributo "continueOnError".
    • L'impostazione della proprietà WebRequestObject.ContentLength è richiesto.
    • Tipo di contenuto deve essere "application / x-qbxml"
    • E infine ho ricevuto molti "Il server remoto ha restituito un errore:. (400) Bad Request" eccezioni che non erano disponibili a tutti, ma alla fine sono stato in grado di risalire a loro qualcosa di sbagliato con l'XML. Quindi, se si ottiene questa eccezione look al tuo XML come la fonte del problema.

Altri suggerimenti

risposta

di Yishai è parzialmente corretto, ma non del tutto.

possono avere il vostro ASP registro applicazioni .NET in ed emettere richieste di senza dover inviare l'utente verso il registro QuickBooks online in pagina se si fanno assicurarsi di impostare correttamente le preferenze di sicurezza quando si collega la vostra applicazione per QuickBooks in linea Edition.

Durante il processo di registrazione di applicazione / connessione, ti verrà chiesto se si desidera attivare o disattivare la sicurezza di accesso con un prompt, come di seguito. È necessario dire che si desidera disattivare di sicurezza di accesso, se si vuole essere in grado di accedere ai dati QuickBooks in linea Edition senza costringendo l'utente a log in ogni volta. Il prompt è qualcosa di simile:

"Vuoi attivare la sicurezza di accesso?"

È necessario selezionare: "No. Chiunque può accedere a [Nome applicazione] è possibile utilizzare la connessione".

Al di fuori di questo, Yishai è corretto circa il processo. Per ribadire, in poche parole:

  • Registrati per avere un account QBOE
  • registrare l'applicazione integrata con il servizio AppReg di Intuit
  • Visita un link specifico per legare la vostra applicazione AppReg al tuo account QBOE (assicurati di disattivare la protezione di accesso quando si chiede!)
  • effettuare richieste HTTPS POST ai server di Intuit a firmare con il biglietto di connessione Intuit vi fornirà
  • Fare le richieste HTTPS POST per inviare le richieste qbXML ai server di Intuit, che è possibile utilizzare per aggiungere, modificare, cancellare, e le registrazioni di query all'interno di QuickBooks in linea Edition.

C'è qualche ulteriore documentazione e alcuni esempi di domande sulla mia sviluppo QuickBooks e wiki integrazione , in particolare il href="http://wiki.consolibyte.com/wiki/doku.php/quickbooks_online_edition" rel="nofollow noreferrer"> QuickBooks in linea Edition pagina integrazione

Ho creato una soluzione che fa quello che si sta chiedendo in PHP che aggiunge, modifica e dati query all'interno di QuickBooks in linea Edition senza richiedere all'utente di accedere ogni volta, e funziona come un campione. Si spinge e tira dati degli ordini tra un PHP carrello della spesa (VirtueMart) e QuickBooks in linea Edition. Il codice PHP è disponibile qui: QuickBooks PHP quadro

Come nota a margine, se non sei molto familiare con la generazione di certificati SSL e di inviarli tramite HTTPS POST, potrai risparmiare un sacco di guai, utilizzando il modello desktop di comunicazione, e non il modello hosted. Basta fare in modo di mantenere il vostro biglietto di connessione crittografata in modo sicuro.

Inoltre, il suggerimento di Yishai a: "Uno è quello di colpire programatically la loro pagina di login e inviare le credenziali come se tu fossi un utente Sono sicuro che la sua non. 'Supportata', ma sarebbe probabilmente funzionerà." va specificamente contro le linee guida di sicurezza / developer Intuit e l'SDK di cui. Se si prendono farlo, faranno divieto dell'applicazione di connettersi a QuickBooks.

Lo schema di quello che hai da fare sono illustrate nel capitolo 7 della documentazione QBSDK (almeno nella versione 7.0 del SDK che ho). È necessario aprire un account di prova e ottenere il permesso di connettersi ai server.

Una volta che avete la vostra configurazione dell'account, la procedura di autenticazione di base è costituito da reindirizzare l'utente al sito QuickBooks Online per il login, e una volta che l'utente ha fatto, QuickBooks richiama l'applicazione con un posto HTTPS con un biglietto, che è fondamentalmente un handle di sessione che è possibile utilizzare per le vostre richieste, in modo che il sistema sa che si sta autenticato. Quando si arriva quella risposta, si analizza e inviare la propria richiesta di accesso al sistema in base a ciò che hai di nuovo.

Poi (se ho capito bene la documentazione) si sono fondamentalmente facendo Https POSTI dei file XML con le richieste QuickBooks, e si ottiene risposte XML che si deve analizzare per ottenere i dati che si desidera.

Spero che è una buona partenza.

Il resto del SDK è la documentazione (che è necessario sapere come formare le vostre richieste e analizzare le risposte) e tutto il resto si occupa di come comunicare con il prodotto desktop. L'unica cosa che si sta per necessità dal resto della documentazione è come fare la gestione degli errori, che è davvero importante solo se stai scrivendo i dati di QuickBooks. Se sono solo leggendo, non importa (sia la richiesta funziona o non, non c'è bisogno di preoccuparsi di se avete bisogno di riprovare oppure se ciò si tradurrebbe in dati duplicati).

EDIT: Dato il tuo caso d'uso speciali Io vedo due opzioni. (Tu non sei pazzo, non solo il tipico scenario di QuickBooks online).

Uno è quello di colpire programatically la loro pagina di login e inviare le credenziali come se tu fossi un utente. Sono sicuro che la sua non è "supportato", ma sarebbe probabilmente funzionerà.

L'altro è quello di memorizzare nella cache i risultati (che probabilmente si dovrebbe fare in ogni caso) e hanno uno schermo di amministrazione in cui qualcuno non accedere al QuickBooks on-line e aggiornare i risultati ogni mattina o sera, o qualsiasi altra cosa abbia un senso.

Nella maggior parte delle piccole imprese, che stanno andando a optare per la prima opzione, ma il secondo è andare a lavorare in modo più coerente, robusto e in realtà essere supportati da Intuit se si dispone di un problema.

Questo sembra abbastanza vicino a quello che vi serve: www.QuickbooksConnector.com

non è stato in grado di scaricare ancora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top