diff --git a/app/Models/Subscription.php b/app/Models/Subscription.php index 748b27de0234..57ca3011ab06 100644 --- a/app/Models/Subscription.php +++ b/app/Models/Subscription.php @@ -20,6 +20,16 @@ class Subscription extends BaseModel { use HasFactory, SoftDeletes; + protected $hidden = [ + 'id', + 'user_id', + 'assigned_user_id', + 'company_id', + 'product_ids', + 'recurring_product_ids', + 'group_id', + ]; + protected $fillable = [ 'assigned_user_id', 'product_ids', diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index 9932e4029cef..e101c4fbcf58 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -27,6 +27,7 @@ use App\Models\SystemLog; use App\Repositories\InvoiceRepository; use App\Repositories\RecurringInvoiceRepository; use App\Repositories\SubscriptionRepository; +use App\Utils\Ninja; use App\Utils\Traits\CleanLineItems; use App\Utils\Traits\MakesHash; use GuzzleHttp\RequestOptions; @@ -70,7 +71,13 @@ class SubscriptionService ->save(); //execute any webhooks - $this->triggerWebhook(); + + $context = [ + 'context' => 'recurring_purchase', + 'recurring_invoice' => $recurring_invoice->hashed_id, + ]; + + $this->triggerWebhook($context); if(array_key_exists('post_purchase_url', $this->subscription->webhook_configuration) && strlen($this->subscription->webhook_configuration['post_purchase_url']) >=1) return redirect($this->subscription->webhook_configuration['post_purchase_url']); @@ -80,8 +87,13 @@ class SubscriptionService else { + $context = [ + 'context' => 'single_purchase', + 'invoice' => $this->encodePrimaryKey($payment_hash->fee_invoice_id), + ]; + //execute any webhooks - $this->triggerWebhook(); + $this->triggerWebhook($context); if(array_key_exists('post_purchase_url', $this->subscription->webhook_configuration) && strlen($this->subscription->webhook_configuration['post_purchase_url']) >=1) return redirect($this->subscription->webhook_configuration['post_purchase_url']); @@ -124,8 +136,13 @@ class SubscriptionService ->start() ->save(); + $context = [ + 'context' => 'trial', + 'recurring_invoice' => $recurring_invoice->hashed_id, + ]; + //execute any webhooks - $this->triggerWebhook(); + $this->triggerWebhook($context); if(array_key_exists('post_purchase_url', $this->subscription->webhook_configuration) && strlen($this->subscription->webhook_configuration['post_purchase_url']) >=1) return redirect($this->subscription->webhook_configuration['post_purchase_url']); @@ -208,22 +225,35 @@ class SubscriptionService // } //@todo - need refactor - public function triggerWebhook() + public function triggerWebhook($context) { + //context = 'trial, recurring_purchase, single_purchase' //hit the webhook to after a successful onboarding - // $body = [ - // 'subscription' => $this->subscription, - // 'client_subscription' => $this->client_subscription, - // 'client' => $this->client_subscription->client->toArray(), - // ]; + $body = [ + 'subscription' => $this->subscription->toArray(), + 'client' => $this->client_subscription->client->toArray(), + ]; + $body = array_merge($body, $context); + + if(Ninja::isHosted()) + { + $hosted = [ + 'company' => $this->subscription->company, + ]; - // $client = new \GuzzleHttp\Client(['headers' => $this->subscription->webhook_configuration->post_purchase_headers]); + $body = array_merge($body, $hosted); + } - // $response = $client->{$this->subscription->webhook_configuration->post_purchase_rest_method}($this->subscription->post_purchase_url,[ - // RequestOptions::JSON => ['body' => $body] - // ]); + $client = new \GuzzleHttp\Client( + [ + 'headers' => $this->subscription->webhook_configuration['post_purchase_headers'] + ]); + + $response = $client->{$this->subscription->webhook_configuration['post_purchase_rest_method']($this->subscription['post_purchase_url'],[ + RequestOptions::JSON => ['body' => $body] + ]); // SystemLogger::dispatch( // $body,