1. Go to this page and download the library: Download onaonbir/oo-subscription library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
onaonbir / oo-subscription example snippets
use OnaOnbir\Subscription\Concerns\HasSubscriptions;
class User extends Authenticatable
{
use HasSubscriptions;
}
use OnaOnbir\Subscription\Actions\CreateSubscription;
app(CreateSubscription::class)->handle($user, $plan, 'USD', 'stripe', 'sub_xxx');
use OnaOnbir\Subscription\Actions\CancelSubscription;
// Immediate
app(CancelSubscription::class)->handle($subscription, immediately: true, reason: 'user_request');
// Schedule at period end
app(CancelSubscription::class)->handle($subscription, immediately: false);
// Resume
app(CancelSubscription::class)->resume($subscription);
use OnaOnbir\Subscription\Actions\RenewSubscription;
$newSubscription = app(RenewSubscription::class)->handle($subscription, 'USD');
use OnaOnbir\Subscription\Actions\ChangePlan;
$newSubscription = app(ChangePlan::class)->handle($subscription, $newPlan, 'USD');
use OnaOnbir\Subscription\Actions\RecordFeatureUsage;
$usage = app(RecordFeatureUsage::class)->handle($user, 'api-requests', 5, ['endpoint' => '/api/users']);
// Or via the trait:
$user->recordUsage('api-requests', 5);
// Boolean: is the protocol enabled?
Feature::create(['code' => 'protocol-sftp', 'type' => FeatureType::Boolean]);
// Quantity: how many connections?
Feature::create(['code' => 'protocol-sftp-limit', 'type' => FeatureType::Quantity]);
use OnaOnbir\Subscription\Contracts\PaymentGateway;
class StripeGateway implements PaymentGateway
{
public function create(Subscription $subscription): array { /* ... */ }
public function cancel(Subscription $subscription): bool { /* ... */ }
public function renew(Subscription $subscription): array { /* ... */ }
public function changePlan(Subscription $subscription, array $newPlanData): array { /* ... */ }
}