문제

QuickBooks Online Edition에 연결하고 몇 가지 값을 읽고 결과를 표시하는 ASP.NET 페이지를 작성하려고합니다. 지금까지 나는 QuickBooks SDK를 다운로드했지만 ASP.NET 페이지를 작성하여 QuickBooks Online에 연결하는 방법에 대한 간단한 단계별 예제를 찾을 수 없었습니다. QuickBooks SDK 문서와 SDK 자체는 매우 혼란스럽고 압도적입니다. 누구나 누구나 시작할 위치에 대한 간단한 단계별 튜토리얼을 알고 있거나, 아마도 가장 먼저해야 할 일에 대한 힌트를 알고 있습니다.

도움이 되었습니까?

해결책 2

다음은이 작업을 수행하기 위해 취한 모든 단계입니다. 특별히 감사함 키이스 팔머 그의 의견, 답변 및 그의 웹 사이트 정말이 작업을 수행하는 데 도움이되었습니다.

  1. 신청서를 등록하십시오 ~에 http://appreg.quickbooks.com. 앱 ID 및 응용 프로그램 이름을 제공합니다. 이 설정을 사용했습니다.

    • 대상 응용 프로그램 : QBOE
    • 환경 : 생산
    • 응용 프로그램 유형 : 데스크탑

      • (데스크탑을 사용하여 인증서가 필요하지 않은 한 훨씬 쉬워졌습니다)
    • 확인 키는이 마법사의 2 페이지에 입력 해야하는 이메일 주소로 전송됩니다.

  2. QBOE 연결을 설정하십시오. 1 단계에서 응용 프로그램 등록을 마치면 응용 프로그램 ID가 나타납니다. 아래 URL 에서이 ID를 사용하여 QBOE 연결을 설정하십시오.
    • https://login.quickbooks.com/j/qbn/sdkapp/confirm?serviceid=2004&appid=APP_ID
    • 참고 : 위 URL의 APP_ID를 응용 프로그램을 등록 할 때 생성 된 응용 프로그램 ID로 교체하십시오.
    • 마법사는 다음 단계를 살펴볼 것입니다.
      1. 연결 이름을 지정합니다.
      2. 액세스 권한 부여 - 이것이 가장 쉽기 때문에 모든 회계 권한을 부여했습니다.
      3. 로그인 보안 지정 - 로그인 보안을 끄 었습니다. 각 사용자의 세션 티켓을 얻을 필요가 없기 때문에 XBOE에 XML을 훨씬 쉽게 제출할 수 있기 때문에 이것은 중요합니다.
      4. 그런 다음 연결 키가 제공됩니다.
  3. 이 시점에서 당신은 이제 3 가지 중요한 정보 QuickBooks Online Edition (QBOE) 계정에 액세스하려면
    • 응용 프로그램 이름
    • 응용 프로그램 ID
    • 연결 키
  4. XBOE에 XML을 게시하십시오 3 가지 액세스 정보와 실제 요청이 QBOE 데이터베이스에 있습니다. 다음은 QBOE 게이트웨이에 게시 할 샘플 C# 코드입니다. QuickBooks 데이터베이스의 모든 고객을 반환합니다. 애플리케이션 이름, 응용 프로그램 ID 및 연결 키로 아래 XML을 업데이트하십시오.

    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. 몇 가지 주목할 사항 :

    • Keith Palmer가 지적한 바와 같이 QBXML 버전은 6.0이어야합니다 (IDN 통합 온 스크린 참조에 7.0이 표시 되더라도)
    • onerror = "enlointOnerror"속성을 포함시켜야했습니다.
    • WebRequestObject.contentLength 속성 설정이 필요합니다.
    • 콘텐츠 유형은 "Application/X-QBXML"이어야합니다.
    • 그리고 마지막으로 많은 "원격 서버가 오류를 반환했습니다 : (400) 잘못된 요청을 받았습니다." 전혀 도움이되지 않았지만 결국 나는 XML에 문제를 추적 할 수있었습니다. 따라서이 예외가 발생하면 XML을 문제의 원인으로 살펴보십시오.

다른 팁

Yishai의 대답입니다 부분적으로 정확하지만 완전히는 아닙니다.

~할 수 있다 ASP .NET 애플리케이션 로그인 및 요청 요청을 받으십시오. 없이 QuickBooks Online 로그인 페이지로 사용자를 보내야합니다. 보안 환경 설정을 올바르게 설정 해야하는 경우 응용 프로그램을 QuickBooks Online Edition에 연결하면

애플리케이션 등록 프로세스/연결 프로세스 중에 아래와 같이 프롬프트를 사용하여 로그인 보안을 켜거나 끄 릴지 묻습니다. 당신은 당신이 원한다고 말해야합니다 끄다 QuickBooks Online Edition Data에 액세스 할 수 있으시면 보안 로그인 없이 사용자가 매번 로그인하도록 강요합니다. 프롬프트는 다음과 같습니다.

"로그인 보안을 켜고 싶습니까?"

"아니요 : [응용 프로그램 이름]에 로그인 할 수있는 사람은 누구나 연결을 사용할 수 있습니다."

그 외에도 Yishai는 그 과정에 대해 정확합니다. 간단히 말하면 :

  • QBOE 계정에 등록하십시오
  • Intuit의 AppREG 서비스에 통합 응용 프로그램을 등록하십시오
  • 특정 링크를 방문하여 AppREG 애플리케이션을 QBOE 계정에 연결하십시오 (로그인 보안을 요청할 때 보안을 끄십시오!)
  • https 포스트 요청을 Intuit의 서버에 작성하여 연결 티켓 Intuit을 사용하여 로그인하여 제공합니다.
  • QuickBooks Online Edition에서 레코드를 추가, 수정, 삭제 및 쿼리하는 데 사용할 수있는 QBXML 요청을 Intuit의 서버로 보내기위한 HTTPS 게시 요청을 작성하십시오.

몇 가지 추가 문서와 내 예제 요청이 있습니다. Quickbooks 개발 및 통합 위키, 특히 Quickbooks Online Edition 통합 페이지.

PHP에서 요구하는 솔루션을 구축하여 사용자가 매번 로그인하지 않고 QuickBooks Online Edition 내에서 데이터를 추가, 수정 및 쿼리하는 솔루션을 구축했으며 챔피언처럼 작동합니다. PHP 쇼핑 카트 (Virtuemart)와 Quickbooks Online Edition간에 주문 데이터를 푸시하고 가져옵니다. PHP 코드는 다음과 같습니다.QuickBooks PHP 프레임 워크

참고로, SSL 인증서를 생성하고 HTTPS 게시물을 통해 전송하는 데 익숙하지 않으면 호스팅 된 모델이 아닌 데스크톱의 통신 모델을 사용하여 많은 어려움을 겪게됩니다. 연결 티켓을 안전하게 암호화하십시오.

또한 Yishai의 제안은 "로그인 페이지를 프로그래밍으로 누르고 사용자 인 것처럼 자격 증명을 제출하는 것입니다."지원되지 않았지만 작동 할 것 "이라고 확신합니다. 구체적으로 간다 에 맞서 보안/개발자 지침 직관과 SDK가 명시되어 있습니다. 그들이 당신을 잡으면 응용 프로그램이 Quickbooks에 연결하는 것을 금지합니다.

해야 할 일의 개요는 QBSDK 문서의 7 장 (적어도 내가 가진 SDK의 7.0 버전)에 요약되어 있습니다. 테스트 계정을 열고 서버에 연결할 수있는 권한을 얻어야합니다.

계정 설정이 있으면 기본 인증 절차는 사용자를 QuickBooks Online 사이트로 리디렉션하여 로그인하면 QuickBooks는 기본적으로 티켓으로 HTTPS 게시물로 응용 프로그램을 다시 호출합니다. 시스템이 귀하가 인증된다는 것을 알 수 있도록 요청에 사용할 수있는 세션 핸들. 그 응답을 얻을 때, 당신은 그것을 구문 분석하고 당신이 돌아온 내용에 따라 시스템에 자신의 로그인 요청을 보냅니다.

그런 다음 (문서를 올바르게 이해 한 경우) 기본적으로 QuickBooks 요청과 함께 XML 파일의 HTTPS 게시물을 수행하고 원하는 데이터를 얻기 위해 구문 분석 해야하는 XML 응답을 얻습니다.

나는 그것이 당신을 시작하게되기를 바랍니다.

SDK의 나머지 부분은 문서 (요청을 형성하고 응답을 구문 분석하는 방법을 알아야 함)이며 다른 모든 것은 데스크탑 제품과 통신하는 방법과 관련이 있습니다. 나머지 문서에서 필요한 유일한 것은 오류 처리 방법입니다. 이는 QuickBooks에 데이터를 게시하는 경우에만 중요합니다. 방금 읽고있는 경우, 그것은 중요하지 않습니다 (요청이 작동하거나 그렇지 않으면 재 시도가 필요한지 또는 데이터가 중복되는지 걱정할 필요가 없습니다).

편집 : 특정 사용 사례가 주어지면 두 가지 옵션이 있습니다. (당신은 미친 것이 아니라 전형적인 Quickbooks 온라인 시나리오가 아닙니다).

하나는 로그인 페이지를 프로그래밍 방식으로 누르고 마치 사용자 인 것처럼 자격 증명을 제출하는 것입니다. 나는 그것이 "지원 된"것이 아니라고 확신하지만 효과가있을 것입니다.

다른 하나는 결과를 캐시하고 (어쨌든 할 것임) 누군가가 온라인으로 QuickBooks에 로그인하고 매일 아침이나 저녁 결과를 업데이트하는 관리 화면이있는 것입니다.

대부분의 소기업에서는 첫 번째 옵션을 선택할 것이지만, 두 번째 옵션은 더 일관되게, 견고하게 작동하며 실제로 문제가있는 경우 Intuit의 지원을받을 것입니다.

이것은 필요한 것과 매우 가깝게 보입니다. www.quickbooksconnector.com

아직 다운로드 할 수 없었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top