Question

Je suis en train de créer une page ASP.NET qui se connecte à QuickBooks édition en ligne, lire quelques valeurs, et afficher les résultats. Jusqu'à présent, je l'ai téléchargé le SDK QuickBooks mais je suis incapable de trouver un exemple simple étape par étape sur la façon de créer une page asp.net pour se connecter à QuickBooks en ligne. La documentation QuickBooks SDK et le SDK lui-même est très confuse et accablante. Quelqu'un sait d'une simple étape par étape tutoriel sur l'endroit où commencer ... ou peut-être un indice sur la première chose à faire.

Était-ce utile?

La solution 2

Voici toutes les étapes de mon travail pour obtenir ce travail. Un merci spécial à Keith Palmer pour ses commentaires, réponses et son site qui m'a vraiment aidé à obtenir ce travail.

  1. Enregistrez votre application http://appreg.quickbooks.com . Cela vous donnera votre ID App et nom de l'application. J'ai utilisé ces paramètres:

    • Application: QBOE
    • Environnement: production
    • Type d'application: Bureau

      • (l'aide du Bureau a rendu les choses beaucoup plus facile dans la mesure où pas les certificats nécessaires)
    • Une clé de vérification est envoyé à votre adresse e-mail que vous devez entrer à la page 2 de cet assistant.

  2. Configurer votre connexion QBOE . Une fois que vous avez terminé l'enregistrement de votre demande à l'étape 1, vous aurez alors un ID d'application. Utilisez cet ID dans l'URL ci-dessous pour configurer votre connexion QBOE:
    • https://login.quickbooks.com/j / NEQ / sdkapp / confirmer Serviceid = 2004 & appid = APP_ID
    • REMARQUE: Assurez-vous de remplacer APP_ID dans l'URL ci-dessus avec l'ID d'application qui a été créé lors de l'enregistrement de votre application
    • .
    • L'assistant vous guidera à travers les étapes suivantes:
      1. Spécifier un nom pour votre connexion.
      2. Octroi de droits d'accès - J'ai donné tous les droits comptables puisque c'est plus facile
      3. .
      4. Spécifier la sécurité Connexion - Je tournai Connexion Sécurité Off. Ceci est important car il permet de soumettre le XML au QBOE beaucoup plus facile puisque vous n'avez pas besoin d'obtenir un ticket de session pour chaque utilisateur.
      5. Vous recevrez alors une clé de connexion.
  3. À ce stade, vous avez maintenant la 3 éléments d'information importants afin d'accéder à votre compte en ligne QuickBooks édition (QBOE).
    • Nom de l'application
    • ID d'application
    • Clé de connexion
  4. Publier XML à QBOE avec les 3 éléments d'information d'accès et la demande réelle dans votre base de données QBOE. Voici exemple c # code qui affichera à la passerelle QBOE. Cela renverra tous les clients dans votre base de données QuickBooks. Assurez-vous de mettre à jour le fichier XML ci-dessous avec votre nom d'application, ID d'application et clé de connexion.

    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. Couple choses à noter:

    • Comme l'a souligné Keith Palmer la version qbxml doit être 6.0 (même si le IDN Unified à l'écran de référence montre 7.0)
    • Je avais besoin d'inclure l'onError = attribut "continueOnError".
    • Définir la propriété WebRequestObject.ContentLength est nécessaire.
    • type de contenu doit être "application / x-qbxml"
    • Et enfin j'ai reçu beaucoup « Le serveur distant a renvoyé une erreur: (400) Bad Request. » exceptions qui ne sont pas utiles du tout, mais à la fin, j'ai pu les retrouver quelque chose de mal avec le xml. Donc, si vous obtenez cette exception look à votre xml comme source du problème.

Autres conseils

La réponse de Yishai est partiellement correct, mais pas tout à fait.

peut ont vos demandes ASP journal et d'émission application .NET sans avoir à envoyer l'utilisateur sur le journal en ligne QuickBooks à la page si vous faites Assurez-vous de définir les préférences de sécurité correctement lorsque vous vous connectez votre application à QuickBooks Online Edition.

Au cours du processus processus d'enregistrement d'application / connexion, il vous demandera si vous voulez activer ou désactiver la sécurité de connexion avec une invite comme ci-dessous. Vous devez lui dire que vous voulez désactiver sécurité de connexion si vous voulez être en mesure d'accéder aux données en ligne QuickBooks édition sans forcer l'utilisateur à se connecter à chaque fois. L'invite est quelque chose comme:

« Est-ce que vous voulez activer la sécurité de connexion? »

Vous devez sélectionner: « Non Tous ceux qui peuvent se connecter à [Nom de l'application] peut utiliser la connexion ».

En dehors de cela, Yishai est correct au sujet du processus. Pour ré-itérer, en un mot:

  • Inscrivez-vous pour un compte QBOE
  • Enregistrez votre application intégrée avec le service appreg de Intuit
  • Consultez un lien spécifique pour lier votre application appreg à votre compte QBOE (assurez-vous de désactiver la sécurité de connexion quand il vous demande!)
  • Les requêtes POST HTTPS aux serveurs de Intuit à signer sur l'utilisation du ticket de connexion Intuit vous fournira
  • Les requêtes POST HTTPS pour envoyer des demandes de qbXML aux serveurs de Intuit, que vous pouvez utiliser pour ajouter, modifier, supprimer, et enregistrements de la requête au sein de QuickBooks Online Edition.

Il y a une documentation supplémentaire et quelques exemples de demandes sur mon développement QuickBooks et wiki d'intégration , en particulier la QuickBooks intégration en ligne édition page .

Je l'ai construit une solution qui fait ce que vous demandez en PHP qui ajoute, modifie, et les données de requêtes dans l'édition en ligne QuickBooks sans que l'utilisateur de se connecter à chaque fois, et il fonctionne comme un champion. Il pousse et tire des données de commande entre un centre commercial PHP panier (VirtueMart) et QuickBooks Online Edition. Le code PHP est disponible ici: QuickBooks PHP Framework

Comme une note de côté, sauf si vous êtes très familier avec la génération de certificats SSL et de les envoyer via POSTs HTTPS, vous vous éviterez beaucoup de problèmes en utilisant le modèle DESKTOP de communication, et non le modèle OFFERT. Assurez-vous de garder votre ticket de connexion sécurisée cryptée.

En outre, la suggestion de Yishai à: « On est de frapper leur programatically page de connexion et de soumettre les informations d'identification comme si vous étiez un utilisateur, je suis sûr que ce ne est pas. « Soutenu », mais cela fonctionnerait probablement. » GOES spécifiquement contre les directives de sécurité / développeur Intuit et le SDK présenté. S'ils vous attrapent le faire, ils vont interdire l'application de se connecter à QuickBooks.

Les grandes lignes de ce que vous avez à faire sont décrites dans le chapitre 7 de la documentation QBSDK (au moins dans la version 7.0 du SDK que j'ai). Vous devez ouvrir un compte de test et obtenir la permission de se connecter à leurs serveurs.

Une fois que vous avez la configuration de votre compte, la procédure d'authentification de base consiste à rediriger votre utilisateur sur le site en ligne QuickBooks pour vous connecter, et une fois que l'utilisateur a fait, QuickBooks rappelle votre application avec un poste HTTPS avec un billet, qui est essentiellement une poignée de session que vous pouvez utiliser pour vos demandes, de sorte que le système sait que vous êtes authentifié. Lorsque vous obtenez cette réponse, vous analysez et envoyez votre demande de connexion au système basé sur ce que vous avez le dos.

Alors (si je comprends correctement la documentation) que vous faites essentiellement Https POTEAUX des fichiers xml avec les demandes QuickBooks, et vous obtenez des réponses XML que vous devez analyser pour obtenir les données que vous voulez.

J'espère que vous permet de démarrer.

Le reste du SDK est la documentation (que vous aurez besoin de savoir comment former vos demandes et vos réponses parser) et tout le reste concerne la façon de communiquer avec le produit de bureau. La seule chose que vous allez avoir besoin du reste de la documentation est de savoir comment faire la gestion des erreurs, ce qui est vraiment important que si vous envoyez des messages de données à QuickBooks. Si vous lisez juste, il n'a pas d'importance (soit votre demande fonctionne ou ne pas, vous n'avez pas à vous soucier si vous devez réessayer ou si cela se traduirait par des données en double).

EDIT: Compte tenu de votre cas d'utilisation spécifique, je vois deux options. (Vous n'êtes pas fou, mais pas le scénario typique en ligne QuickBooks).

La première consiste à frapper leur programatically page de connexion et de soumettre les informations d'identification comme si vous étiez un utilisateur. Je suis sûr que ce ne est pas « soutenu », mais cela fonctionnerait probablement.

L'autre est de mettre en cache les résultats (que vous devriez probablement faire de toute façon) et ont un écran d'administration où quelqu'un ne se connecte dans QuickBooks en ligne et mettre à jour les résultats chaque matin ou le soir, ou tout ce qui fait sens.

Dans la plupart des petites entreprises, ils vont opter pour la première option, mais le second va travailler de manière plus cohérente, robuste et effectivement être pris en charge par Intuit si vous avez un problème.

Cela semble assez proche de ce que vous avez besoin: www.QuickbooksConnector.com

n'a pas été en mesure de télécharger encore.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top