webleit / zohobookslaravelserviceprovider
Zoho Books 的 Laravel 服务提供程序。与 Laravel Cashier 和 Laravel Spark 都兼容
Requires
- php: ~7.0
- illuminate/database: ^5.5
- illuminate/notifications: ^5.5
- laravel/cashier: ^7.0
- webleit/zohobooksapi: ^2.2
Requires (Dev)
- phpunit/phpunit: >=6.5.0
- squizlabs/php_codesniffer: ^2.3
README
此包为 Laravel Spark 和 Laravel Cashier 提供了 Zoho Books 集成
功能
此包自动将 Zoho Books 与 Laravel Spark 和 Laravel Cashier 集成。具体来说
- 为每个新的付费订阅者创建一个新的
Zoho Contact
,并将其链接到你的User
类 - 为每次收到的新付款创建一个新的
Zoho Invoice
(目前仅支持 Stripe),并将其链接到 Cashier 的Invoice
或 Spark 的LocalInvoice
- 通过将付款链接到 Stripe 在 Zoho Books 中注册发票来关闭发票
- 触发 Spark 未触发的新的事件,特别是当创建新的 Cashier 发票和新的 Spark LocalInvoice 时,会触发
Invoice Created
和LocalInvoiceCreated
- 覆盖默认的 Spark 通知,将 Zoho Books 发票作为附件发送
- 覆盖用户设置页面上的 PDF 下载,提供 Zoho Books PDF 而不是 Spark PDF
- 适用于订阅和单次收费
- 自动在 Zoho Books 中生成所需的税项行(针对我们这些欧洲人)
安装
1. 通过 Composer 安装
$ composer require webleit/zohobookslaravelserviceprovider
服务提供程序通过 Laravel 的新自动发现功能自动发现。
2. 发布供应商配置、路由和迁移
您可以使用以下命令发布配置和迁移
php artisan vendor:publish
3. 运行迁移
运行迁移以将 zohobooks_id
字段添加到用户和发票表中。
php artisan migrate
4. 覆盖 Stripe webhook 路由
注册 Stripe Webhook 控制器的新的路由。由于 Spark 服务提供程序由应用程序注册,因此它总是加载在所有包之后,所以需要手动操作。
在你的 RouteServiceProvider
中,在 map
方法内,添加以下内容
$router->post('webhook/stripe', 'Webleit\ZohoBooksLaravelServiceProvider\Http\Controllers\StripeWebhookController@handleWebhook');
所以你的最终代码如下所示
public function map(Router $router)
{
$this->mapWebRoutes($router);
$this->mapApiRoutes($router);
$router->post('webhook/stripe', 'Webleit\ZohoBooksLaravelServiceProvider\Http\Controllers\StripeWebhookController@handleWebhook');
}
5.(可选)下载 Zoho Books 发票而不是 Spark 发票
如果你想让用户从他的设置页面下载 Zoho 发票而不是 Spark 发票,请将 HasZohoBooksInvoices
添加到 App\User
类中。
6.(可选)将 Zoho Books 方法添加到 LocalInvoice 类
如果你已经覆盖了 Spark 的 LocalInvoice
类,你可以添加一个有用的特质 UseZohoBooksInvoice
,它为该类添加了许多有用的方法
asInvoice()
获取 Cashier 发票asZohoBooksInvoice()
获取 ZohoBooks 发票pdf($storagePath = null)
获取发票的 PDF 内容downloadPdf($storagePath = null)
下载发票的 PDF 内容
配置
发布配置文件时,你可以添加 3 个参数到它
authtoken
(通过环境变量ZOHOBOOKS_AUTHTOKEN
设置),这是要使用的 Zoho 认证令牌,你可以从这里获取:这里organization_id
(通过环境变量ZOHOBOOKS_ORGANIZATION_ID
设置),这是你想要工作的组织 ID。如果你提供的帐户只有一个组织,则此值可以为 null。invoice_storage_path
当您需要Zoho Books的发票PDF时,它会被存储在本地进行缓存。这是存储为PDF文件的存储目录中的路径。默认为invoices
仓库
您可能需要的所有交互都存储在ZohoBooksInvoiceRepository
类中
createOnZohoBooks (App\User $billable, Laravel\Cashier\Invoice $invoice, Laravel\Spark\LocalInvoice $localInvoice)
在Zoho Books上创建联系人和发票,同时检查是否已经完成。updateZohoContact (App\User $billable)
更新Zoho Books上的现有联系人getZohoInvoice($invoiceId)
使用Zoho的发票ID获取Zoho Books发票storeAndGetZohoInvoicePdf(Laravel\Spark\LocalInvoice $localInvoice, $storagePath = null)
获取Zoho Books发票的PDF内容,并将其存储在本地进行缓存downloadZohoInvoicePdf(LocalInvoice $localInvoice, $storagePath = null)
下载Zoho发票的PDF,并将其存储在本地进行缓存
变更日志
有关最近更改的更多信息,请参阅CHANGELOG
测试
$ composer test
安全性
如果您发现任何安全问题,请通过电子邮件daniele@weble.it联系,而不是使用问题跟踪器。
鸣谢
- [Daniele Rosario][https://www.weble.it]
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件