Browse Source

save order

feature/cart
Dslak 4 years ago
parent
commit
80668e7ccf
  1. 50
      api/order_add.php
  2. 2
      api/user_add.php
  3. 18
      components/checkout/checkout.html
  4. 51
      components/checkout/checkout.js
  5. 3
      components/checkout/checkout.scss
  6. 32
      src/js/index.js

50
api/order_add.php

@ -0,0 +1,50 @@
<?php
session_start();
include_once './config.php';
include_once './database.php';
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
$databaseService = new DatabaseService();
$conn = $databaseService->getConnection();
$data = json_decode(file_get_contents("php://input"));
$shipping = array(
"full_name" => $data->profile->first_name." ".$data->profile->last_name,
"address" => $data->address,
"city" => $data->city,
"zip_code" => $data->zip_code,
"province" => $data->province
);
$query = "INSERT INTO `orders`
(`id`, `uid`, `date`, `items`, `total`, `status`, `token`, `shipping`, `traking`)
VALUES (NULL, ".intval($data->uid).", NOW(), '".json_encode($data->cart)."', ".floatval($data->total).",
'PAID',
'".trim($data->token)."',
'".json_encode($shipping)."', '')";
$stmt = $conn->prepare($query);
if($stmt->execute()) {
http_response_code(200);
echo json_encode(
array(
"status" => 200,
"id" => $conn->lastInsertId()
));
} else {
http_response_code(400);
echo json_encode(
array(
"status" => 400,
"message" => "Error inserting new order"
));
}
?>

2
api/user_add.php

@ -27,7 +27,7 @@ if($stmt->execute()) {
echo json_encode(
array(
"status" => 200,
"profile" => $data
"id" => $conn->lastInsertId()
));
} else {
http_response_code(400);

18
components/checkout/checkout.html

@ -30,11 +30,23 @@
<div class="container">
<div class="row">
<?php
if(isset($_SESSION['AUTH'])) {
echo "<input type=\"hidden\" class=\"uid\" value=\"".$_SESSION['AUTH']['id']."\">";
}
?>
<div class="col-12 col-md-8 pb-5">
<span class="title">Dettagli fatturazione</span>
<span class="subtitle">
<span class="question <?= isset($_SESSION['AUTH']) ? 'd-none' : '';?>">Sei già nostro cliente?</span>
<span class="toggle-login <?= isset($_SESSION['AUTH']) ? 'd-none' : '';?>">Accedi</span>
<span class="subtitle <?= isset($_SESSION['AUTH']) ? 'd-none' : '';?>">
<span class="question>">Sei già nostro cliente?</span>
<span class="toggle-login">Accedi</span>
</span>
<span class="subtitle <?= isset($_SESSION['AUTH']) ? '' : 'd-none';?>">
<span class="question>">Hai effettuato l'accesso come
<?= $_SESSION['AUTH']['first_name']." ".$_SESSION['AUTH']['last_name'];?>.</span>
<a href="/checkout/logout" class="toggle-logout">Esci</a>
</span>
<form class="login-form <?= isset($_SESSION['AUTH']) ? 'd-none' :'';?>" action="/checkout" method="POST">

51
components/checkout/checkout.js

@ -12,9 +12,12 @@ $(document).ready( () => {
const toggleQuestion = component.find('.question')
const loginForm = component.find('.login-form')
const newUserForm = component.find('.new-user-form')
const loggedUid = component.find('.uid').length ? component.find('.uid').val() : null
let hasExtraAddress = false
let isNewUser = newUserForm.hasClass('logged') ? false : true
place.off('.click').on('click.click', () => {
checkForm()
})
@ -140,8 +143,8 @@ $(document).ready( () => {
window.Spinner('show')
Apis.getCart().then( (data) => {
const cartItems = data.cart
const placeOrderCall = (profile, cartItems, token, uid) => {
let amount = 0
let shipping = 10
@ -162,24 +165,38 @@ $(document).ready( () => {
}
}]
Apis.getToken().then( (data) => {
const token = data.access_token
Apis.placeOrder(cart, token).then( (data) => {
const capture = data.links.find(item => item.rel == 'capture')
const approve = data.links.find(item => item.rel == 'approve')
if(isNewUser) {
Apis.addUser(profile).then( (data) => {
console.log(data)
window.location = approve.href
}).catch( (error) => {
console.error(error)
})
} else {
window.location = approve.href
}
Apis.checkout(cart, token, uid).then( (data) => {
const capture = data.links.find(item => item.rel == 'capture')
const approve = data.links.find(item => item.rel == 'approve')
Apis.saveOrder(profile, cartItems, data.id, uid, amount).then( (data) => {
window.location = approve.href
}).catch( (error) => {
console.error(error)
})
}).catch( (error) => {
console.error(error)
})
}
Apis.getCart().then( (data) => {
const cartItems = data.cart
Apis.getToken().then( (data) => {
const token = data.access_token
if(isNewUser) {
Apis.addUser(profile).then( (data) => {
placeOrderCall(profile, cartItems, token, data.id)
}).catch( (error) => {
console.error(error)
})
} else {
placeOrderCall(profile, cartItems, token, loggedUid)
}
}).catch( (error) => {
console.error(error)
})

3
components/checkout/checkout.scss

@ -18,7 +18,8 @@
height: 40px;
}
.toggle-login {
.toggle-login,
.toggle-logout {
color: $brown;
cursor: pointer;
}

32
src/js/index.js

@ -105,7 +105,7 @@ window.Apis.getToken = () => {
})
}
window.Apis.placeOrder = (cart, token) => {
window.Apis.checkout = (cart, token) => {
const data = {
intent: 'CAPTURE',
application_context: {
@ -135,3 +135,33 @@ window.Apis.placeOrder = (cart, token) => {
})
})
}
window.Apis.saveOrder = (profile, cart, token, uid, total) => {
const body = {
uid: uid,
token: token,
cart: cart,
profile: profile,
total: total
}
return new Promise((resolve, reject) => {
$.ajax({
type: 'POST',
url: apiUrl + `/order_add.php?buster=${new Date().getTime()}`,
data: JSON.stringify(body),
dataType: 'json',
async: true,
contentType: 'application/json; charset=utf-8',
success: (data) => {
resolve(data)
},
error: (error) => {
reject(error)
}
})
})
}

Loading…
Cancel
Save