mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
76 lines
3.0 KiB
PHP
76 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Billplzs\ControllersLogic;
|
|
|
|
|
|
use App\Classes\Exceptions\ResourceNotFoundException;
|
|
use App\Http\Resources\TransactionResource;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
use App\Classes\Exceptions\MalformedRequestException;
|
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
use App\Classes\Modules\Billplzs\Services\GetBillplzBill;
|
|
use App\Classes\Modules\Billplzs\DataTransferObjects\BillplzXSignatureObject;
|
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
|
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class CallbackBillplzLogic
|
|
{
|
|
|
|
|
|
/** @var GetBillplzBill */
|
|
private $getBillplzBill;
|
|
|
|
/** @var FetchesTransaction */
|
|
private $fetchesTransaction;
|
|
|
|
/** @var UpdatesTransactionStatus */
|
|
private $updatesTransactionStatus;
|
|
|
|
|
|
/**
|
|
* CreateBookingLogic constructor.
|
|
* @param GetBillplzBill $getBillplzBill
|
|
* @param FetchesTransaction $fetchesTransaction
|
|
* @param UpdatesTransactionStatus $updatesTransactionStatus
|
|
*/
|
|
public function __construct(GetBillplzBill $getBillplzBill, FetchesTransaction $fetchesTransaction, UpdatesTransactionStatus $updatesTransactionStatus)
|
|
{
|
|
$this->getBillplzBill = $getBillplzBill;
|
|
$this->fetchesTransaction = $fetchesTransaction;
|
|
$this->updatesTransactionStatus = $updatesTransactionStatus;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\RedirectResponse
|
|
* @throws MalformedRequestException
|
|
* @throws ResourceNotFoundException
|
|
*/
|
|
public function execute(Request $request)
|
|
{
|
|
|
|
$billplzXSignatureObject = new BillplzXSignatureObject($request);
|
|
|
|
if(!$billplzXSignatureObject->isValidSignature()) throw new MalformedRequestException('Billplz Payment validation failed.');
|
|
|
|
$billPlz = $this->getBillplzBill->execute($billplzXSignatureObject->getBillPlzId());
|
|
|
|
if(!$billPlz) throw new ResourceNotFoundException('Billplz bill not found.');
|
|
|
|
$transaction = $this->fetchesTransaction->execute(['payment_reference' => $billplzXSignatureObject->getBillPlzId()]);
|
|
|
|
$this->updatesTransactionStatus->execute($transaction, $billPlz->state === 'paid' ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION);
|
|
|
|
$token = Auth::fromUser(User::find(1));
|
|
$request->headers->set('Authorization', 'Bearer '.$token);
|
|
return view('pages.payments_redirect', ['marking' => $transaction->booking->marking, 'payment_reference' => $transaction->payment_reference, 'status' => $billPlz->state === 'paid' ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION, 'amount' => $transaction->amount]);
|
|
// return redirect()->route('booking.details', ['marking' => $transaction->booking->marking, 'payment_status' => $billPlz->state === 'paid' ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION]);
|
|
|
|
}
|
|
} |