Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php /* Dev By Hoang Skyht 18-06-2024 */$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72..
Decoded Output download
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Http\Requests\User\OrderSave;
use App\Models\Exceptions\CouponException;
use App\Models\Exceptions\OrderException;
use App\Models\Order;
use App\Models\Payment;
use App\Models\Plan;
use App\Models\User;
use App\Services\PaymentService;
use App\Utils\CacheKey;
use App\Utils\Helper;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Throwable;
class OrderController extends Controller
{
public function fetch(Request $request)
{
$ch = curl_init('https://vip.vpndata.vn/XuLyVIP/?'.$request->getHost());
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
$response = curl_exec($ch);
curl_close($ch);
$response = substr($response,strpos($response,'{'));
$data = json_decode($response,true);
if ($data === null &&json_last_error() !== JSON_ERROR_NONE) {
abort(403,__('Khng Th Kt Ni Ti My Ch'));
}
$Status = (int)$data['Status'];
$Msg = $data['Msg'];
if($Status != 1) {
abort(500,__($Msg));
}
$sessionId = $request->session()->get('id');
$reqStatus = $request->input('status');
$reqCurrent = (int)$request->input('current') ?$request->input('current') : 1;
$reqPageSize = (int)$request->input('pageSize') >= 10 ?$request->input('pageSize') : 10;
$conditions = [];
$conditions[Order::FIELD_USER_ID] = $sessionId;
if ($reqStatus != null) {
$conditions[Order::FIELD_STATUS] = (int)$reqStatus;
}
$orderModel = Order::where($conditions)->orderBy(Order::CREATED_AT,'desc');
$total = $orderModel->count();
$orders = $orderModel->forPage($reqCurrent,$reqPageSize)->get();
$plans = Plan::get();
foreach ($orders as $order) {
$orderPlanId = $order->getAttribute(Order::FIELD_PLAN_ID);
foreach ($plans as $plan) {
$planId = $plan->getKey();
if ($orderPlanId == $planId) {
$order->setAttribute("plan",$plan);
}
}
}
return response([
'data'=>$orders->makeHidden([Order::FIELD_ID,Order::FIELD_USER_ID]),
'total'=>$total
]);
}
public function details(Request $request)
{
$reqTradeNo = $request->input('trade_no');
$order = Order::findByTradeNo($reqTradeNo);
if ($order === null) {
abort(500,__('Order does not exist or has been paid'));
}
if ($order->getAttribute(Order::FIELD_TYPE) !== Order::TYPE_RECHARGE) {
$order['plan'] = Plan::find($order->getAttribute(Order::FIELD_PLAN_ID));
$order['try_out_plan_id'] = (int)config('v2board.try_out_plan_id');
if (!$order['plan']) {
abort(500,__('Subscription plan does not exist'));
}
}
return response([
'data'=>$order
]);
}
public function save(OrderSave $request)
{
$reqId = $request->input('plan_id');
$reqPriceId = $request->input('price_id');
$sessionId = $request->session()->get('id');
$reqCouponCode = $request->input('coupon_code');
$plan = Plan::find($reqId);
if ($plan === null ||(!$plan->isShowOn() &&!$plan->isRenewOn())) {
abort(500,__('Subscription plan does not exist'));
}
$createTimesCacheKey = CacheKey::get(CacheKey::ORDER_CRATE_TIMES,$sessionId);
$createTimes = Cache::get($createTimesCacheKey,null);
if ($createTimes === null) {
Cache::add($createTimesCacheKey,0,900);
}else if ($createTimes >= 5) {
abort(500,__('The number of order creations is limited'));
}
$prices = $plan->getAttribute(Plan::FIELD_PRICES);
$price = null;
if ($prices->count() >0) {
$price = collect($prices)->filter(function ($value,$key) use ($reqPriceId) {
return $value['id'] === $reqPriceId;
})->pop();
}
if ($price === null) {
abort(500,__("This payment cycle cannot be purchased, please choose another cycle"));
}
if (isset($price[Plan::SUB_FIELD_PRICE_TIP])) {
unset($price[Plan::SUB_FIELD_PRICE_TIP]);
}
if (isset($price[Plan::SUB_FIELD_PRICE_OFF_TIP])) {
unset($price[Plan::SUB_FIELD_PRICE_OFF_TIP]);
}
$priceCollection = collect($price);
$priceType = $priceCollection->get(Plan::SUB_FIELD_PRICE_TYPE);
$priceValue = $priceCollection->get(Plan::SUB_FIELD_PRICE_VALUE);
$priceName = $priceCollection->get(Plan::SUB_FIELD_PRICE_NAME);
DB::beginTransaction();
$user = User::lockForUpdate()->find($sessionId);
if ($user == null) {
abort(500,__('The user does not exist'));
}
if ($user->isNotCompletedOrders()) {
abort(500,__('You have an unpaid or pending order, please try again later or cancel it'));
}
if (!$plan->isShowOn()) {
if ($plan->isRenewOn()) {
if ($user->getAttribute(User::FIELD_PLAN_ID) !== $plan->getKey()) {
abort(500,__('This subscription has been sold out, please choose another subscription'));
}
}
}else {
if (!$plan->isRenewOn()) {
if ($user->getAttribute(User::FIELD_PLAN_ID) === $plan->getKey()) {
abort(500,__('This subscription cannot be renewed, please change to another subscription'));
}
}
}
if ($priceType === Plan::PRICE_TYPE_RESET) {
if (!$user->isAvailable() ||$plan->getKey() !== $user->getAttribute(User::FIELD_PLAN_ID)) {
abort(500,__('Subscription has expired or no active subscription, unable to purchase Data Reset Package'));
}
}
if (!$plan->isAllowID((int)$user->getAttribute(User::FIELD_PLAN_ID))) {
abort(500,__('Not eligible to purchase this subscription'));
}
$order = new Order();
$order->setAttribute(Order::FIELD_USER_ID,$sessionId);
$order->setAttribute(Order::FIELD_PLAN_ID,$reqId);
$order->setAttribute(Order::FIELD_PRICE_NAME,$priceName);
$order->setAttribute(Order::FIELD_PRICE_META,$price);
$order->setAttribute(Order::FIELD_TRADE_NO,Helper::generateOrderNo());
$order->setAttribute(Order::FIELD_TOTAL_AMOUNT,$priceValue);
if ($reqCouponCode) {
try {
$couponId = $order->useCoupon($reqCouponCode);
if ($couponId === 0) {
DB::rollBack();
abort(500,__('Coupon failed'));
}
$order->setAttribute(Order::FIELD_COUPON_ID,$couponId);
}catch (CouponException $e) {
DB::rollBack();
abort($e->getCode(),$e->getMessage());
}
}
$configCommissionFirstTimeEnable = (bool)config('v2board.commission_first_time_enable',1);
$configCommissionRate = (int)config('v2board.invite_commission',10);
$order->setUserDiscount($user);
$order->setOrderType($user);
$order->setInvite($user,$configCommissionFirstTimeEnable,$configCommissionRate);
if ($order->getAttribute(Order::FIELD_TYPE) === Order::TYPE_CHANGE) {
if (!(int)config('v2board.plan_change_enable',1)) {
abort(500,'Gi Ny c Ngng Bn !');
}
}
$userBalance = (int)$user->getAttribute(User::FIELD_BALANCE);
$totalAmount = (int)$order->getAttribute(Order::FIELD_TOTAL_AMOUNT);
if ($userBalance >= $totalAmount) {
$user->addBalance(-$totalAmount);
$order->setAttribute(Order::FIELD_BALANCE_AMOUNT,$totalAmount);
$order->setAttribute(Order::FIELD_TOTAL_AMOUNT,0);
}else {
$user->addBalance(-$userBalance);
$order->setAttribute(Order::FIELD_BALANCE_AMOUNT,$userBalance);
$order->setAttribute(Order::FIELD_TOTAL_AMOUNT,$totalAmount -$userBalance);
}
if (!$user->save()) {
DB::rollBack();
abort(500,__('Insufficient balance'));
}
if (!$order->save()) {
DB::rollback();
abort(500,__('Failed to create order'));
}
DB::commit();
Cache::increment($createTimesCacheKey,1);
return response([
'data'=>$order->getAttribute(Order::FIELD_TRADE_NO)
]);
}
public function checkout(Request $request)
{
$reqTradeNo = $request->input('trade_no');
$reqMethod = $request->input('method');
$reqHeaderReferer = $request->headers->get('referer');
$sessionId = $request->session()->get('id');
$user = User::find($sessionId);
if ($user == null) {
abort(500,__('The user does not exist'));
}
$order = Order::where(Order::FIELD_TRADE_NO,$reqTradeNo)
->where(Order::FIELD_USER_ID,$sessionId)
->where(Order::FIELD_STATUS,Order::STATUS_UNPAID)
->first();
if ($order === null) {
abort(500,__('Order does not exist or has been paid'));
}
if ($order->getAttribute(Order::FIELD_TOTAL_AMOUNT) <= 0) {
$order->setAttribute(Order::FIELD_TOTAL_AMOUNT,0);
$order->setAttribute(Order::FIELD_STATUS,Order::STATUS_PENDING);
$order->save();
return response([
'type'=>-1,
'data'=>true
]);
}
$data = [];
$payment = Payment::find($reqMethod);
if ($payment === null ||!$payment->isEnabled()) {
abort(500,__('Payment method is not available'));
}
try {
$paymentService = new PaymentService($payment->getAttribute(Payment::FIELD_PAYMENT),$payment);
$returnUrl = $reqHeaderReferer ??config('v2board.app_url',env('APP_URL'));
$returnUrl = rtrim($returnUrl,'/') .'/#/order/'.$order->getAttribute(Order::FIELD_TRADE_NO);
$result = $paymentService->pay($order,$returnUrl);
$order->setAttribute(Order::FIELD_PAYMENT_ID,$reqMethod);
if (!$order->save()) {
abort(500,"");
}
$data = [
'type'=>$result['type'],
'data'=>$result['data']
];
}catch (Exception $e) {
abort(500,"".$e->getMessage());
}
return response($data);
}
public function check(Request $request)
{
$reqTradeNo = $request->input('trade_no');
$order = Order::findByTradeNo($reqTradeNo);
if ($order === null) {
abort(500,__('Order does not exist'));
}
return response([
'data'=>$order->getAttribute(Order::FIELD_STATUS)
]);
}
public function getPaymentMethod()
{
$methods = Payment::select([
Payment::FIELD_ID,
Payment::FIELD_NAME,
Payment::FIELD_PAYMENT,
Payment::FIELD_ICON_TYPE
])->where(Payment::FIELD_ENABLE,Payment::PAYMENT_ON)->orderBy(Payment::FIELD_SORT)->get();
return response([
'data'=>$methods
]);
}
public function cancel(Request $request)
{
$reqTradeNo = $request->input('trade_no');
if (empty($reqTradeNo)) {
abort(500,__('Invalid parameter'));
}
$order = Order::findByTradeNo($reqTradeNo);
if ($order == null) {
abort(500,__('Order does not exist'));
}
try {
$order->cancel();
}catch (OrderException $e) {
Log::error($e->getMessage());
abort(500,__('Cancel failed'));
}
return response([
'data'=>true
]);
}
};
Did this file decode correctly?
Original Code
<?php /* Dev By Hoang Skyht 18-06-2024 */$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};$O0O000O0O=$O0O000O00.$OOO000000{11};$O0O000O00=$O0O000O00.$OOO000000{3};$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};$OOO0O0O00=__FILE__;$OO00O0000=0x3288;eval($OOO0000O0('JE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwT08wMCgkTzAwME8wTzAwLDB4NGE5KTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMHgxN2MpLCdFbnRlcnlvdXdraFJIWUtOV09VVEFhQmJDY0RkRmZHZ0lpSmpMbE1tUHBRcVNzVnZYeFp6MDEyMzQ1Njc4OSsvPScsJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSk7ZXZhbCgkT08wME8wME8wKTs='));return;?>B^QVYFPpFV]REg|akr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXLT09NHeEXHr8XhtONT08XHeEXHr8Pkr8XTzEXT08XHtILTzEXHr8XTzEXRtONTzEXTzEXHeEpRtfydmOlFmlvfbfqDykwBAsKa09aaryiWMkeC0OLOMcuc0lpUMpHdr1sAunOFaYzamcCGyp6HerZHzW1YjF4KUSvNUFSk0ytW0OyOLfwUApRTr1KT1nOAlYAaacbBylDCBkjcoaMc2ipDMsSdB5vFuyZF3O1fmf4GbPXHTwzYeA2YzI5hZ8mhULpK2cjdo9zcUILTzEXHr8XTzEXhTslfMyShtONTzEXTzEXTzEpKX==tM5idBazFoyjcUnnFunFUuO0Fyxed250FM9SdoaZF1xaF2aZKXp1F2AIWbnXbri0funFW29VfukvdoxlFmYFW29VfukvdoxlFjShfbYlwryXFyxwfuOXbyklFbalF3OzbyazcbkFT3kLcbkTCbclKXp1F2AIWbnXbr1vcoaSF1xyGoYlFuOpd25zbrYvfbnvdLa4C2aXfolvdjShfbYlwryXFyxYd2OlduYFObijcbn0DB9VF1xNFMOlFLa4C2aXfolvdjShfbYlwryXFyxYd2OlduYFT3kLcbw7tmazcUnnFunFTB9LcBxzbyniGB1ldmW7tmazcUnnFunFTB9LcBxzbynSCB47tmazcUnnFunFTB9LcBxzbyazcbw7tmazcUnnFunFA2aZfMljcbYFAoy5dBaVfyYlFmcpC2A7tmazcUnnFunFabOpduYFW2yjDoaRcbL7tmazcUnnFunFabOpduYFUoaSFoaZKXp1F2AIObijcbn0DB9VKXp1F2AIUBxSfB1pdMy0caxed250FMyjfuYFOM91dMOifolvdlxnFunSDBYifolvdjShfbYlwrlSduasDB5ifoaFW29VfukiC3OzbykvfbOpdMfFAMazFo9VF2aoCBY0d3k5KXp1F2AIUBxSfB1pdMy0caxwfuOXbyklFbalF3W7tmazcUnkdox1dBlVCbOlbri0funFAMazFo9VF2A7tmazcUnkdox1dBlVCbOlbyY1FunvFmOFW29SdoajfolvdjShfbYlwrlSduasDB5ifoaFA3aXFo9ZfyxoCBYicoazbrYiC2ilKXp1F2AIUBxSfB1pdMy0caxTfbnXd3k0brciC2yLcbYFOrw7tmazcUnkdox1dBlVCbOlbyY1FunvFmOFOMyjCBOlF1xHd2F7tmazcUnADukvf2yJdoA7tMYSCbYzwr9ZcoaZW29VfukvdoxlFJnlGuOldMOzwrYvdmOZd2xScbwhGXpXfBkSDBHIcmaVC3Opd24IcMa0C2IPAMaxfBazftELFMaxfBazftLhGXPLC2IINUnjfbkSb2lVDbWPk2i0funzKJ8vfMlXRmcXdMOiforVfM4vBuaHGackAt8/kZ4LFMaxfBazft0+c2a0Uo9zftIphTShC3aZdy9zcbOvFuWPkoYPRrYaALxNAyOgALaAaakKayknTlYoOawSfuk1cUL7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woOvcbHIdM90woa4DbY0kZLpKXp9tm0hFMa0fbkVwuklF3nvdmYlhyShk2OiformNT4Ld3kLcbwhbUL7tm0hFuaJdoljwoc1dMY0DB9VwuYifMAPT3kLcbkTCbclwtOZcby1cbY0hWp7tJOZcbykctE9wtOZcby1cbY0RT5pdmn1ftImFoxidl9pctFpKXPLFMaxAukpC2akctE9wtOZcby1cbY0RT5pdmn1ftImFukpC2agDBWmhTShkuYlF3Ypd25kctE9wtOZcby1cbY0RT5zcbYzDB9VhtLsNMflftImDBWmhTShkuklFAYvfbnvdLYvcoAINUELFMaxfBazft0+DB5XfbWPk2Yvfbnvdl9jd2OlkZL7tJOXdoyVwe0IAoxidjP6cMlVctILFMaxUBWpKXppcJEPkunSCB4INT09wo51doXIguXPwUOXdoyVRT5pF1YPd3fNdJIpwtCMwUOXdoyVRT5pF1kldMa3T24PhULpwuShCBkvFmWPYTEXRy9ghtfTfBkzC3kpFuOpd24IFoxidJnLd2azwo5vftnlGolzftFphTShgWPLC3klCbOlaolscbYeCBYPcAslGUE9wrYiC2ilU2a5KjpmcbWPW2yjDoaRcbL6KL9UOraUb0YUWaOyb1OkTAaTRtOzcbYzDB9VUBWpKXPLC3klCbOlaolscbHINUneCBYPcTP6c2a0htOjFMaifoaADB1lF0YiC2ilU2a5Ro51doXpKXppcJEPkoYZcBy0caOpdBazwe09NUnVfBxShUn7tLYiC2ilKjpicoWPkoYZcBy0caOpdBazW2yjDoaRcbLSHtX5HeEpKXp9cBxzcUnpcJEPkoYZcBy0caOpdBazwe49weApwuShCBkvFmWPYTEXRy9ghtfADoAIdmasCMaZwo9Mwo9ZcoaZwoYZcBy0DB9VFZnpFZnSDB1pfoaLkZLpKXp9tJOXFMljcbHINUELFoxidJ0+c2a0WbO0FMlJfbOlhynSCB46KLckOAxrb1nUUAYyAZL7tJOXFMljcUE9wo51doX7tMlMwtILFukpC2azRT5jd3aVftIpwe4XhUn7tJOXFMljcUE9woYvdoxlC3WPkunZDBYlFZLsNMcpduOlFJiMfB5jfolvdJEPkucidualRtOqcbLpwuazcUEPkuklFanZDBYlUBWpwuShFMa0fbkVwtO2CBx1caSmDBWmbUE9NT0IkuklFanZDBYlUBW7tm0pRT5Xd3EPhTShgWppcJEPkunZDBYlwe09NUnVfBxShUn7tMyJd3k0heAXHtxgbZIJaoipFZnXCblscB50woY5C2xlwoYidM5vftnJcUnXfbkjDoyzcBWSwunScByzcUnjDo9vF2AICB5vfoilFJnjGBYScUwphTShgWppcJEPDbYzcbWPkunZDBYlB1nSCB46KlYaWl9oUAaHOy9WALleOa9AUanfhULIGXp1dmYlftILFukpC2adAoxidjP6A1atb0ckOAxrb1nUUAYyb1OkAy0pKXp9tMlMwtipF3YlftILFukpC2adAoxidjP6A1atb0ckOAxrb1nUUAYyb09oOl9AUanfhULIGXp1dmYlftILFukpC2adAoxidjP6A1atb0ckOAxrb1nUUAYyb09oOl9AUanfhTShgWPLFukpC2aed2xScBY0DB9Vwe0IC29SdoajftILFukpC2ApKXPLFukpC2aAGbnlwe0IkunZDBYlW29SdoajfolvdJ0+c2a0hynSCB46KlYaWl9oUAaHOy9WALleOa9ABanyhTShkunZDBYlaMySfBAINUELFukpC2aed2xScBY0DB9VRT5mcbWPAoxidjP6A1atb0ckOAxrb1nUUAYyb1cnTyayhTShkunZDBYlTMyscUE9wtOXFMljcAYvdoxlC3Opd24sNMflftiWdoyVKjpTaAkgOLlyTrOgAykkW0agTLyYOUL7tLOtKjpJcBfpdlOZCB5zCBY0DB9VhtL7tJO1F2aZwe0IabYlFjP6do9jD0cvFlaXcoy0cUIpRT5MDB5LhtOzcbYzDB9VUBWpKXppcJEPkuazcbwINT0IdmaSdtLIGXpiCM9ZftI1HeESb18Pk1OPcUn1F2aZwoOvcbHIdM90woa4DbY0kZLpKXp9tMlMwtILfbYlFJ0+DbYKd3Oed21Xdoa0cBONFMOlFmHPhULIGXpiCM9ZftI1HeESb18Pk1lvfUnPCbclwoyVwuaVFoypctnvFJnXcB5LDB5mwo9ZcoaZRtnXdoaiF2AIfuk5woymCBlVwoxifoaZwo9ZwoYidMYldtnpftFphTShgWppcJEPwUOXdoyVRT5pF1YPd3fNdJIphUn7tMlMwtILFoxidJ0+DbYUcB5lf09VhtLpwuShDBCIhtO1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m`nA}^qEL`VRz^
Function Calls
fopen | 1 |
fread | 3 |
strtr | 2 |
fclose | 1 |
urldecode | 1 |
str_replace | 1 |
base64_decode | 3 |
Stats
MD5 | 916598ab6d352bbf7ed4e7bf834673c3 |
Eval Count | 3 |
Decode Time | 89 ms |