我试图创建连接到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:
这里是所有我走上得到这个工作的步骤。 特别感谢基思·帕尔默为他的意见,答案, 他的网站这真的帮助我得到这个工作。
注册您在申请 http://appreg.quickbooks.com 。 这会给你你的应用程序ID和应用程序名称。 我用这些设置:
- 目标应用:QBOE
- 环境:生产
适用类型:台式机
- (使用桌面让东西变得更尽可能不需要证书)
验证键被发送到你需要这个向导的第2页上输入您的电子邮件地址。
- 设置您的QBOE连接 。 一旦您完成第1步注册您的应用程序,您将有一个应用程序ID。 在URL中使用低于这个ID来设置QBOE连接:
- https://login.quickbooks.com/j/qbn/sdkapp/confirm?serviceid=2004&appid=
APP_ID
- 注:请务必将APP_ID与当你注册你的应用程序所创建的应用程序ID上面的网址。
- 该向导将引导您完成以下步骤:
- 为连接指定一个名称。
- 授予访问权限 - 我给了所有的会计权利,因为这是最容易的。
- 指定登录安全 - 我打开登录安全关。 这一点很重要,因为它使提交XML到QBOE比较容易,因为你并不需要得到每个用户的会话票据。
- 然后,您将得到一个连接密钥。
- https://login.quickbooks.com/j/qbn/sdkapp/confirm?serviceid=2004&appid=
- 在这一点上,你现在有信息3个重要棋子 ,以获得您的QuickBooks的在线版(QBOE)帐户的访问。
- 应用名称
- 应用程序ID
- 连接密钥
发布的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 { } }
几件事情要注意:
- 正如基思·帕尔默指出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
无法下载它。