SubscriptionService
in package
Service for managing client subscriptions and billing.
Uses test mode simulation for development. In production, integrates with the Stripe API for real subscription management.
Tags
Table of Contents
Properties
Methods
- __construct() : mixed
- Initialize the subscription service.
- cancelSubscription() : array<string|int, mixed>
- Cancel a subscription.
- changeTier() : array<string|int, mixed>
- Change subscription tier.
- createSubscription() : array<string|int, mixed>
- Create a new subscription for a business.
- generateMonthlyInvoice() : int|null
- Generate a monthly invoice for a subscription.
- getSubscriptionStatus() : array<string|int, mixed>|null
- Get subscription status details for display.
- getTierDetails() : array<string|int, mixed>
- Get tier details for display.
- handleWebhookEvent() : array<string|int, mixed>
- Handle a Stripe webhook event.
- retryPayment() : array<string|int, mixed>
- Retry payment for a failed invoice.
- getStripePriceId() : string
- Get the Stripe price ID for a tier.
- handleInvoicePaid() : array<string|int, mixed>
- Handle invoice.paid webhook event.
- handlePaymentFailed() : array<string|int, mixed>
- Handle invoice.payment_failed webhook event.
- handleSubscriptionDeleted() : array<string|int, mixed>
- Handle customer.subscription.deleted webhook event.
- isTestMode() : bool
- Check if running in test mode.
Properties
$businessModel
private
Business
$businessModel
Business model
$invoiceModel
private
Invoice
$invoiceModel
Invoice model
$subscriptionModel
private
Subscription
$subscriptionModel
Subscription model
Methods
__construct()
Initialize the subscription service.
public
__construct() : mixed
cancelSubscription()
Cancel a subscription.
public
cancelSubscription(int $businessId) : array<string|int, mixed>
Parameters
- $businessId : int
-
Business ID
Return values
array<string|int, mixed> —Result with keys: success, error
changeTier()
Change subscription tier.
public
changeTier(int $businessId, string $newTier) : array<string|int, mixed>
Parameters
- $businessId : int
-
Business ID
- $newTier : string
-
New tier
Return values
array<string|int, mixed> —Result with keys: success, error
createSubscription()
Create a new subscription for a business.
public
createSubscription(int $businessId, string $tier[, array<string|int, mixed> $paymentData = [] ]) : array<string|int, mixed>
Parameters
- $businessId : int
-
Business ID
- $tier : string
-
Subscription tier (free, basic, premium, enterprise)
- $paymentData : array<string|int, mixed> = []
-
Payment data (card token, etc.)
Return values
array<string|int, mixed> —Result with keys: success, subscription_id, error
generateMonthlyInvoice()
Generate a monthly invoice for a subscription.
public
generateMonthlyInvoice(int $subscriptionId) : int|null
Parameters
- $subscriptionId : int
-
Subscription ID
Return values
int|null —Invoice ID
getSubscriptionStatus()
Get subscription status details for display.
public
getSubscriptionStatus(int $businessId) : array<string|int, mixed>|null
Parameters
- $businessId : int
-
Business ID
Return values
array<string|int, mixed>|nullgetTierDetails()
Get tier details for display.
public
getTierDetails() : array<string|int, mixed>
Return values
array<string|int, mixed>handleWebhookEvent()
Handle a Stripe webhook event.
public
handleWebhookEvent(string $eventType, array<string|int, mixed> $eventData) : array<string|int, mixed>
Parameters
- $eventType : string
-
Event type (e.g., invoice.paid)
- $eventData : array<string|int, mixed>
-
Event payload data
Return values
array<string|int, mixed> —Result with keys: success, error
retryPayment()
Retry payment for a failed invoice.
public
retryPayment(int $invoiceId) : array<string|int, mixed>
Parameters
- $invoiceId : int
-
Invoice ID
Return values
array<string|int, mixed> —Result with keys: success, error
getStripePriceId()
Get the Stripe price ID for a tier.
private
getStripePriceId(string $tier) : string
Parameters
- $tier : string
-
Subscription tier
Return values
stringhandleInvoicePaid()
Handle invoice.paid webhook event.
private
handleInvoicePaid(array<string|int, mixed> $eventData) : array<string|int, mixed>
Parameters
- $eventData : array<string|int, mixed>
-
Event data
Return values
array<string|int, mixed>handlePaymentFailed()
Handle invoice.payment_failed webhook event.
private
handlePaymentFailed(array<string|int, mixed> $eventData) : array<string|int, mixed>
Parameters
- $eventData : array<string|int, mixed>
-
Event data
Return values
array<string|int, mixed>handleSubscriptionDeleted()
Handle customer.subscription.deleted webhook event.
private
handleSubscriptionDeleted(array<string|int, mixed> $eventData) : array<string|int, mixed>
Parameters
- $eventData : array<string|int, mixed>
-
Event data
Return values
array<string|int, mixed>isTestMode()
Check if running in test mode.
private
isTestMode() : bool