| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests\IdOnlyRequest;
use App\Http\Requests\PaymentRecords\ListRequest as PaymentRecordistRequest;
use App\Http\Requests\PaymentRecords\ExportPaymentRecordRequest as ExportPaymentRecordRequest;
use App\Http\Requests\PaymentRecords\ReadyTopUpCreditRequest;
use App\Http\Services\PaymentRecordService;
use App\Models\PaymentRecord;
use Auth;
use DB;
use Illuminate\Http\Request;
use IPay88\Responses\Response as IPay88Response;
class PaymentRecordController extends Controller
{
public function __construct(
PaymentRecordService $paymentRecordService
)
{
$this->paymentRecordService = $paymentRecordService;
}
#################################### START IPAY88 CORE FUNCTIONS #######################################
public function webView(Request $request)
{
$paymentRecord = PaymentRecord::where('unique_id', $request->pid)->firstOrFail();
return $paymentRecord->toIPay88Request()->loadPaymentFormView();
}
public function handleResponseCallback(Request $request)
{
// info( $request );
$payload = $request->toArray();
return DB::transaction(function () use ($payload)
{
$response = new IPay88Response($payload);
if($response->isSuccess()){
$this->paymentRecordService->paymentSuccessful($payload);
return redirect('/payment/status/success?'.http_build_query([
'msg' => "Thank you for payment",
]));
}
$this->paymentRecordService->paymentFailed($payload);
return redirect('/payment/status/failed?'.http_build_query([
'msg' => 'PaymentRecord fail',
'desc' => $payload['ErrDesc']
]));
});
}
public function handleBackendCallback(Request $request)
{
// info("handleBackendCallback", $request->toArray() );
$payload = $request->toArray();
return DB::transaction(function () use ($payload)
{
$response = new IPay88Response($payload);
if($response->isSuccess()){
$this->paymentRecordService->paymentSuccessful($payload);
return "RECEIVEOK";
}
$this->paymentRecordService->paymentFailed($payload);
return null;
});
}
public function requery(IdOnlyRequest $request)
{
return DB::transaction(function () use ($request)
{
$result = $this->paymentRecordService->requery( $request->validated() );
return self::successResponse("Success", $result);
});
}
#################################### END IPAY88 CORE FUNCTIONS #######################################
public function listPaymentRecord(PaymentRecordistRequest $request)
{
$payload = $request->validated();
$creditItems = $this->paymentRecordService->listPaymentRecord( $payload );
return self::successResponse('Success', $creditItems );
}
public function exportPaymentRecordList(ExportPaymentRecordRequest $request)
{
$payload = $request->validated();
$paymentRecords = $this->paymentRecordService->exportPaymentRecordList( $payload );
return self::successResponse('Success', $paymentRecords);
}
/**
* @OA\Post(
*
* path="/api/payment-record/ready/top-up-credit",
* operationId="readyTopUpCredit",
* tags={"PaymentRecord"},
* summary="readyTopUpCredit",
* security={
* {
* "open_key": {}
* },
* {
* "api_key": {}
* }
* },
* @OA\Parameter(
* name="remark",
* description="remark",
* in="query",
* @OA\Schema(
* type="string",
* default=""
* )
* ),
* @OA\Parameter(
* name="amount",
* description="amount",
* in="query",
* @OA\Schema(
* type="string",
* default=""
* )
* ),
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
public function readyTopUpCredit(ReadyTopUpCreditRequest $request)
{
$payload = $request->validated();
$paymentRecord = $this->paymentRecordService->readyTopUpCredit(Auth::user(), $payload);
$paymentRecord_url = route("payment-webview", [ "pid" => $paymentRecord->unique_id, ]);
return self::successResponse("Success",[
"payment_url" => $paymentRecord_url,
"payment_record" => $paymentRecord
]);
}
}