- Pay and subscribe from generated Subscription Request

This commit is contained in:
Peter Papp
2021-03-22 15:41:47 +01:00
parent 0db55b51d2
commit 778a94e5ba
6 changed files with 158 additions and 20 deletions

View File

@@ -4,11 +4,19 @@ namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Resources\Oasis\SubscriptionRequestResource;
use App\Http\Resources\PlanResource;
use App\Models\Oasis\SubscriptionRequest;
use App\Services\StripeService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class SubscriptionController extends Controller
{
public function __construct()
{
$this->stripe = resolve(StripeService::class);
}
/**
* Get subscription request details
*
@@ -21,4 +29,41 @@ class SubscriptionController extends Controller
new SubscriptionRequestResource($order), 200
);
}
/**
* Subscribe user
*
* @param Request $request
* @param SubscriptionRequest $order
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function subscribe(Request $request, SubscriptionRequest $order)
{
// Create subscription
$order->user
->newSubscription('main', $order->requested_plan)
->create(
$this->stripe
->getOrSetDefaultPaymentMethod($request, $order->user)
);
// Get requested plan
$plan = $this->stripe
->getPlan($order->requested_plan);
// Update Subscription request
$order->update([
'status' => 'payed'
]);
// Update user storage limit
$order->user
->settings()
->update([
'storage_capacity' => $plan['product']['metadata']['capacity'],
'payment_activation' => 1,
]);
return response('Done!', 204);
}
}