cba85/wave-api-php-client

Wave GraphQL API PHP 客户端

dev-master 2020-06-01 14:17 UTC

This package is auto-updated.

Last update: 2024-08-29 05:25:02 UTC


README

Wave API 的 PHP 客户端。

注意:我创建了此包以满足个人需求。并非所有 Wave API 操作都已实现。但您可以通过在 src/Operations 中创建新类来添加操作。

安装

$ composer require cba85/wave-api-php-client

使用方法

use Wave\Wave;

$wave = new Wave('YOUR_WAVE_FULL_ACCESS_TOKEN');

可用方法

获取用户

https://developer.waveapps.com/hc/zh-cn/articles/360032552912-查询-获取用户

$optionalFields = ['user' => ['id', 'firstName']];
$user = $wave->getUser($optionalFields);

列出企业

https://developer.waveapps.com/hc/zh-cn/articles/360032908111-查询-列出企业

$optionalFields = ['pageInfo' => ['totalCount']];
$optionalArguments = ['businesses' => ['pageSize' => 25]];
$businesses = $wave->listbusinesses($optionalFields, $optionalArguments);

列出产品

https://developer.waveapps.com/hc/zh-cn/articles/360032572872-查询-分页列出产品

 $wave = new Wave(getenv('WAVE_FULL_ACCESS_TOKEN'));
$products = $wave->listProducts([], [], [
    'businessId' => getenv('WAVE_BUSINESS_ID'),
    'page' => 1,
    'pageSize' => 1
]);

通过 ID 获取客户

https://developer.waveapps.com/hc/zh-cn/articles/360032911011-查询-通过 ID 获取客户

$optionalFields = ['customer' => ['id', 'name', 'email']];
$wave = new Wave(getenv('WAVE_FULL_ACCESS_TOKEN'));
$customer = $wave->getCustomerById($optionalFields, [], [
    'businessId' => getenv('WAVE_BUSINESS_ID'),
    'customerId' => getenv('WAVE_CUSTOMER_ID')
]);

创建客户

https://developer.waveapps.com/hc/zh-cn/articles/360032569232-突变-创建客户

$optionalFields = ['customer' => ['id', 'name', 'email']];
$wave = new Wave(getenv('WAVE_FULL_ACCESS_TOKEN'));
$customerCreate = $wave->createCustomer($optionalFields, [], [
    'input' => [
        'businessId' => getenv('WAVE_BUSINESS_ID'),
        'name' => "Santa",
        'firstName' => "Saint",
        'lastName' => "Nicolas",
        'email' => "santa@claus.com",
        'address' => [
            'city' => "North Pole",
            'postalCode' => "H0H H0H",
            'countryCode' => "CA"
        ],
        'currency' => "EUR"
    ]
]);

更新客户

https://developer.waveapps.com/hc/zh-cn/articles/360033059491-突变-更新客户

$optionalFields = ['customer' => ['id', 'name', 'email']];
$wave = new Wave(getenv('WAVE_FULL_ACCESS_TOKEN'));
$customerPatch = $wave->patchCustomer([], [], [
    'input' => [
        'id' => getenv('WAVE_CUSTOMER_ID'),
        'email' => "new@email.com"
    ]
]);

创建发票

https://developer.waveapps.com/hc/zh-cn/articles/360019968212-API-参考

$wave = new Wave(getenv('WAVE_FULL_ACCESS_TOKEN'));
$invoiceCreate = $wave->createInvoice([], [], [
    'input' => [
        'businessId' => getenv('WAVE_BUSINESS_ID'),
        'customerId' => getenv('WAVE_CUSTOMER_ID'),
        'status' => "DRAFT",
        'items' => [
            'productId' => getenv('WAVE_PRODUCT_ID'),
            'description' => "test",
            'quantity' => 1,
            'unitPrice' => 14.99,
            'taxes' => [
                'salesTaxId' => getenv('WAVE_TAX_ID'),
            ]
        ]
    ]
]);

GraphQL 查询

您还可以使用后台包含的 GraphQL 客户端手动发送 GraphQL 查询。

 $query = <<<'GRAPHQL'
            query {
                user {
                    id
                    firstName
                    lastName
                    defaultEmail
                    createdAt
                    modifiedAt
                }
            }
            GRAPHQL;
$wave = new Wave('YOUR_WAVE_FULL_ACCESS_TOKEN');
$results = $wave->client->runRawQuery($query, false);

Wave API 文档

请参阅 Wave API 文档 进行参考。

测试

根据 .env.example 文件示例,在 .env 文件中添加 Wave 令牌和 ID 以测试 Wave API。

  • WAVE_FULL_ACCESS_TOKEN : 您的 Wave 账户完整访问令牌。
  • WAVE_BUSINESS_ID : Wave 企业 ID,仅限测试使用。
    • 列出它们并选择一个使用
    $ ./vendor/bin/phpunit --filter testListBusiness
  • WAVE_CUSTOMER_ID : Wave 客户 ID,仅限测试使用。
  • WAVE_PRODUCT_ID : Wave 产品 ID,仅限测试使用。
    • 列出它们并选择一个使用
    $ ./vendor/bin/phpunit --filter testListProducts
  • WAVE_TAX_ID : 用于创建发票测试的 Wave 税务 ID。
    • 使用以下方法找到您的默认销售税
    $ ./vendor/bin/phpunit --filter testListProducts

然后启动测试

$ ./vendor/bin/phpunit