myleshyson/laravel-quickbooks

此包已被弃用,不再维护。未建议替代包。

consolibyte/quickbooks-php 包的一个很好的包装器。

v1.06 2017-08-10 00:42 UTC

This package is not auto-updated.

Last update: 2024-03-30 17:21:22 UTC


README

有两个原因。我再也没有时间来做这个项目了(它只是一个爱好项目),而且几个月前QuicBooks实际上推出了自己的PHP SDK 你可以在这里看到它。尽管这个包仍然可以使用(截至2017年9月15日),但QuickBooks将有一个更一致、质量更高的包来与自己的系统协同工作。它的文档也比这个或Consolibyte的文档更好。对于那些使用过它的人来说,希望它已经有所帮助!如果你想接管这个仓库并将其转换为使用QuickBooks SDK或其他东西,请让我知道。

laravel-quickbooks

Quickbooks Online SDK的一个很好的包装器。

安装

如果你还没有使用composer安装quickbooks php sdk。如果你使用的是php 7+,那么你需要需要dev-master版本。

composer require consolibyte/quickbooks

然后通过composer安装此包

composer require myleshyson/laravel-quickbooks

将以下行添加到你的config/app.php。

Myleshyson\LaravelQuickBooks\QuickBooksServiceProvider::class,

最后,在命令行中按如下方式发布包的配置文件。

php artisan vendor:publish --tag=quickbooks

这些是在你的.env中需要设置的变量。



QB_DSN= e.g for mysql...mysqli://db-username:db-password@db-connection/db-name
QB_TOKEN=
QB_OAUTH_CONSUMER_KEY=
QB_OAUTH_CONSUMER_SECRET=

Make sure tese two url's are different.
QB_OAUTH_URL= url used to connect to quickbooks. 
QB_SUCCESS_URL= you are redirected to here when the handshake is successful. 

QB_SANDBOX=true

These two you shouldn't change unless you know what you're doing.
QB_USERNAME=DO_NOT_CHANGE_ME
QB_TENANT=12345

之后,你应该可以开始了!

用法

此包是为了使用QuickBooks会计API而制作的。你可以在“交易”和“名称列表”资源下查看所有会计资源。QuickBooks会计API

注意:与QuickBooks协同工作

尽管QuickBooks文档中提到某些内容是可选的,但这并不意味着你不需要它在请求中使用。如果你的请求没有通过,请确保使用dd()查看QuickBooks返回的错误。它可能要求你设置某些可选内容。

有几个资源不受QuickBooks SDK的支持,如下所示

  • CompanyCurrency
  • Budget
  • JournalCode
  • TaxAgency
  • TaxService
  • Deposit
  • Transfer

快速笔记:确保在使用此包时,在Myleshyson\LaravelQuickBooks\Facades下导入你想要使用的Facade类

连接到QuickBooks

确保成功URL与oauth(连接)URL不同。否则,在成功后它会不断重定向你。

// routes/web.php
use Myleshyson\LaravelQuickBooks\Facades\Connection;

Route::get('/connect', function () {
  Connection::start();
});

如果你想从quickbooks断开连接,可以这样做。

// routes/web.php
use Myleshyson\LaravelQuickBooks\Facades\Connection;

Route::get('/disconnect', function () {
  Connection::stop();
});

如果你想检查是否已连接

// routes/web.php
use Myleshyson\LaravelQuickBooks\Facades\Connection;

Route::get('/check-connection', function () {
  dd(Connection::check());
  //true
});

发送请求

每个可用的资源都有四种方法,除了TaxRate和TaxCode。它们只有get、find和query方法。

Customer::create(array $data);

Customer::update($id, array $data);

Customer::delete($id);

Customer::find($id);

Customer::get(); //gets all customers associated with your account.

Customer::query('SELECT * FROM CUSTOMER WHERE ...') //put in your own custom query for the Customer table. 

我使用了与QuickBooks API相同的命名约定来简化操作。例如,要创建Customer资源,你可以这样使用...

// routes/web.php

use Myleshyson\LaravelQuickBooks\Facades\Customer;

Route::get('/', function () {
    Customer::create([
        'Taxable' => false,
        'BillAddr' => [
            'Line1' => '123 Test Street',
            'City' => 'Dallas',
            'State' => 'Texas',
            'CountrySubDivisionCode' => 'TX',
            'PostalCode' => '12345'
        ],
        'GivenName' => 'Bill',
        'FamilyName' => 'Something',
        'FullyQualifiedName' => "Bill's Surf Shop"
    ]);
});

要处理QuickBooks中的任何类型的行,可以这样处理。

以下是QuickBooks中的不同行类型

  • SalesItemLineDetail
  • ItemBasedExpenseLineDetail
  • AccountBasedExpenseLineDetail
  • GroupLineDetail
  • DescriptionOnly
  • DiscountLineDetail
  • SubtotalLine
  • TaxLineDetail
use Myleshyson\LaravelQuickBooks\Facades\Invoice;

Invoice::create([
  'CustomerRef' => 1,
  'Lines' => [
    [
      'DetailType' => 'SalesItemLineDetail',
      'ItemRef' => 1,
      'Amount' => 20,
      'MarkupInfo' => [
        'PercentBased' => true
      ]
    ],
    [
      'DetailType' => 'TxnTaxDetail',
      'TxnTaxCodeRef' => 8,
      'Lines' => [
        [
          'SomeStuff'
        ],
        [
          'MoreStuff'
        ]
      ]
    ]
   ]
]);