HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo-telemedicina.teky.com.co/app/Http/Controllers/PayuController.php
<?php

namespace Telemedicina\Http\Controllers;

use Illuminate\Http\Request;
use Telemedicina\Event;
use Telemedicina\PaymentGateway;
use Telemedicina\PaymentTransaction;
use Telemedicina\User;

class PayuController extends Controller
{
    private $merchant_id;
    private $account_id;
    private $apiKey;
    private $currency;
    private $requestUrl;
    private $responseUrl;
    private $confirmationUrl;

    public function __construct(){
        $paymentGateway = PaymentGateway::where('is_production', !config('app.debug'))->first();
        $this->merchant_id = $paymentGateway->merchant_id;
        $this->account_id = $paymentGateway->account_id;
        $this->apiKey = $paymentGateway->api_key;
        $this->currency = $paymentGateway->currency;
        $this->requestUrl = $paymentGateway->request_url;
        $this->responseUrl = $paymentGateway->response_url;
        $this->confirmationUrl = $paymentGateway->confirmation_url;
    }

    function processPayment(Request $request){
        $paymentTransaction = PaymentTransaction::where('signature', $request->s)->first();
        $event = Event::find($paymentTransaction->event_id);
        $referenceCode = $paymentTransaction->signature . '-' . time();

        $dataView = array(
            'merchantId' => $this->merchant_id,
            'accountId' => $this->account_id,
            'description' => "Pago Cita - " . $event->id,
            'referenceCode' => $referenceCode,
            'amount' => $event->rate,
            'tax' => 0,
            'taxReturnBase' => 0,
            'currency' => $this->currency,
            'signature' => $this->makeSignaturePayu($this->apiKey, $this->merchant_id, $referenceCode, $event->rate, $this->currency),
            'test' => config('app.debug'),
            'buyerEmail' => User::find($event->user_id)->email,
            'responseUrl' => $this->responseUrl,
            'confirmationUrl' => $this->confirmationUrl,
            'requestUrl' => $this->requestUrl
        );
        
        return view('payu.webcheckout')->with('dataView', $dataView);
    }

    public static function makeSignaturePayu($apiKey, $merchantId, $reference, $price, $currency){
        return  md5($apiKey . "~" . $merchantId . "~" . $reference . "~" .  $price . "~" .  $currency);
    }

    public function confirmation(){
        
        return view('payu.confirmation');
    }

    public function response(){
        return view('payu.response');
    }
}