【问题标题】:Quickbooks PHP API Generating Invoices On Order SubmissionQuickbooks PHP API 在订单提交时生成发票
【发布时间】:2016-08-23 22:45:31
【问题描述】:

我有一个客户想通过在线表格接受订单,其想法是可以通过我的应用程序提交订单并将其存储在数据库中,同时在 QuickBooks 中生成提交发票。

当输入订单的人不是客户而是客户的客户时,我如何在 PHP 中执行此操作?似乎 Quickbooks 使用 Oauth 令牌和 javascript 库来生成它们以将公司连接到应用程序,但我只是为一家公司编写后端,并希望该后端在保存订单时创建发票。我怎么看这个?

我对任何必须点击“连接到 quickbooks”按钮的人不感兴趣,尤其是填写订单的人,因为再一次,那个人是客户,不需要了解客户的内部信息发票系统。

我真的很想使用会计 API 来生成发票。有没有办法直接在 Quickbooks SDK 配置中将我的后端链接到我的一家公司并实现这一点,或者他们是否需要使用 javascript 库来获取令牌。我不清楚我应该往哪个方向发展,如果我不需要它来做后端逻辑,我不想在客户端库上浪费时间。

【问题讨论】:

  • 查看 Keith Palmers 库:github.com/consolibyte/quickbooks-php,使用几个可用的库之一来获取您的令牌。顺便说一句,您只需每 180 天进行一次身份验证。
  • @Kisaragi 仅使用 Quickbooks PHP SDK 有什么可用的吗?尽管我可能不得不使用该库,因为仅在正式发布时就遇到了麻烦。
  • 我不确定你的意思。你遇到什么麻烦了?您不必让您的客户连接到快速手册,您只需要执行一次(例如构建一次性方法并自己运行)。一旦您的应用程序通过身份验证,谁创建发票并不重要,只要通过您的应用程序即可。如果您熟悉 codeigniter 并想了解没有 QBO .js 文件的 oauth 过程是如何工作的,您可以在这里查看github.com/Scott972/Ci_quickbooks_online/blob/master/…
  • @Kisaragi 以realm_id 为例,我不明白这与 ouath 有何关系。我是否让客户端使用 oauth 进行连接,然后存储 realm_id 以供将来请求?要在 vanilla SDK 中创建发票,您需要 oauth 凭据。我想我不明白如果我正在为一个客户开发,为什么我不能从他们那里得到他们的realm_id,然后继续使用它而不是让他们进行某种形式的身份验证?
  • 是的,您可以存储凭据

标签: php quickbooks


【解决方案1】:

这里有一些示例代码,完全符合您的要求:

连同快速入门指南:

另请参阅下面有关您的 cmets 的注释 - 您走在正确的轨道上,您只是误解了 OAuth 的工作原理:

似乎 Quickbooks 使用 Oauth 令牌和 javascript 库来生成它们以将公司连接到应用程序,但我只是为一家公司编写后端,并希望该后端在保存订单时创建发票。

正确,Intuit 使用 OAuth 和一点 Javascript 来启动 OAuth 流程。

我对任何人必须点击“连接到快速书”按钮不感兴趣

有人需要按此按钮...但只有一个人需要按一次、永远、然后再也不按此按钮。

公司的所有者(例如您的老板)需要单击一次按钮,这将为您提供 OAuth 凭据(和领域 ID)。一旦你的老板这样做了一次,那么你就可以永远使用所有实际客户的信誉。

您的客户(例如,实际结账/下订单的人)不要点击任何按钮,他们甚至不会看到或根本不知道您正在使用 QuickBooks。

只是真的想使用会计 API 来生成发票。

酷,你完全可以做到!

有没有办法直接在 Quickbooks SDK 配置中将我的后端链接到我的一家公司并实现这一点,或者他们是否需要使用 javascript 库来获取令牌。

按照上面的快速入门。您应该需要大约 15 分钟才能获得有效的 OAuth 连接,然后您再也不需要使用客户端的东西了。

顺便说一句,您只需每 180 天进行一次身份验证。

如果你使用重连脚本,你只需要认证一次,并且可以每180天自动更新令牌,不需要用户交互。

例如以 realm_id 为例,我不明白这与 ouath 有何关系。

领域 ID 只是您尝试连接的特定 QuickBooks Online 公司的唯一标识符。是的,您需要存储它。如果您使用我们的库,这将自动为您完成。

我想我不明白如果我正在为一个客户开发,为什么我不能从他们那里获取他们的 realm_id 然后继续使用它而不是让他们进行某种形式的身份验证?

同样,他们只需验证一次。这是 Intuit 为您提供连接所需的领域 ID 和凭据的方式。一旦你完成了一次,你就不需要再做一次了。整个过程大约需要 30 秒。

如果他们只是在没有任何身份验证的情况下为您提供 OAuth 凭据,那将是一个巨大的安全漏洞。如果您阅读有关 OAuth 的 Wikipedia 文章,它会深入讨论这一点以及 OAuth 的目标。

好的,我想我明白了,所以他们必须每 180 天验证一次?

每 180 天一次,除非您使用重新连接脚本,在这种情况下,他们只需进行一次身份验证,然后再也不必担心。

所以我可以在令牌和 realm_id 过期之前将其存储在数据库中并直接使用吗?

是的。

这样我的客户可以进行身份​​验证,然后我的脚本可以在他们的客户访问我们的网站时为他们生成发票?

是的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多