Dokoncan prehod na 2-stopenjsko avtentikacijo pri placevanju s stripe (novejsi api)
This commit is contained in:
parent
da5913d779
commit
1ebbdc9538
@ -94,24 +94,29 @@ class UserNarocilaStripe{
|
|||||||
|
|
||||||
// Ustvarimo checkout session
|
// Ustvarimo checkout session
|
||||||
try {
|
try {
|
||||||
$stripe_response = $this->stripeService->checkout->sessions->create([
|
$session = $this->stripeService->checkout->sessions->create([
|
||||||
'success_url' => $drupal_url_confirm,
|
'success_url' => $drupal_url_confirm,
|
||||||
'cancel_url' => $drupal_url_cancel,
|
'cancel_url' => $drupal_url_cancel,
|
||||||
|
|
||||||
'payment_method_types' => ['card'],
|
'payment_method_types' => ['card'],
|
||||||
|
'mode' => 'payment',
|
||||||
|
|
||||||
'line_items' => [
|
'line_items' => [
|
||||||
[
|
[
|
||||||
'name' => '1KA naročnina (paket '.strtoupper($this->narocilo['package_name']). ' - '.$this->narocilo['trajanje'].' '.$months_string.')',
|
'price_data' => array(
|
||||||
'price' => $cena_za_placilo,
|
'currency' => 'EUR',
|
||||||
'quantity' => 1,
|
'product_data' => array(
|
||||||
'currency' => 'eur',
|
'name' => '1KA naročnina (paket '.strtoupper($this->narocilo['package_name']). ' - '.$this->narocilo['trajanje'].' '.$months_string.')',
|
||||||
],
|
),
|
||||||
|
'unit_amount' => $cena_za_placilo * 100,
|
||||||
|
),
|
||||||
|
'quantity' => 1,
|
||||||
|
],
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Dobimo id paypal narocila
|
// Dobimo id paypal narocila
|
||||||
$stripe_response['session_id'] = $stripe_response->session->id;
|
$stripe_response['session_id'] = $session->id;
|
||||||
}
|
}
|
||||||
catch (HttpException $e) {
|
catch (HttpException $e) {
|
||||||
$response['error'] = $e->getMessage();
|
$response['error'] = $e->getMessage();
|
||||||
@ -153,14 +158,14 @@ class UserNarocilaStripe{
|
|||||||
FROM user_access_stripe_charge
|
FROM user_access_stripe_charge
|
||||||
WHERE narocilo_id='".$this->narocilo['id']."'
|
WHERE narocilo_id='".$this->narocilo['id']."'
|
||||||
");
|
");
|
||||||
if (!$sqlNarociloPaypal){
|
if (!$sqlNarociloStripe){
|
||||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||||
$response['success'] = false;
|
$response['success'] = false;
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Narocilo ne obstaja (ni v bazi paypal narocil)
|
// Narocilo ne obstaja (ni v bazi stripe narocil)
|
||||||
if (mysqli_num_rows($sqlNarociloStripe) == 0){
|
if (mysqli_num_rows($sqlNarociloStripe) == 0){
|
||||||
$response['error'] = 'ERROR! Stripe order session does not exist.';
|
$response['error'] = 'ERROR! Stripe order session does not exist.';
|
||||||
$response['success'] = false;
|
$response['success'] = false;
|
||||||
@ -171,35 +176,41 @@ class UserNarocilaStripe{
|
|||||||
$rowNarociloStripe = mysqli_fetch_array($sqlNarociloStripe);
|
$rowNarociloStripe = mysqli_fetch_array($sqlNarociloStripe);
|
||||||
|
|
||||||
|
|
||||||
// Preverimo, ce je bilo vse ok placano - POST request to /v2/checkout/orders
|
// Preverimo, ce je bilo vse ok placano
|
||||||
$request = new OrdersCaptureRequest($rowNarociloPaypal['transaction_id']);
|
try{
|
||||||
|
|
||||||
try {
|
|
||||||
// Poklicemo paypal api kjer preverimo placilo narocila
|
// Poklicemo paypal api kjer preverimo placilo narocila
|
||||||
$paypal_response = $this->paypal_client->execute($request);
|
$session = $this->stripeService->checkout->sessions->retrieve($rowNarociloStripe['session_id']);
|
||||||
}
|
}
|
||||||
catch (HttpException $e) {
|
catch(HttpException $e) {
|
||||||
$response['error'] = $e->getMessage();
|
$response['error'] = $e->getMessage();
|
||||||
$response['success'] = false;
|
$response['success'] = false;
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ce je session placan, posodobimo status narocila
|
||||||
|
if($session->payment_status == 'paid'){
|
||||||
|
|
||||||
// Posodobimo status narocila
|
$sqlNarocilo = sisplet_query("UPDATE user_access_stripe_charge
|
||||||
$sqlNarocilo = sisplet_query("UPDATE user_access_stripe_charge
|
SET status='PAID'
|
||||||
SET status='".$paypal_response->result->status."'
|
WHERE transaction_id='".$paypal_response->result->id."'
|
||||||
WHERE transaction_id='".$paypal_response->result->id."'
|
");
|
||||||
");
|
if (!$sqlNarocilo){
|
||||||
if (!$sqlNarocilo){
|
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
||||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
$response['success'] = false;
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$response['error'] = 'ERROR! SESSION IS NOT PAID!';
|
||||||
$response['success'] = false;
|
$response['success'] = false;
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Nastavimo narocilo na placano, aktiviramo paket in vrnemo id narocila
|
||||||
// Nastavimo narocilo na placano, aktiviramo paket in vrnemo racun
|
|
||||||
$narocilo = new UserNarocila();
|
$narocilo = new UserNarocila();
|
||||||
$payment_response = $narocilo->payNarocilo($this->narocilo['id']);
|
$payment_response = $narocilo->payNarocilo($this->narocilo['id']);
|
||||||
|
|
||||||
@ -212,8 +223,8 @@ class UserNarocilaStripe{
|
|||||||
$response['success'] = false;
|
$response['success'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$response['narocilo_id'] = $this->narocilo['id'];
|
|
||||||
|
|
||||||
|
$response['narocilo_id'] = $this->narocilo['id'];
|
||||||
|
|
||||||
$response['success'] = true;
|
$response['success'] = true;
|
||||||
|
|
||||||
@ -250,126 +261,4 @@ class UserNarocilaStripe{
|
|||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
// Placamo narocilo s kreditno kartico preko stripa
|
|
||||||
public function stripePayment($token){
|
|
||||||
|
|
||||||
$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'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Podatki za kartico potrebni za placilo
|
|
||||||
$cardDetails = array(
|
|
||||||
'email' => $this->narocilo['email'],
|
|
||||||
'token' => $token,
|
|
||||||
|
|
||||||
'amount' => $cena_za_placilo * 100,
|
|
||||||
'currency_code' => 'eur',
|
|
||||||
'item_name' => '1KA naročnina (paket '.strtoupper($this->narocilo['package_name']). ' - '.$this->narocilo['trajanje'].' '.$months_string.')',
|
|
||||||
'item_number' => $this->narocilo['id'],
|
|
||||||
);
|
|
||||||
|
|
||||||
// Izvedemo placilo - stripe response
|
|
||||||
try{
|
|
||||||
$stripeResponse = $this->chargeAmountFromCard($cardDetails);
|
|
||||||
}
|
|
||||||
catch (Exception $e){
|
|
||||||
$response['error'] = 'ERROR! '.$e->getMessage();
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vstavimo plačilo v bazo
|
|
||||||
$sqlNarocilo = sisplet_query("INSERT INTO user_access_stripe_charge
|
|
||||||
(narocilo_id, description, price, amount_paid, status, balance_transaction, time)
|
|
||||||
VALUES
|
|
||||||
('".$this->narocilo['id']."', '".$cardDetails['item_name']."', '".$cena_za_placilo."', '".($stripeResponse['amount'] / 100)."', '".$stripeResponse['status']."', '".$stripeResponse['balance_transaction']."', NOW())
|
|
||||||
");
|
|
||||||
if (!$sqlNarocilo){
|
|
||||||
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']);
|
|
||||||
$response['success'] = false;
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
$response = array();
|
|
||||||
|
|
||||||
// Placilo uspesno
|
|
||||||
if ($stripeResponse['amount_refunded'] == 0
|
|
||||||
&& empty($stripeResponse['failure_code'])
|
|
||||||
&& $stripeResponse['paid'] == 1
|
|
||||||
&& $stripeResponse['captured'] == 1
|
|
||||||
&& $stripeResponse['status'] == 'succeeded'
|
|
||||||
) {
|
|
||||||
|
|
||||||
$response['success'] = true;
|
|
||||||
$response['stripe_note'] = "Stripe payment is completed successfully. The TXN ID is " . $stripeResponse["balance_transaction"];
|
|
||||||
}
|
|
||||||
// Placilo ni uspelo
|
|
||||||
else{
|
|
||||||
$response['error'] = 'ERROR! Stripe payment failed. Failure code '.$stripeResponse['failure_code'];
|
|
||||||
$response['success'] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function chargeAmountFromCard($cardDetails){
|
|
||||||
|
|
||||||
// Iz emaila in tokena ustvarimo stranko
|
|
||||||
$customerDetailsAry = array(
|
|
||||||
'email' => $cardDetails['email'],
|
|
||||||
'source' => $cardDetails['token']
|
|
||||||
);
|
|
||||||
$customerResult = $this->addCustomer($customerDetailsAry);
|
|
||||||
$charge = new Charge();
|
|
||||||
|
|
||||||
// Napolnimo podatke za placilo
|
|
||||||
$cardDetailsAry = array(
|
|
||||||
'customer' => $customerResult->id,
|
|
||||||
|
|
||||||
'amount' => $cardDetails['amount'],
|
|
||||||
'currency' => $cardDetails['currency_code'],
|
|
||||||
'description' => $cardDetails['item_name'],
|
|
||||||
|
|
||||||
'metadata' => array(
|
|
||||||
'order_id' => $cardDetails['item_number']
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Izvedemo "charge"
|
|
||||||
$result = $charge->create($cardDetailsAry);
|
|
||||||
|
|
||||||
return $result->jsonSerialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function addCustomer($customerDetailsAry){
|
|
||||||
|
|
||||||
$customer = new Customer();
|
|
||||||
$customerDetails = $customer->create($customerDetailsAry);
|
|
||||||
|
|
||||||
return $customerDetails;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
@ -9343,3 +9343,7 @@ UPDATE misc SET value='20.10.29' WHERE what="version";
|
|||||||
ALTER TABLE user_access_narocilo CHANGE COLUMN podjetje_zavezanec podjetje_no_ddv ENUM('0', '1') NOT NULL DEFAULT '0' AFTER podjetje_davcna;
|
ALTER TABLE user_access_narocilo CHANGE COLUMN podjetje_zavezanec podjetje_no_ddv ENUM('0', '1') NOT NULL DEFAULT '0' AFTER podjetje_davcna;
|
||||||
|
|
||||||
UPDATE misc SET value='20.11.04' WHERE what="version";
|
UPDATE misc SET value='20.11.04' WHERE what="version";
|
||||||
|
|
||||||
|
ALTER TABLE user_access_stripe_charge ADD COLUMN session_id VARCHAR(100) NOT NULL DEFAULT '' AFTER id;
|
||||||
|
|
||||||
|
UPDATE misc SET value='20.11.11' WHERE what="version";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user