File: /var/www/vhost/disk-apps/dev-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');
}
}