Coupon e cookie
Autore: Luca E.
Visite 1193,
Followers 1,
Condiviso 0
Buongiorno, è possibile rendere attivo un codice coupon solo se è presente un determinato cookie?
O magari rendere visibile il campo coupon nel carrello alla stessa condizione del cookie?
Ho provato con Jquery ma non ho avuto risultati.
Postato il
Questo cookie chi lo scrive? WS? Uno script terzo?
Comunque (quasi) tutto è possibile, se posti un esempio faciliti chi ti vuole/può aiutare.
Se non sei proprio a "digiuno di codici", puoi anche sfruttare la gestione dei cookie di WS, scrivendo una roba del genere:
if ($.imCookie("nomedelcookie")) {
//codice che soddisfa la condizione
}
Ovviamente questa è solo la condizione.
Un link utile: https://www.w3schools.com/js/js_cookies.asp
Autore
Ciao lemonsong, alla fine ci sono riuscito con del codice PHP a parte. Ho dato un' occhiata ai tuoi tutorial, interessanti
Se vuoi ti passo questo così potresti implementarlo
Bene, potresti postare qui quello che hai fatto per chiunque abbia la tua stessa necessità.
Hai "ravanato" tra la polvere del magazzino? OK, ma adesso lavati accuratamente le mani (covid19)
Autore
OK. Io ho impostato gli script in modo da poter offrire un coupon di benvenuto generico, con lo sconto del 20% sul totale dell'ordine che scade il 30/09/2020, solo sul primo acquisto.
Innanzitutto prima dell'apertura del tag HTML aggiungere:
<?php
$qblog = $_SERVER['PHP_SELF'];
if (strpos($qblog, '/blog/') !== false || strpos($qblog, '/cart/') !== false)
$qpath = '../';
else
$qpath = '';
include ($qpath . "res/functions.php");
if($username) {
$checkcp = encode($username);
setcookie('checkCP', $checkcp, time() + (3600), "/");
}
$file = $qpath . "res/x5engine.php";
$url = "
@include_once \"x5coupon.php\" ;";
$text = file_get_contents($file);
if(strpos($text, $url) === false) {
file_put_contents($file, $url, FILE_APPEND);
}
?>
creare i file 'x5coupon.php' e 'functions.php' ed inserirli nella cartella /res/ direttamente sul server
<?php
//questo è il file x5coupon.php
$check_coupons = $_COOKIE['extraCP'];
$couponData = array();
$couponData['cart'] = array(
'WELCOME' => array('type' => 'relative', 'amount' => 0.2, 'apply_on_shipping_and_payment' => FALSE, 'end_time' => 1601427643)
);
$couponData['products'] = array();
if ($_COOKIE['checkCP']) {
if ($check_coupons != '1') {
$ecommerce->setCouponData($couponData);
}
}
<?php
//questo è il file function.php
$conn = new mysqli(
"localhost",
"userDB",
"passwordDB",
"yourDB"
);
mysqli_connect_errno();
$ck_checkCP = decode($_COOKIE['checkCP']);
function encode($value) {
if (!$value) {
return false;
}
$key = sha1('xxxxxxxxxxEnCRypT10nK#Y!oiSRNn');
$strLen = strlen($value);
$keyLen = strlen($key);
$j = 0; $crypttext = '';
for ($i = 0; $i < $strLen; $i++) {
$ordStr = ord(substr($value, $i, 1));
if ($j == $keyLen) { $j = 0;
}
$ordKey = ord(substr($key, $j, 1)); $j++;
$crypttext .= strrev(base_convert(dechex($ordStr + $ordKey), 16, 36));
} return $crypttext;
}
function decode($value) {
if (!$value) {
return false;
}
$key = sha1('xxxxxxxxxxEnCRypT10nK#Y!oiSRNn');
$strLen = strlen($value);
$keyLen = strlen($key);
$j = 0; $decrypttext = '';
for ($i = 0; $i < $strLen; $i += 2) {
$ordStr = hexdec(base_convert(strrev(substr($value, $i, 2)), 36, 16));
if ($j == $keyLen) {
$j = 0;
} $ordKey = ord(substr($key, $j, 1));
$j++;
$decrypttext .= chr($ordStr - $ordKey);
}
return $decrypttext;
}
function check_extracoupon() {
global $conn;
global $ck_checkCP;
$ret = "1";
$sql = "SELECT o.id, a.value, o.ts, o.price_plus_vat, o.currency, o.shipping_name, o.coupon, o.coupon_value, o.status
FROM "*t_orders*" AS o
JOIN "*t_invoice_addresses*" AS a ON o.id = a.order_id
WHERE o.coupon = 'WELCOME'
AND a.field_id = 'Email'
AND a.value = '$ck_checkCP'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$ret = "1";
} else {
$ret = "0";
}
setcookie('extraCP', $ret, time() + (3600), "/");
return true;
}
?>
N.B.: nel file functions.php sostituire "*t_orders*" con la vostra tabella orders e "*t_invoice_addresses*" con la vostra tabella invoice_addresses
Spero di non aver commesso errori nel modificare i file, in quanto il mio progetto originale é un pò più complesso.
Se lo testate datemi l'esito per favore :D
Autore
ho dimenticato di inserire il richiamo alla funzione check_extracoupon();
quindi prima dell'apertura del tag HTML aggiungere anche:
check_extracoupon();
Dal tuo primo post avevo capito altro. Hai fatto un lavorone.
Autore
Grazie lemon.
Lo hai testato?
Ho la demo della 2020, non so se mi permetterà di farlo.
Se ci proverò mi farò sicuramente vivo.