Pergunta

Eu estou tentando criar uma página ASP.NET que se conecta ao QuickBooks Edição Online, ler um par de valores, e exibir os resultados. Até agora eu ter baixado o QuickBooks SDK mas eu tenho sido incapaz de encontrar um exemplo simples passo-a-passo sobre como criar uma página asp.net para se conectar ao QuickBooks Online. A documentação QuickBooks SDK e do próprio SDK é muito confuso e esmagadora. Alguém sabe de um simples passo a passo tutorial sobre onde começar ... ou talvez uma dica sobre a primeira coisa a fazer.

Foi útil?

Solução 2

Aqui estão todos os passos que tomou para começar este trabalho. Um agradecimento especial a Keith Palmer por seus comentários, respostas, e sua site que realmente me ajudou a começar este trabalho.

  1. Registre seu aplicativo em http://appreg.quickbooks.com . Isto lhe dará o seu App ID e nome do aplicativo. Eu usei essas configurações:

    • Aplicação de destino: QBOE
    • Ambiente: Produção
    • Tipo de Aplicação: Desktop

      • (usando o Desktop tornou as coisas muito mais fácil na medida em que não necessitam de certificados)
    • A chave de verificação é enviado para seu endereço de e-mail que você precisa para entrar na página 2 do assistente.

  2. Configure sua Conexão QBOE . Quando você terminar de registrar seu aplicativo na etapa 1, então você vai ter um ID de aplicação. Utilize este ID na URL abaixo para configurar a conexão com a QBOE:
    • https://login.quickbooks.com/j / QBN / sdkapp / confirmar? serviceId = 2004 & appid = APP_ID
    • NOTA:. Certifique-se de substituir APP_ID na URL acima com o ID do aplicativo que foi criado quando você registrou seu aplicativo
    • O assistente irá levá-lo através dos seguintes passos:
      1. A especificação de um nome para sua conexão.
      2. A concessão de direitos de acesso - Eu dei direitos toda a contabilidade desde que esta foi mais fácil
      3. .
      4. Especifique Acesso de Segurança - Virei Acesso de Segurança Off. Isto é importante uma vez que torna a apresentação do XML para o QBOE muito mais fácil desde que você não precisa obter uma permissão de sessão para cada usuário.
      5. Em seguida, será dada uma chave de conexão.
  3. A esta altura você já tem os 3 peças importantes de informação , a fim de obter acesso à sua conta QuickBooks Edição Online (QBOE).
    • Nome do aplicativo
    • ID Aplicação
    • chave de conexão
  4. Depois do XML para QBOE com as 3 peças de informação de acesso e a solicitação real em seu banco de dados QBOE. Aqui está amostra c # código que irá enviar para o gateway QBOE. Isso irá retornar todos os clientes em seu banco de dados QuickBooks. Certifique-se de atualizar o xml abaixo com o seu Nome de Aplicativo, ID, e Connection Key.

    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. algumas coisas para nota:

    • Como apontado por Keith Palmer as necessidades versão qbxml ser 6.0 (mesmo que o IDN unificada sobre-tela mostra Referência 7,0)
    • que eu precisava para incluir o atributo = onError "ContinueOnError".
    • Definir a propriedade WebRequestObject.ContentLength é necessária.
    • Tipo de conteúdo precisa ser "application / x-qbxml"
    • E finalmente recebi muitos "O servidor remoto retornou um erro: (400) Bad Request". excepções que não foram úteis, mas no final eu era capaz de rastreá-las a algo de errado com o XML. Portanto, se você receber esse olhar exceção a seu XML como a origem do problema.

Outras dicas

A resposta de Yishai é parcialmente correta, mas não inteiramente.

Você pode ter o seu registo de aplicação ASP .NET e pedidos de emissão sem ter que enviar o utilizador para o registo de QuickBooks Online página se você fizer Certifique-se de definir as preferências de segurança corretamente quando você conectar-se a sua aplicação para QuickBooks Edição online.

Durante o processo de processo de registro application / conexão, ele irá perguntar se você quer ativar ou desativar a segurança de login com um prompt como abaixo. É necessário dizer que você quer desligar segurança de login, se você quer ser capaz de acessar dados QuickBooks Edição Online sem forçar o usuário a fazer logon em cada tempo. O prompt é algo como:

"Você quer ativar a segurança de login?"

Você deve selecionar: "Não. Qualquer um que pode entrar em [Nome do aplicativo] pode usar a conexão".

Fora disso, Yishai está correta sobre o processo. Para reiterar, em poucas palavras:

  • Inscreva-se para uma conta QBOE
  • Registre seu aplicativo integrado com o serviço AppReg da Intuit
  • Visite um link específico para amarrar sua aplicação AppReg à sua conta QBOE (certifique-se de desativar a segurança de login quando ele pede para você!)
  • Faça solicitações HTTPS POST para servidores da Intuit para assinar em usando o bilhete conexão Intuit irá fornecer-lhe
  • Faça HTTPS POST solicitações para enviar solicitações qbXML para servidores da Intuit, que você pode usar para adicionar, modificar, apagar e registros de consulta dentro QuickBooks Edição Online.

Há alguma documentação adicional e alguns exemplos de solicitações no meu QuickBooks desenvolvimento e integração wiki , especificamente o QuickBooks Edição online página integração .

Eu construí uma solução que faz o que você está pedindo em PHP que adiciona, modifica e consultas de dados dentro QuickBooks Edição Online sem exigir que o usuário faça login toda vez, e ele funciona como um campeão. Ele empurra e puxa pedir dados entre um carrinho de compras PHP (VirtueMart) e QuickBooks Edição Online. O código PHP está disponível aqui: QuickBooks PHP Framework

Como uma nota lateral, a menos que você está muito familiarizado com a geração de certificados SSL e enviá-los via HTTPS POSTs, você vai salvar um monte de problemas, utilizando o modelo de desktop de comunicação, e não o modelo hospedado. Apenas certifique-se de manter o seu bilhete de conexão criptografadas.

Além disso, a sugestão de Yishai para: "Uma delas é através de programação atingiu a sua página de login e enviar as credenciais como se você fosse um usuário eu tenho certeza que não é 'suportado', mas que seria provável de trabalho." vai especificamente contra a segurança / diretrizes para desenvolvedores Intuit e o conjunto SDK diante. Se eles pegarem você fazer isso, eles vão proibir o seu aplicativo se conecte a QuickBooks.

O esboço do que você tem que fazer são descritos no Capítulo 7 da documentação QBSDK (pelo menos na versão 7.0 do SDK que eu tenho). Você tem que abrir uma conta de teste e obter permissão para se conectar aos seus servidores.

Depois de ter sua configuração da conta, o procedimento de autenticação básica consiste de redirecionar o usuário para o site do QuickBooks Online para entrar, e uma vez que o usuário tenha feito isso, QuickBooks chama de volta a sua aplicação com um posto HTTPS com um bilhete, que é basicamente um identificador de sessão que você pode usar para seus pedidos, para que o sistema sabe que você está autenticado. Quando você receber essa resposta, você analisá-lo e enviar o seu próprio pedido de login para o sistema com base no que você tem de volta.

Em seguida (se eu entendi a documentação corretamente) que você está fazendo basicamente POSTS HTTPS do arquivos XML com os pedidos de QuickBooks, e você terá respostas XML que você tem que analisar para obter os dados que deseja.

Espero que permite começar a.

O resto do SDK é a documentação (que você precisa saber como formar suas solicitações e analisar suas respostas) e tudo o mais está preocupado com a forma de comunicar com o produto desktop. A única coisa que você vai precisar do resto da documentação é como fazer o tratamento de erros, o que só é realmente importante se você está postando dados para QuickBooks. Se você está apenas lendo, não importa (seja o seu pedido funciona ou não, você não precisa se preocupar se você precisa de repetição ou se isso iria resultar em dados duplicados).

EDIT: Dado o seu caso de uso específico vejo duas opções. (Você não é louco, só não o QuickBooks típicos cenário Online).

Uma é através de programação atingiu a sua página de login e enviar as credenciais como se você fosse um usuário. Estou certo de que não é "suportado", mas ele iria trabalhar provável.

O outro é para armazenar em cache os resultados (que você provavelmente deve fazer de qualquer maneira) e tem uma tela de administração, onde alguém faz log em QuickBooks on-line e atualizar os resultados a cada manhã ou à noite ou o que faz sentido.

Na maioria das pequenas empresas, eles estão indo para opt para a primeira opção, mas o segundo vai para o trabalho de forma mais consistente, robusta e realmente ser apoiada por Intuit, se você tem um problema.

Isso parece muito perto do que você precisa: www.QuickbooksConnector.com

Não foi capaz de baixá-lo ainda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top