【问题标题】:Get all invoices from QuickBooks [closed]从 QuickBooks 获取所有发票 [关闭]
【发布时间】:2012-05-22 18:51:58
【问题描述】:

我正在寻找一种简单的方法(Web 服务、API 调用等)来简单地从 Quickbooks 在线版获取所有即将开具的发票。有什么简单的方法可以实现吗?我正在寻找一个相对较高级别的抽象。

注意:我愿意禁用身份验证以避免必须处理证书等。只是寻找一个简单的解决方案。

【问题讨论】:

  • 这是您想要做的一次性事情,还是您希望建立一个可持续的、持续的流程来做到这一点?
  • 另外,这是您正在构建的 SaaS 应用程序,还是仅针对单个 QuickBooks Online 公司的定制/一次性应用程序? (Intuit 提供了两种 API,但如果您是 SaaS 应用程序,则只能使用友好的 API)
  • 一次性。我要做的就是从所有即将开具的发票中获取到期日期和客户姓名的列表。肯定是一次性的。

标签: c# asp.net api quickbooks quickbooks-online


【解决方案1】:

在此处向 Intuit 注册您的应用程序:https://appreg.intuit.com/

注册:

  • 目标应用:QBOE
  • 环境:生产
  • 应用类型:桌面

在浏览器中转到此 URL(将您自己的应用程序 ID 替换为 URL): https://login.quickbooks.com/j/qbn/sdkapp/confirm?appid=YOUR-APPLICATION-ID-HERE&serviceid=2004&appdata=1

出现提示时,请确保通过选择“否。任何可以登录 [应用程序名称] 的人都可以使用该连接”来关闭登录安全。选项。

您将在流程结束时获得一张连接票。将其保存在安全的地方。

编写一个程序来发送这个 HTTP 正文:

<?xml version="1.0" ?>
<?qbxml version="6.0"?> 
<QBXML>
    <SignonMsgsRq>
        <SignonDesktopRq>
            <ClientDateTime>2009-10-09T07:10:10</ClientDateTime> 
            <ApplicationLogin>application login goes here</ApplicationLogin> 
            <ConnectionTicket>connection ticket goes here</ConnectionTicket> 
            <Language>English</Language> 
            <AppID>application id goes here</AppID> 
            <AppVer>1</AppVer> 
        </SignonDesktopRq> 
    </SignonMsgsRq> 
</QBXML>

到 Intuit 的服务器: https://webapps.quickbooks.com/j/AppGateway

您将获得一张会话票。

编写一个程序来发送这个 HTTP 请求:

<?xml version="1.0" ?> 
<?qbxml version="6.0"?> 
<QBXML> 
    <SignonMsgsRq>
        <SignonTicketRq> 
            <ClientDateTime>2006-09-20T15:49:26</ClientDateTime> 
            <SessionTicket>session ticket goes here</SessionTicket>
            <Language>English</Language> 
            <AppID>application id goes here</AppID>
            <AppVer>1</AppVer> 
        </SignonTicketRq> 
    </SignonMsgsRq> 
    <QBXMLMsgsRq onError="continueOnError"> 
        <InvoiceQueryRq requestID="2"> 
            <MaxReturned>10</MaxReturned>
        </InvoiceQueryRq>
    </QBXMLMsgsRq> 
</QBXML>

到同一个 URL。

响应将是一组 XML 格式的发票数据。

当您需要有关 qbXML 请求语法的更多详细信息时,请参阅 OSR: http://developer.intuit.com/qbsdk-current/common/newosr/index.html

您可以在此处找到一些 C# 示例代码: http://wiki.consolibyte.com/wiki/doku.php/quickbooks_integration_csharp#c_net_sample_code_for_quickbooks_online_edition

其他阅读这篇文章的人的重要提示:这应该只用于一次性/自定义类型的应用程序。如果您正在构建一个软件即服务应用程序并试图让您的最终用户将他们自己的 QuickBooks 数据与您的应用程序同步,那么您应该查看 IPP/IDS 而不是上面的 qbXML 示例。 http://developer.intuit.com/

【讨论】:

  • 请求 ID 代表什么?另外,有没有办法像我问的那样按日期过滤,或者你会建议把它们全部取回并在内存中查询?谢谢!
  • 这是一个唯一的请求 ID,您可以发送该 ID 以跟踪您发送接收的请求/响应。在 QuickBooks SDK PDF 中有一个完整的页面,但对于 QuickBooks Online,您可以硬编码或忽略它,因为它对 QuickBooks Online 无关紧要。关于按日期过滤...请注意我上面的评论:“当您需要有关 qbXML 请求语法的更多详细信息时,请参阅 OSR:”打开它,选中左侧的“OE”,取消选中“US”,然后选择“顶部“选择消息”下拉菜单中的“InvoiceQuery”。
  • 我一定还是遗漏了一些东西,因为我似乎无法找到按截止日期过滤的方法。它似乎允许其他日期(例如上次修改日期),但我看不到按到期日期过滤的方法,它迫使我在取回数据后进行过滤,如果可能的话,我想阻止(在记忆中)。任何帮助都会很棒。再次感谢。
  • QuickBooks Online 不支持按 DueDate 过滤。如果您想按 DueDate 过滤,则必须在您自己的应用程序中过滤它,而不是通过 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多