From 912ab1ed930acc114937e35629360a21b7ee3fc1 Mon Sep 17 00:00:00 2001 From: pero1203 Date: Thu, 10 Sep 2020 10:27:06 +0200 Subject: [PATCH] Dokoncan backend za paypal, dokoncani funkciji za cancel in capture paypal narocila - ZA TESTIRATI --- .../classes/class.ApiNarocilaController.php | 18 ++++++++- .../classes/class.UserNarocilaPaypal.php | 39 +++++++++++++++++-- sql/update2.sql | 3 +- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/frontend/payments/classes/class.ApiNarocilaController.php b/frontend/payments/classes/class.ApiNarocilaController.php index 9ff60a0bf..ebceea984 100644 --- a/frontend/payments/classes/class.ApiNarocilaController.php +++ b/frontend/payments/classes/class.ApiNarocilaController.php @@ -230,8 +230,22 @@ class ApiNarocilaController{ break; - // Preveri, ce je narocilo placano preko paypala - case 'check_narocilo_paypal': + // Dokoncaj narocilo ce je placano preko paypala (ko je stranka potrdila placilo v paypalu) + case 'capture_narocilo_paypal': + + if(isset($this->data['narocilo_id'])){ + $paypal = new UserNarocilaPaypal($this->data['narocilo_id']); + $this->response = $narocilo->paypalCaptureOrder(); + } + else{ + $this->response['error'] = 'Napaka! Manjka ID narocila!'; + $this->response['success'] = false; + } + + break; + + // Preklici narocilo za paypal (ko je stranka preklicala placilo v paypalu) + case 'cancel_narocilo_paypal': if(isset($this->data['narocilo_id'])){ $paypal = new UserNarocilaPaypal($this->data['narocilo_id']); diff --git a/frontend/payments/classes/class.UserNarocilaPaypal.php b/frontend/payments/classes/class.UserNarocilaPaypal.php index e90c64406..6f5e61e79 100644 --- a/frontend/payments/classes/class.UserNarocilaPaypal.php +++ b/frontend/payments/classes/class.UserNarocilaPaypal.php @@ -24,6 +24,7 @@ class UserNarocilaPaypal{ global $app_settings; global $paypal_client_id; global $paypal_secret; + global $mysql_database_name; if($narocilo_id > 0){ @@ -38,8 +39,13 @@ class UserNarocilaPaypal{ die("Napaka pri komunikaciji s paypal! Narocilo ne obstaja."); } + // Ustvarimo okolje za paypal - $environment = new SandboxEnvironment($paypal_client_id, $paypal_secret); + if($mysql_database_name == 'real1kasi') + $environment = new ProductionEnvironment($paypal_client_id, $paypal_secret); + else + $environment = new SandboxEnvironment($paypal_client_id, $paypal_secret); + $this->paypal_client = new PayPalHttpClient($environment); } else { @@ -130,14 +136,18 @@ class UserNarocilaPaypal{ "intent" => "CAPTURE", "purchase_units" => [[ "reference_id" => $orderDetails['narocilo_id'], + 'description' => $orderDetails['ime'], + "amount" => [ "value" => $orderDetails['cena'], "currency_code" => "EUR" ] ]], "application_context" => [ - "cancel_url" => $site_url . '/d/narocilo/paypal-cancel', - "return_url" => $site_url . '/d/narocilo/paypal' + "cancel_url" => $site_url . '/d/narocilo/paypal-cancel?narocilo_id='.$orderDetails['narocilo_id'], + "return_url" => $site_url . '/d/narocilo/paypal?narocilo_id='.$orderDetails['narocilo_id'], + + 'brand_name' => '1KA' ] ]; @@ -236,4 +246,27 @@ class UserNarocilaPaypal{ return $response; } + + + // Preklicemo placilo, ce je bilo placilo preklicano preko paypala s strani stranke + public function paypalCancelOrder(){ + + $response = array(); + + // Posodobimo status narocila + $sqlNarocilo = sisplet_query("UPDATE user_access_paypal_transaction + SET status='CANCELED' + WHERE narocilo_id='".$this->narocilo['id']."' + "); + if (!$sqlNarocilo){ + $response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); + $response['success'] = false; + + return $response; + } + + $response['success'] = true; + + return $response; + } } \ No newline at end of file diff --git a/sql/update2.sql b/sql/update2.sql index 4b4f57512..27a9fbfed 100644 --- a/sql/update2.sql +++ b/sql/update2.sql @@ -9293,7 +9293,8 @@ CREATE TABLE user_access_paypal_transaction( time DATETIME(3) NOT NULL, status VARCHAR(30) NOT NULL DEFAULT '', PRIMARY KEY (id), - UNIQUE KEY (transaction_id) + UNIQUE KEY (transaction_id), + UNIQUE KEY (narocilo_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; UPDATE misc SET value='20.09.07' WHERE what="version";