File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/StripeController.php
<?php
namespace App\Http\Controllers;
use App\Core\Order\OrderStatusEnum;
use App\Core\Payment\PaymentMethodContext;
use App\Core\Payment\PaymentStatusEnum;
use App\Http\Controllers\Interfaces\PaymentGatewayControllerInterface;
use App\TicketMain;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class StripeController extends PaymentGatewayBridgeController implements PaymentGatewayControllerInterface
{
private $util;
public function __construct()
{
$this->util = new UtilController();
}
public function payment(Request $request)
{
// no implemented
}
public function webhooksListener(Request $request)
{
$this->util->logFile($request);
$listenedEvents = [
"payment_intent.succeeded",
"payment_intent.payment_failed"
];
if (
in_array($request->type, $listenedEvents) &&
$request->type == "payment_intent.succeeded"
) {
$this->updatePayment(
$request->data["object"]["id"],
'CONFIRMED',
2,
'Transacción confirmada por webhook',
$request->data["object"]["id"]
);
}
return response('', Response::HTTP_NO_CONTENT);
}
public function getTransactionByReference(Request $request)
{
// no implemented
}
public function validatePayment($transactionId, $reference)
{
$paymentContext = new PaymentMethodContext($this->gatewayData->toArray());
$retrieveResponse = $paymentContext->retrieve($transactionId);
switch ($retrieveResponse->status()) {
case PaymentStatusEnum::CONFIRMED:
$this->updatePayment(
$retrieveResponse->id(),
'CONFIRMED',
2,
'Venta exitosa',
$retrieveResponse->id()
);
break;
case PaymentStatusEnum::DECLINED:
$this->updatePayment(
$retrieveResponse->id(),
$retrieveResponse->status(),
7,
$retrieveResponse->status(),
$retrieveResponse->id()
);
break;
}
}
public function responseTransaction(Request $request)
{
// no implemented
}
private function setTicketAsConfirmed($ticket)
{
$currentTicket = TicketMain::where('id', $ticket->id)
->with(['ticket_user_blocks' => function ($q) {
$q->where('ticket_user_blocks.is_social_distancing', false);
}])
->first();
if (!$currentTicket->ticket_user_blocks->isEmpty()) {
$tickets = new TicketsController();
$paymentState = $tickets->generateTickets($currentTicket->ticket_user_blocks, $currentTicket->id);
}
if ($paymentState) {
$currentTicket->payment_state = PaymentStatusEnum::CONFIRMED;
$currentTicket->update();
}
$ticket->gw_state = OrderStatusEnum::CONFIRMED;
$ticket->update();
}
public function getAuthorizationCode($gatewayResponse)
{
return null;
}
public function getPaymentMethod($gatewayResponse){
return null;
}
}