Při platbě bankovním převodem v eshopu, potřebujeme variabilní symbol. Použití čísla objednávky umožní konkurencí poznat kolik máte objednávek, proto je vhodné generovat náhodný číselný kód. Prestashop 1.6 při platbě bankovním převodem (bankwire) generuje řetězec znaků.
Ukázka z emailu co přijde zákazníkovi:
Nezapomeňte vložit označení vaší objednávky DKKPCAKGT jako informaci o platbě pro váš bankovní převod.
Systém používá pro generování identifikace funkci generateReference() která se odkazuje na funkci passwdGen(). Podívejme se na ni, najdete ji v “/classes/order/Order.php”
public static function generateReference()
{
return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
}
Funkce passwdGen() má různé návratové hodnoty. Podívejme se na ni, najdete ji v “/classes/Tools.php”
public static function passwdGen($length = 8, $flag = 'ALPHANUMERIC')
{
switch ($flag)
{
case 'NUMERIC':
$str = '0123456789';
break;
case 'NO_NUMERIC':
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
break;
default:
$str = 'abcdefghijkmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
break;
}
for ($i = 0, $passwd = ''; $i < $length; $i++)
$passwd .= Tools::substr($str, mt_rand(0, Tools::strlen($str) - 1), 1);
return $passwd;
}
Funkce generateReference() má defaultně nastaveno “NO_NUMERIC” a ta vrací pouze velká písmenka. Stačí tedy “NO_NUMERIC” změnit na “NUMERIC” a jako identifikace objednávky (variabilní symbol) se použije číselný kód.
Upravený kód pro generování varibilního symbolu:
public static function generateReference()
{
return strtoupper(Tools::passwdGen(9, 'NUMERIC'));
}
Zdravim!
Zmenu na cisla jsem provedl a nyni resim jak zamezit tomu aby order reference nezacinal jednou ci vice 0. Delku retezce jsem nastavil na 4 mista. Idealni by bylo pouze pridat pred toto cislo nejakou konstatni cislici.
Diky za prodrobnejsi info a pomoc!
S pozdravem,
ivan
Zvedl jsem to na 8 a nuly uz se neobjevuji a vse OK.
Ahoj,
měl bych dotaz. Postupoval jsem podle návodu a změnit číslo objednávky dle postupu.
Nyní bych potřeboval, aby variabilní symbol byl stejný jako číslo objednávky a nebylo to náhodně vygenerované číslo. Lze to?
Díky za radu. h