napp / fenerum-api-client
API Client for Fenerum
1.1.2
2020-03-06 14:35 UTC
Requires
- php: ^7.2
- ext-json: *
- guzzlehttp/guzzle: ^6.4
- illuminate/events: ~5.8.0|^6.0|^7.0
- illuminate/queue: ~5.8.0|^6.0|^7.0
- illuminate/routing: ~5.8.0|^6.0|^7.0
- illuminate/support: ~5.8.0|^6.0|^7.0
Requires (Dev)
- laravel/framework: ~5.8.0|^6.0|^7.0
- nunomaduro/phpinsights: ^1.9
- orchestra/testbench: ^4.3
- phpunit/phpunit: ^8.2
- symfony/var-dumper: ^4.3
This package is auto-updated.
Last update: 2024-11-07 01:54:17 UTC
README
Installation
You can install the package via composer:
composer require napp/fenerum-api-client
Installation
- Add to
.env
- Fenerum API Token and a user/pass combo to allow Fenerum to post webhook events.
FENERUM_API_TOKEN= FENERUM_AUTH_USERNAME=myuser FENERUM_AUTH_PASSWORD=mypass
- add FenerumServiceProvider to config/app.php
[ ... \Fenerum\FenerumServiceProvider::class, ... ]
- Add route to receive webhooks
Route::post('my-webhook-url', '\Fenerum\Webhooks\Http\Controllers\WebhookController@handle');
- Register events in app/Providers/EventServiceProvider
AccountCreated::class => [ MyAccountCreatedListener::class ], AccountUpdated::class => [ MyAccountUpdatedListener::class ], CancelSubscription::class => [ MyCancelSubscriptionListener::class ],
Webhook Events supported
- AccountCreated
- AccountUpdated
- CancelSubscription
- NewActivity
- NewInvoice
- PaidInvoice
- PlanTermsCreated
- PlanTermsUpdated
- RenewSubscriptionSoon
Usage
// use DI to resolve dependencies $accounts = app(\Fenerum\ApiService::class)->account(); // or without DI $client = new \Fenerum\ApiClient(); $fenerum = new \Fenerum\ApiService($client); $accounts = $fenerum->account();
Examples
Get accounts
use Fenerum\ApiService; $accounts = app(ApiService::class)->account()->listAccounts();
Update Subscription - User Seats
// find account with id "1234" $myAccount = $fenerum->account()->getAccount('1234'); // get the first subscription $subId = $myAccount['subscription_set'][0]['uuid']; // update subscription user seat count $updatedSubscription = $fenerum->subscription()->updateSubscription([ 'quantity' => 59 ], $subId);
Create account and add subscription (simple version)
/** @var \Fenerum\ApiService $fenerum */ $fenerum = app(\Fenerum\ApiService::class); $localAccountCode = '12345678'; $planTermId = 'c82a888e-2149-4b3c-8e14-ff5086e49417'; // create an account $fenerum->account()->createAccount([ 'company_name' => 'Foo Bar Inc', 'code' => $localAccountCode, 'legal_address' => 'Road 123', 'legal_zipcode' => '90210', 'legal_city' => 'Hollywood', 'legal_country' => 'US', 'billing_same_as_legal' => true, 'language' => 'en', 'legal_vat_number' => 'US22223344', ]); // add subscription to the account $result = $fenerum->subscription()->createSubscription([ 'account' => $localAccountCode, 'terms' => $planTermId, 'collection_method' => 'invoice', 'start_date' => now()->endOfMonth()->toIso8601String(), 'payment_terms' => 14 ]);
Create account and add recipient, contract, discount and a subscription (advanced version)
/** @var \Fenerum\ApiService $fenerum */ $fenerum = app(\Fenerum\ApiService::class); $localAccountCode = '12345678'; $planTermId = 'c82a888e-2149-4b3c-8e14-ff5086e49417'; // create an account $account = $fenerum->account()->createAccount([ 'company_name' => 'Foo Bar Inc', 'code' => $localAccountCode, 'legal_address' => 'Road 123', 'legal_zipcode' => '90210', 'legal_city' => 'Hollywood', 'legal_country' => 'US', 'billing_same_as_legal' => true, 'language' => 'en', 'legal_vat_number' => 'US22223344', ]); // create a recipient $fenerum->recipient()->createRecipient([ 'account' => $account['uuid'], 'name' => 'John Doe', 'email' => 'john@doe.com', 'receive_invoice' => true, 'receive_payment_confirmation' => true, 'receive_subscription_notifications' => true, ]); // assign a 24 month contract to the account $contract = $fenerum->contract()->createContract([ 'plan_terms' => $planTermId, 'start_date' => now()->startOfDay()->toIso8601String(), 'commitment_length' => 24 ], $localAccountCode); // add 10% discounting $fenerum->contractTier()->createContractTier([ 'minimum_quantity' => 1, 'discount' => '10', 'discount_type' => 'percent', ], $localAccountCode, $contract['uuid']); // add subscription to the account $result = $fenerum->subscription()->createSubscription([ 'account' => $localAccountCode, 'terms' => $planTermId, 'collection_method' => 'invoice', 'start_date' => now()->endOfMonth()->toIso8601String(), 'payment_terms' => 14 ]);
Download invoice
$invoice = app(\Fenerum\ApiService::class) ->invoice() ->getInvoice('24260f57-f190-4cfa-a2a0-d8a8d827bda8'); $filePath = public_path('invoice_'.$invoice['invoice_number'].'.pdf'); file_put_contents($filePath, base64_decode($invoice['pdf_base64'])); return response()->download($filePath)->deleteFileAfterSend(true);
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.