lacodix/sevdesk-saloon

基于Saloon的用于消费SevDesk API的PHP包

v0.12.1 2024-09-16 10:32 UTC

This package is auto-updated.

Last update: 2024-09-16 10:32:23 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

文档

** 进行中 _ 文档尚未准备就绪 **

您可以在我们的文档网站上找到此包的完整文档:我们的文档网站.

此包可以帮助您使用PHP项目消费SevDesk API。该包基于Saloon https://api.sevdesk.de/

安装

composer require lacodix/sevdesk-saloon

快速入门

首先创建一个API连接器。您必须提供一些配置数据,以使sevdesk api正常工作。有一些设置您必须在所有请求中设置,否则,例如默认税率以及您的API用户ID。

use Lacodix\SevdeskSaloon\SevdeskSaloon;

$sevdeskSaloon = new SevdeskSaloon(
    $api_token, // Your API Token - get it in your Sevdesk account
    [
        'sevUserId'   => 12345678,     // the Sevdesk Uer ID - needed to create invoices
        'taxRate'     => 19,
        'taxText'     => 'MwSt 19%',   // only in version 1.0
        'taxType'     => 'default',    // only in version 1.0
        'taxRule'     => 1,            // only in version 2.0
        'currency'    => 'EUR',
        'invoiceType' => 'RE',
    ]
);

获取您的API用户ID

不幸的是,Sevdesk在UI上没有显示用户ID。因此,您必须在没有配置的情况下第一次使用API。您只需运行以下代码(您需要一个有效的令牌)。

    $sevdeskSaloon = new SevdeskSaloon($api_token);
    $sevdeskSaloon->sevUsers->get();

这将返回您的账户中所有sevUsers的数组。取ID并将其保存到您的配置中。

[
    [
      "id" => "1234567",
      "objectName" => "SevUser",
      "additionalInformation" => null,
      "create" => ...,
      ...
    ]
]

消费API

使用连接器,您可以消费所有现有的API资源

    $sevdeskSaloon->contact()->get();
    $sevdeskSaloon->contact()->create($contactType, $contactData);
    
    $sevdeskSaloon->invoice()->get();
    $sevdeskSaloon->invoice()->create($sevContactId, $items, $data);
    $sevdeskSaloon->invoice()->sendViaEmail($invoiceId, $data);

在测试中进行Mock API调用

由于此包基于Saloon,您可以使用MockClient模拟测试中的所有请求。

有关更多信息,请参阅Saloon文档

贡献

请在提交之前运行以下命令并解决潜在问题,并在添加新功能时考虑添加测试。

composer rector:test
composer insights
composer csfixer:test
composer phpstan:test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

鸣谢

我们第一次使用Sevdesk API时使用了Martin创建的包laravel-sevdesk-api。尽管如此,我们遇到了一些问题,例如当下载发票作为PDF时,Martin通过直接打印pdf解决了这个问题,而我们要在我们的端保存PDF。最后,使用默认的Guzzle客户端进行模拟测试的可测试性是一个不容忽视的问题,因此我们决定基于Saloon创建自己的包,并且没有依赖Laravel,这样您也可以在其他基于composer的PHP项目中使用它。一些部分仍然基于Martin的包,如Countries-Enum。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。