Prenova stripe placil na sca
This commit is contained in:
parent
e95e8615bd
commit
da5913d779
@ -281,6 +281,34 @@ class ApiNarocilaController{
|
||||
$this->response['success'] = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Dokoncaj narocilo ce je placano preko stripe (ko je stranka potrdila placilo preko sca)
|
||||
case 'stripe_checkout_success':
|
||||
|
||||
if(isset($this->data['narocilo_id'])){
|
||||
$stripe = new UserNarocilaStripe($this->data['narocilo_id']);
|
||||
$this->response = $stripe->stripeCheckoutSuccess();
|
||||
}
|
||||
else{
|
||||
$this->response['error'] = 'Napaka! Manjka ID narocila!';
|
||||
$this->response['success'] = false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Preklici narocilo za stripe (ko je stranka preklicala placilo preko sca)
|
||||
case 'stripe_checkout_cancel':
|
||||
|
||||
if(isset($this->data['narocilo_id'])){
|
||||
$stripe = new UserNarocilaStripe($this->data['narocilo_id']);
|
||||
$this->response = $stripe->stripeCheckoutCancel();
|
||||
}
|
||||
else{
|
||||
$this->response['error'] = 'Napaka! Manjka ID narocila!';
|
||||
$this->response['success'] = false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -792,42 +792,22 @@ class UserNarocila{
|
||||
|
||||
$response = array();
|
||||
|
||||
$token = isset($narocilo_data['stripe_id']) ? $narocilo_data['stripe_id'] : '';
|
||||
if($token == ''){
|
||||
$response['error'] = 'ERROR! Missing token.';
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
// Inicializiramo stripe
|
||||
// Inicializiramo paypal
|
||||
$stripe = new UserNarocilaStripe($narocilo_id);
|
||||
|
||||
$stripe_response = $stripe->stripePayment($token);
|
||||
// Ustvarimo stripe session za placilo in vrnemo id sessiona, da uporabnik potrdi placilo
|
||||
$stripe_response = $stripe->stripeCreateSession();
|
||||
|
||||
// Ce je bilo placilo preko stripa uspesno zgeneriramo racun in uporabniku aktiviramo paket
|
||||
if($stripe_response['success'] == true){
|
||||
|
||||
$response['stripe_note'] = $stripe_response['stripe_note'];
|
||||
|
||||
$payment_response = $this->payNarocilo($narocilo_id);
|
||||
|
||||
if($payment_response['success'] == true){
|
||||
$response['racun'] = $payment_response['racun'];
|
||||
$response['success'] = true;
|
||||
}
|
||||
else{
|
||||
$response['error'] = $payment_response['error'];
|
||||
$response['success'] = false;
|
||||
}
|
||||
if($stripe_response['success'] == true){
|
||||
$response['session_id'] = $stripe_response['session_id'];
|
||||
$response['success'] = true;
|
||||
}
|
||||
else{
|
||||
$response['error'] = $stripe_response['error'];
|
||||
$response['success'] = false;
|
||||
}
|
||||
|
||||
$response['narocilo_id'] = $narocilo_id;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,8 @@ use \Stripe\Customer;
|
||||
use \Stripe\ApiOperations\Create;
|
||||
use \Stripe\Charge;
|
||||
|
||||
use \Stripe\StripeClient;
|
||||
|
||||
|
||||
class UserNarocilaStripe{
|
||||
|
||||
@ -22,16 +24,12 @@ class UserNarocilaStripe{
|
||||
private $stripeService;
|
||||
|
||||
|
||||
public function __construct($narocilo_id ){
|
||||
public function __construct($narocilo_id){
|
||||
global $app_settings;
|
||||
global $stripe_secret;
|
||||
global $stripe_key;
|
||||
|
||||
$this->apiKey = $stripe_secret;
|
||||
|
||||
$this->stripeService = new \Stripe\Stripe();
|
||||
$this->stripeService->setVerifySslCerts(false);
|
||||
$this->stripeService->setApiKey($this->apiKey);
|
||||
$this->stripeService = new \Stripe\StripeClient($stripe_secret);
|
||||
|
||||
if($narocilo_id > 0){
|
||||
|
||||
@ -52,6 +50,210 @@ class UserNarocilaStripe{
|
||||
}
|
||||
|
||||
|
||||
// Ustvarimo session za placilo v stripe - V DELU
|
||||
public function stripeCreateSession(){
|
||||
global $site_url;
|
||||
global $lang;
|
||||
|
||||
$response = array();
|
||||
|
||||
|
||||
$UA = new UserNarocila();
|
||||
$cena = $UA->getPrice($this->narocilo['package_name'], $this->narocilo['trajanje'], $this->narocilo['discount']);
|
||||
|
||||
if($this->narocilo['trajanje'] == 1)
|
||||
$months_string = 'mesec';
|
||||
elseif($this->narocilo['trajanje'] == 2)
|
||||
$months_string = 'meseca';
|
||||
elseif($this->narocilo['trajanje'] == 3 || $this->narocilo['trajanje'] == 4)
|
||||
$months_string = 'mesece';
|
||||
else
|
||||
$months_string = 'mesecev';
|
||||
|
||||
|
||||
// Zavezanec iz tujine ima racun/predracun brez ddv
|
||||
if($UA->isWithoutDDV($this->narocilo['id'])){
|
||||
$ddv = 0;
|
||||
$cena_za_placilo = $cena['final_without_tax'];
|
||||
}
|
||||
else{
|
||||
$ddv = 1;
|
||||
$cena_za_placilo = $cena['final'];
|
||||
}
|
||||
|
||||
|
||||
// URL po potrditvi oz preklicu
|
||||
if($lang['id'] == '2'){
|
||||
$drupal_url_confirm = $site_url.'/d/en/stripe-purchase/success?narocilo_id='.$this->narocilo['id'];
|
||||
$drupal_url_cancel = $site_url.'/d/en/stripe-purchase/cancel?narocilo_id='.$this->narocilo['id'];
|
||||
}
|
||||
else{
|
||||
$drupal_url_confirm = $site_url.'/d/narocilo/stripe?narocilo_id='.$this->narocilo['id'];
|
||||
$drupal_url_cancel = $site_url.'/d/narocilo/stripe-cancel?narocilo_id='.$this->narocilo['id'];
|
||||
}
|
||||
|
||||
// Ustvarimo checkout session
|
||||
try {
|
||||
$stripe_response = $this->stripeService->checkout->sessions->create([
|
||||
'success_url' => $drupal_url_confirm,
|
||||
'cancel_url' => $drupal_url_cancel,
|
||||
|
||||
'payment_method_types' => ['card'],
|
||||
|
||||
'line_items' => [
|
||||
[
|
||||
'name' => '1KA naročnina (paket '.strtoupper($this->narocilo['package_name']). ' - '.$this->narocilo['trajanje'].' '.$months_string.')',
|
||||
'price' => $cena_za_placilo,
|
||||
'quantity' => 1,
|
||||
'currency' => 'eur',
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
||||
// Dobimo id paypal narocila
|
||||
$stripe_response['session_id'] = $stripe_response->session->id;
|
||||
}
|
||||
catch (HttpException $e) {
|
||||
$response['error'] = $e->getMessage();
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
// Vstavimo stripe charge v bazo
|
||||
$sqlNarocilo = sisplet_query("INSERT INTO user_access_stripe_charge
|
||||
(session_id, narocilo_id, price, time, status)
|
||||
VALUES
|
||||
('".$stripe_response['session_id']."', '".$this->narocilo['id']."', '".$cena_za_placilo."', NOW(), 'CREATED')
|
||||
");
|
||||
if (!$sqlNarocilo){
|
||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
$response['session_id'] = $stripe_response['session_id'];
|
||||
|
||||
$response['success'] = true;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
// Zakljucimo placilo, ce je bilo placilo ok odobreno preko stripe s strani stranke - V DELU
|
||||
public function stripeCheckoutSuccess(){
|
||||
|
||||
$response = array();
|
||||
|
||||
// Preverimo plačilo v bazo
|
||||
$sqlNarociloStripe = sisplet_query("SELECT session_id
|
||||
FROM user_access_stripe_charge
|
||||
WHERE narocilo_id='".$this->narocilo['id']."'
|
||||
");
|
||||
if (!$sqlNarociloPaypal){
|
||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
// Narocilo ne obstaja (ni v bazi paypal narocil)
|
||||
if (mysqli_num_rows($sqlNarociloStripe) == 0){
|
||||
$response['error'] = 'ERROR! Stripe order session does not exist.';
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
$rowNarociloStripe = mysqli_fetch_array($sqlNarociloStripe);
|
||||
|
||||
|
||||
// Preverimo, ce je bilo vse ok placano - POST request to /v2/checkout/orders
|
||||
$request = new OrdersCaptureRequest($rowNarociloPaypal['transaction_id']);
|
||||
|
||||
try {
|
||||
// Poklicemo paypal api kjer preverimo placilo narocila
|
||||
$paypal_response = $this->paypal_client->execute($request);
|
||||
}
|
||||
catch (HttpException $e) {
|
||||
$response['error'] = $e->getMessage();
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
// Posodobimo status narocila
|
||||
$sqlNarocilo = sisplet_query("UPDATE user_access_stripe_charge
|
||||
SET status='".$paypal_response->result->status."'
|
||||
WHERE transaction_id='".$paypal_response->result->id."'
|
||||
");
|
||||
if (!$sqlNarocilo){
|
||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
// Nastavimo narocilo na placano, aktiviramo paket in vrnemo racun
|
||||
$narocilo = new UserNarocila();
|
||||
$payment_response = $narocilo->payNarocilo($this->narocilo['id']);
|
||||
|
||||
if($payment_response['success'] == true){
|
||||
$response['racun'] = $payment_response['racun'];
|
||||
$response['success'] = true;
|
||||
}
|
||||
else{
|
||||
$response['error'] = $payment_response['error'];
|
||||
$response['success'] = false;
|
||||
}
|
||||
|
||||
$response['narocilo_id'] = $this->narocilo['id'];
|
||||
|
||||
|
||||
$response['success'] = true;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
// Preklicemo placilo, ce je bilo placilo preklicano preko stripe s strani stranke
|
||||
public function stripeCheckoutCancel(){
|
||||
|
||||
$response = array();
|
||||
|
||||
// Posodobimo status narocila
|
||||
$sqlNarocilo = sisplet_query("UPDATE user_access_stripe_charge
|
||||
SET status='CANCELLED'
|
||||
WHERE narocilo_id='".$this->narocilo['id']."'
|
||||
");
|
||||
if (!$sqlNarocilo){
|
||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
// Nastavimo status narocila na storniran
|
||||
$sqlNarociloStatus = sisplet_query("UPDATE user_access_narocilo SET status='2' WHERE id='".$this->narocilo['id']."'");
|
||||
if (!$sqlNarociloStatus){
|
||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||
$response['success'] = false;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
$response['success'] = true;
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
// Placamo narocilo s kreditno kartico preko stripa
|
||||
public function stripePayment($token){
|
||||
|
||||
@ -169,4 +371,5 @@ class UserNarocilaStripe{
|
||||
|
||||
return $customerDetails;
|
||||
}
|
||||
*/
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user