Pregunta

Estoy tratando de crear una página ASP.NET que se conecta a QuickBooks Online Edition, leer un par de valores, y mostrar los resultados. Hasta ahora he descargado el SDK de QuickBooks, pero no he sido capaz de encontrar un ejemplo sencillo paso a paso sobre cómo crear una página de asp.net para conectarse a QuickBooks Online. La documentación QuickBooks SDK y el propio SDK es muy confuso y abrumador. Alguien sabe de un simple paso a paso tutorial sobre dónde empezar ... o tal vez una pista sobre lo primero que hay que hacer.

¿Fue útil?

Solución 2

Aquí están todos los pasos que tomó para conseguir este trabajo. Un agradecimiento especial a Keith Palmer por sus comentarios, respuestas, y su página web lo que realmente me ayudó a conseguir este trabajo.

  1. Registrar la aplicación http://appreg.quickbooks.com . Esto le dará su ID de aplicación y el nombre de la aplicación. He utilizado los siguientes valores:

    • Aplicación de destino: QBOE
    • Medio Ambiente: Producción
    • Tipo de aplicación: Escritorio

      • (utilizando Escritorio hizo las cosas mucho más fácil por lo que no necesitan certificados)
    • Una clave de verificación es enviado a su dirección de correo electronico que necesita para entrar en la página 2 de este asistente.

  2. configurar la conexión a QBOE . Una vez que termine el registro de su aplicación en el paso 1, a continuación, tendrá un ID de aplicación. Utilizar este ID en la URL siguiente para configurar la conexión a QBOE:
    • https://login.quickbooks.com/j / QBN / sdkapp / confirmar? ServiceId = 2,004 y appid = APP_ID
    • NOTA: Asegúrese de reemplazar APP_ID en la url anterior con el ID de la aplicación que se creó cuando se registró su aplicación
    • .
    • El asistente le guiará a través de los siguientes pasos:
      1. Al especificar un nombre para su conexión.
      2. conceder derechos de acceso - di Todos los derechos de Contabilidad ya que era más fácil
      3. .
      4. Especificar Login Seguridad - Me di la sesión de Seguridad Off. Esto es importante ya que hace que la presentación de la xml para la QBOE mucho más fácil ya que no es necesario para obtener un ticket de sesión para cada usuario.
      5. A continuación, se dará una clave de conexión.
  3. En este punto, ahora tiene la 3 piezas importantes de información con el fin de tener acceso a su cuenta de QuickBooks Online Edición (QBOE).
    • Nombre de la aplicación
    • ID Application
    • clave de conexión
  4. Post el XML a QBOE con las 3 piezas de información de acceso y la solicitud real en su base de datos QBOE. Aquí está la muestra C # código que fijará a la puerta de entrada QBOE. Esto devolverá todos los clientes en su base de datos de QuickBooks. Asegúrese de actualizar el código XML a continuación con su nombre de la aplicación, ID de aplicación, y la clave de conexión.

    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 par de cosas a tener en cuenta:

    • Como se ha señalado por Keith Palmer la versión QBXML tiene que ser 6.0 (a pesar de que el IDN Unificado en pantalla muestra de referencia 7.0)
    • I necesitaba para incluir el = atributo onError "continueOnError".
    • Establecer la propiedad WebRequestObject.ContentLength se requiere.
    • Tipo de contenido tiene que ser "application / x-QBXML"
    • Y finalmente he recibido muchos "El servidor remoto devolvió un error: (400) Solicitud incorrecta". excepciones que no fueron útiles en absoluto, pero al final he podido rastrearlos a algo mal con el XML. Así que si usted consigue esta excepción mirada a su XML como la fuente del problema.

Otros consejos

respuesta

de Yishai es parcialmente correcta, pero no del todo.

puede tener su registro de aplicación .NET ASP y solicitudes de emisión sin tener que enviar al usuario sobre el registro de QuickBooks Online en la página si haces asegúrese de ajustar correctamente las preferencias de seguridad cuando se conecta a su aplicación a QuickBooks Online Edition.

Durante el proceso de proceso de registro de aplicación / conectar, se le preguntará si desea activar o desactivar la seguridad de inicio de sesión con un mensaje de la siguiente manera. Debe informar que desea Apagar de seguridad de inicio de sesión si quieres ser capaz de acceder a los datos de QuickBooks Online Edition sin obligando al usuario a registrarse cada vez. El símbolo es algo como:

"¿Desea activar la seguridad de acceso?"

Debe seleccionar: "No. Cualquier persona que puede iniciar sesión en [Nombre de la aplicación] puede utilizar la conexión".

Fuera de eso, Yishai es correcta sobre el proceso. Para reiterar, en pocas palabras:

  • Puedes obtener una cuenta QBOE
  • Registrar la aplicación integrada con servicio AppReg de Intuit
  • Visita un enlace específico para atar su aplicación AppReg a su cuenta QBOE (asegúrese de desactivar la seguridad de inicio de sesión cuando se le pide!)
  • Hacer peticiones POST HTTPS a los servidores de Intuit para firmar en el uso de la entrada de conexión Intuit le proporcionará
  • Haga solicitudes HTTPS POST para enviar solicitudes a los servidores QBXML de Intuit, que se puede utilizar para añadir, modificar, borrar, y los registros de consulta dentro de QuickBooks Online Edition.

Hay una cierta documentación adicional y algunos ejemplos de peticiones en mi el desarrollo y la integración de QuickBooks wiki , en concreto el href="http://wiki.consolibyte.com/wiki/doku.php/quickbooks_online_edition" rel="nofollow noreferrer"> página de integración

He construido una solución que hace lo que está pidiendo en PHP que agrega, modifica y datos de las consultas dentro de QuickBooks Online Edición sin que el usuario que entrar cada vez, y funciona como un campeón. Se empuja y tira datos de pedidos entre un carrito de la compra PHP (VirtueMart) y QuickBooks Online Edition. El código PHP está disponible aquí: QuickBooks PHP Marco

Como nota al margen, a menos que esté muy familiarizado con la generación de certificados SSL y enviarlos a través de HTTPS POST, se ahorrará un montón de problemas utilizando el modelo de escritorio de la comunicación, y no el modelo hospedado. Sólo asegúrese de mantener su boleto conexión encriptada segura.

Además, la sugerencia de Yishai a: "Uno es golpear programáticamente a su página de registro y enviar las credenciales como si fuera un usuario Estoy seguro de que no lo es. 'Soportado' pero probablemente funcionaría." va específicamente contra las directrices de seguridad / desarrollador Intuit y el SDK establecido. Si te pillan haciendo eso, van a prohibir su aplicación se conecte a QuickBooks.

El esquema de lo que tiene que hacer se describen en el capítulo 7 de la documentación QBSDK (al menos en la versión 7.0 del SDK que tengo). Usted tiene que abrir una cuenta de prueba y obtener el permiso para conectarse a sus servidores.

Una vez que ha configurado su cuenta, el procedimiento de autenticación básica consiste en redirigir al usuario al sitio de QuickBooks Online para iniciar sesión, y una vez que el usuario haya hecho eso, QuickBooks llama de nuevo su aplicación con un puesto de HTTPS con un boleto, el cual es básicamente un identificador de sesión que se puede utilizar para sus peticiones, por lo que el sistema sepa que está autenticado. Al llegar esa respuesta, que lo revisará y enviar su propia solicitud de acceso al sistema en base a lo que volviste.

A continuación (si he entendido correctamente la documentación) que son básicamente haciendo HTTPS postes de archivos XML con las solicitudes de QuickBooks, y se obtiene respuestas XML que hay que analizar para obtener los datos que desea.

Espero que le ayudará a comenzar.

El resto de la documentación del SDK es (que tendrá que saber cómo formar sus solicitudes y analizar sus respuestas) y todo lo demás tiene que ver con la manera de comunicarse con el producto de escritorio. Lo único que va a necesitar del resto de la documentación es cómo hacer la gestión de errores, que es realmente sólo es importante si estás escribiendo datos a QuickBooks. Si sólo están leyendo, no importa (ya sea su solicitud funciona o no, usted no tiene que preocuparse por si necesita volver a intentarlo o si eso daría lugar a la duplicación de datos).

EDIT: Dada su caso específico el uso Veo dos opciones. (Usted no está loco, simplemente no es el típico escenario de QuickBooks Online).

Uno de ellos es para golpear programáticamente a su página de registro y enviar las credenciales como si fuera un usuario. Estoy seguro de que no es "soportado" pero probablemente funcionaría.

El otro es para almacenar en caché los resultados (que probablemente debería hacer de todos modos) y tiene una pantalla de administración donde alguien no ingrese en QuickBooks en línea y actualizar los resultados de cada mañana o por la noche o lo que tiene sentido.

En la mayoría de las pequeñas empresas, que van a optar por la primera opción, pero el segundo se va a trabajar de manera más consistente, robusta y de hecho el apoyo de Intuit si usted tiene un problema.

Esto se parece bastante a lo que necesita: www.QuickbooksConnector.com

No se pudo descargar todavía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top