WebSite X5Help Center

 
Luca E.
Luca E.
User

Coupon e cookie  it

Автор: Luca E.
Просмотрено 1194, Подписчики 1, Размещенный 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.

Размещено
8 Ответы - 2 Полезно
 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

Читать больше
Размещено От  lemonsong  
Luca E.
Luca E.
User
Автор

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

Читать больше
Размещено От 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

Читать больше
Размещено От  lemonsong  
Luca E.
Luca E.
User
Автор

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

Читать больше
Размещено От Luca E.
Luca E.
Luca E.
User
Автор

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

quindi prima dell'apertura del tag HTML aggiungere anche:

check_extracoupon();

Читать больше
Размещено От 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.

Читать больше
Размещено От  lemonsong  
Luca E.
Luca E.
User
Автор

Grazie lemon.

Lo hai testato?

Читать больше
Размещено От Luca E.
 lemonsong  
 lemonsong  
User

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

Se ci proverò mi farò sicuramente vivo.

Читать больше
Размещено От  lemonsong