WebSite X5Help Center

 
Luca E.
Luca E.
User

Coupon e cookie  it

Autor: Luca E.
Visitado 1199, Seguidores 1, Compartilhado 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.

Publicado em
8 RESPOSTAS - 2 ÚTEIS
 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

Ler mais
Publicado em de  lemonsong  
Luca E.
Luca E.
User
Autor

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

Ler mais
Publicado em de 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

Ler mais
Publicado em de  lemonsong  
Luca E.
Luca E.
User
Autor

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

Ler mais
Publicado em de Luca E.
Luca E.
Luca E.
User
Autor

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

quindi prima dell'apertura del tag HTML aggiungere anche:

check_extracoupon();

Ler mais
Publicado em de 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.

Ler mais
Publicado em de  lemonsong  
Luca E.
Luca E.
User
Autor

Grazie lemon.

Lo hai testato?

Ler mais
Publicado em de Luca E.
 lemonsong  
 lemonsong  
User

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

Se ci proverò mi farò sicuramente vivo.

Ler mais
Publicado em de  lemonsong