| Server IP : 13.235.167.51 / Your IP : 216.73.217.116 Web Server : Apache System : Linux machinox-server 6.17.0-1013-aws #13~24.04.1-Ubuntu SMP Fri Apr 24 21:36:58 UTC 2026 aarch64 User : root ( 0) PHP Version : 8.2.29 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/app.machinox.in/app/Http/Controllers/WebService/ |
Upload File : |
<?php
namespace App\Http\Controllers\WebService;
use App\Actions\WebService\TransactionAction;
use App\Helpers\RazorpayHelper;
use App\Http\Controllers\Controller;
use App\Http\Requests\WebService\TransactionRequest;
use App\Models\Boost;
use App\Models\BoostAd;
use App\Models\SubscriptionPlan;
use App\Models\Transaction;
use App\Models\UserSubscription;
use App\Traits\SubscriptionTrait;
use Carbon\Carbon;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class TransactionController extends Controller
{
use SubscriptionTrait;
public function doPayment(Request $request)
{
try {
DB::beginTransaction();
$razPaymentId = $request->input("razorpay_payment_id");
$currency = $request->input("currency");
$ad_id = $request->input("ad_id", null);
$transInfo = Transaction::where('uuid', $request->input("trx_id"))
->where('user_id', USER_ID())
->first();
if (!$transInfo) {
throw new Exception(trans("messages.TRANSACTION_NOT_FOUND"));
}
if ($currency === "INR" && $transInfo->trx_amount > 0) {
if (is_null($razPaymentId)) {
throw new Exception(trans("messages.RAZORPAY_PAYMENT_ID_IS_REQUIRED"));
}
$paymentInfo = RazorpayHelper::getPaymentDetails($razPaymentId);
Log::info('Razorpay Payment Fetched >>>>>>>>>>>', ['payment' => $paymentInfo]);
if (!$paymentInfo) {
$this->markRazorPayFailed($transInfo, null);
throw new Exception(trans("messages.PAYMENT_FAILED"));
}
if ($paymentInfo->status === 'captured') {
$amountInPaise = $paymentInfo->amount;
$amountInRupees = $amountInPaise / 100;
$transInfo->payment_status = 'SUCCESS';
$transInfo->trx_amount = $amountInRupees;
$transInfo->razorpay_payment_id = data_get($paymentInfo, 'id');
$transInfo->trx_pay_mode = data_get($paymentInfo, 'method');
$transInfo->save();
if ($transInfo->type == 'BOOST') {
$this->setBoost($transInfo);
} else if ($transInfo->type == 'SEEKER') {
$this->setSeekerSubscription($transInfo);
} else {
$this->setUserSubscription($transInfo, $ad_id);
}
$transInfo->trx_status = 'SUCCESS';
$transInfo->trx_date_time = now();
$transInfo->save();
DB::commit();
return response()->json(['success' => true, 'message' => trans("messages.PAYMENT_SUCCESSFUL")]);
} else if ($paymentInfo->status == 'failed') {
$this->markRazorPayFailed($transInfo, $paymentInfo);
DB::commit();
throw new Exception(trans("messages.PAYMENT_FAILED"));
} else {
DB::commit();
return response()->json(['success' => true, 'message' => "We're working on your payment. It will take sometime."]);
}
}
} catch (\Throwable $th) {
DB::rollBack();
throw new Exception($th->getMessage() . "" . $th->getLine() . "" . $th->getFile(), 500);
}
}
private function markRazorPayFailed(Transaction $transaction, $paymentInfo)
{
$amountInPaise = $paymentInfo->amount;
$amountInRupees = $amountInPaise / 100;
Log::info("Razorpay Payment Failed", (array) $paymentInfo);
$transaction->trx_amount = $amountInRupees;
$transaction->trx_date_time = now();
$transaction->payment_status = 'FAILED';
$transaction->razorpay_payment_id = data_get($paymentInfo, 'id');
$transaction->trx_pay_mode = data_get($paymentInfo, 'method');
$transaction->trx_status = 'FAILED';
$transaction->save();
}
public function testOrder()
{
try {
$test = RazorpayHelper::createTestOrder();
return $this->sendSuccess(trans('messages.OK'), $test);
} catch (Exception $e) {
return $this->sendError($e->getMessage());
}
}
}