WebSite X5Help Center

 
Luca E.
Luca E.
User

Coupon e cookie  it

Autore: Luca E.
Visite 1219, 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
8 RISPOSTE - 2 UTILI
 lemonsong  
 lemonsong  
User

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

Leggi di più
Postato il da  lemonsong  
Luca E.
Luca E.
User
Autore

Ciao lemonsong, alla fine ci sono riuscito con del codice PHP a parte. Ho dato un' occhiata ai tuoi tutorial, interessanti laughing

Se vuoi ti passo questo così potresti implementarlo

Leggi di più
Postato il da Luca E.
 lemonsong  
 lemonsong  
User

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) innocent

Leggi di più
Postato il da  lemonsong  
Luca E.
Luca E.
User
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

Leggi di più
Postato il da Luca E.
Luca E.
Luca E.
User
Autore

ho dimenticato di inserire il richiamo alla funzione check_extracoupon();

quindi prima dell'apertura del tag HTML aggiungere anche:

check_extracoupon();

Leggi di più
Postato il da Luca E.
 lemonsong  
 lemonsong  
User
Luca E.
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.

Dal tuo primo post avevo capito altro. Hai fatto un lavorone.

Leggi di più
Postato il da  lemonsong  
Luca E.
Luca E.
User
Autore

Grazie lemon.

Lo hai testato?

Leggi di più
Postato il da Luca E.
 lemonsong  
 lemonsong  
User

Ho la demo della 2020, non so se mi permetterà di farlo.

Se ci proverò mi farò sicuramente vivo.

Leggi di più
Postato il da  lemonsong