webleit/zohobookslaravelserviceprovider

Zoho Books 的 Laravel 服务提供程序。与 Laravel Cashier 和 Laravel Spark 都兼容

2.3.0 2018-11-12 15:00 UTC

This package is auto-updated.

Last update: 2024-09-13 04:34:41 UTC


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 CreatedLocalInvoiceCreated
  • 覆盖默认的 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联系,而不是使用问题跟踪器。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件