连接ASP.NET应用程序QuickBooks的在线版(Connecting an ASP.NET

2019-06-25 06:38发布

我试图创建连接到QuickBooks的在线版ASP.NET页面,阅读一对夫妇的价值观,并显示结果。 到目前为止,我已经下载了QuickBooks的SDK,但我一直无法找到关于如何创建一个asp.net页面连接到QuickBooks的在线简单的一步一步的例子。 QuickBooks的SDK文档和SDK本身是非常混乱的和压倒一切。 任何人都知道从哪里开始...也许在的第一件事的提示做一个简单的教程一步一步的。

Answer 1:

伊沙伊的答案是部分正确,但不完全。

可以有你的ASP .NET应用程序登录并发出请求, 而无须在用户发送到QuickBooks的在线登录页面,如果你确保当您连接您的应用程序到QuickBooks的在线版,以正确设置安全选项

在申请注册过程中/连接过程中,如果你想打开或关闭登录安全性有如下提示它会问你。 你必须告诉它你想,如果你希望能够在强迫用户每次登录访问QuickBooks的在线版数据关闭登录安全。 提示是这样的:

“你想打开登录安全?”

您必须选择:“号任何人谁可以登录到[应用程序名称]可以使用连接”。

以外的是,伊沙伊是关于正确处理。 再次重申,概括地说:

  • 注册一个帐户QBOE
  • 注册您与Intuit的AppReg服务集成应用
  • 访问特定链接,以配合您的AppReg应用到您的帐户QBOE(请务必关闭登录安全性时,它会询问你!)
  • 让HTTPS POST请求到Intuit的服务器上使用连接车票忒将为您提供签
  • 让HTTPS POST请求到QuickBooks的在线版内发送qbXML请求到Intuit的服务器,你可以用它来添加,修改,删除和查询记录。

有一些额外的文件和我的一些示例请求QuickBooks的开发和集成的wiki ,特别是QuickBooks的在线版集成页面。

我建立了一个解决方案,它你问在PHP这增加,QuickBooks的在线版中修改和查询数据,而无需用户登录每次的东西,它像一个冠军。 它推动和PHP购物车(VirtueMart)和QuickBooks的在线版之间拉订单数据。 PHP代码可以在这里: QuickBooks的PHP框架

作为一个侧面说明,除非你非常熟悉生成SSL证书和通过HTTPS发送他们的帖子,你会用通信的桌面模式,而不是托管模式保存自己一大堆的麻烦。 只是一定要保持安全加密的连接票。

此外,伊沙伊的建议,“一是以编程方式击中了他们的登录页面,仿佛你是一个用户提交的凭据我敢肯定,它不是‘支持’,但它可能会工作。” 特别是安全/开发人员指南Intuit和SDK的规定去。 如果他们抓住你这样做,他们将无法连接到QuickBooks的禁止应用程序。



Answer 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
    • 注:请务必将APP_ID与当你注册你的应用程序所创建的应用程序ID上面的网址。
    • 该向导将引导您完成以下步骤:
      1. 为连接指定一个名称。
      2. 授予访问权限 - 我给了所有的会计权利,因为这是最容易的。
      3. 指定登录安全 - 我打开登录安全关。 这一点很重要,因为它使提交XML到QBOE比较容易,因为你并不需要得到每个用户的会话票据。
      4. 然后,您将得到一个连接密钥。
  3. 在这一点上,你现在有信息3个重要棋子 ,以获得您的QuickBooks的在线版(QBOE)帐户的访问。
    • 应用名称
    • 应用程序ID
    • 连接密钥
  4. 发布的XML与3个的访问信息与实际要求到您的QBOE 数据库QBOE。 下面是示例C#代码,将张贴到QBOE网关。 这将返回所有客户在你的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. 几件事情要注意:

    • 正如基思·帕尔默指出qbxml版本需要为6.0(即使在IDN统一屏幕显示参考7.0)
    • 我需要包括的onError =“continueOnError”属性。
    • 设置WebRequestObject.ContentLength属性是必需的。
    • 内容类型必须是“应用程序/ x-qbxml”
    • 最后,我收到了很多“远程服务器返回错误:(400)错误的请求。” 例外,它们是没有帮助的所有,但最终我能够给他们跟踪到一些错误的XML。 所以,如果你得到这个异常期待您的XML作为问题的根源。


Answer 3:

你所要做的轮廓在QBSDK文件(至少在7.0版本,我有SDK)的第7章进行了概述。 你必须打开一个测试帐户,并得到允许连接到他们的服务器。

一旦你有你的帐户设置,基本的身份验证过程包括重定向用户到QuickBooks的在线网站登录的,一旦用户已经这样做了,QuickBooks的回调与HTTPS后带票,这基本上是一个应用程序您可以使用您的要求,从而使系统知道你在验证的会话句柄。 当你得到回应,你分析它,并发送自己的登录请求,根据你得到了什么回来的系统。

然后,(如果我理解正确的文档)你基本上做的HTTPS与QuickBooks的请求XML文件的帖子,你会得到你要解析,以得到你想要的数据的XML响应。

我希望得到你开始。

该SDK的其余部分文件(你需要知道如何形成请求和解析您的回复)和其他一切涉及如何与桌面产品之间进行通信。 你会从文档的其余部分需要的唯一的事情是怎么做的错误处理,如果你发布的数据QuickBooks的这实在是唯一重要的。 如果你只是读,也没关系(无论您的要求进行工作或没有,你不必担心,如果你需要重试或是否会导致重复数据)。

编辑:鉴于您的具体使用情况下,我看到两个选项。 (你是不是疯了,只是没有典型的QuickBooks的在线场景)。

一是以编程方式击中了他们的登录页面,仿佛你是一个用户提交的凭据。 我敢肯定,它不是“支持”,但它可能会工作。

另一种是每天早晨或傍晚或任何有意义的缓存结果(你应该做的大概无论如何),并有一个管理屏幕,在这里有人不登录到QuickBooks的在线和更新的结果。

在大多数的小企业,他们会选择第一个选项,但第二个是要更稳定的工作,有力和实际Intuit公司的支持,如果你有一个问题。



Answer 4:

这看起来相当接近你所需要的: www.QuickbooksConnector.com

无法下载它。



文章来源: Connecting an ASP.NET application to QuickBooks Online Edition