myleshyson / laravel-quickbooks
consolibyte/quickbooks-php 包的一个很好的包装器。
Requires
- consolibyte/quickbooks: dev-master
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' ] ] ] ] ]);