Codul de confirmare comenzi reprezinta cel mai important element în ecosistemul unui program de afiliere. Acesta are rolul de a contoriza și înregistra comenzile generate de către afiliații Profitshare și se implementează în pagina de „thank you” (confirmare înregistrare comandă), după ce se realizează o comanda/vânzare pe magazinul online al advertiserului.
Pentru a calcula corect comisioanele și pentru a raporta corect componenta comenzilor, acesta trebuie sa conține elemente de identificare a produselor de pe comanda. Din motive de siguranță, parametrii codului de confirmare trebuie criptați.
Este necesara plasarea codului de conversie cât mai sus în sursă (primele linii de cod).
1. Includeți codul din contul Profitshare în secțiunea Coduri Tracking similar cu cel de jos în toate paginile pentru setarea cookieului de conversie pe propriul domeniu:
<script type="text/javascript" src="//t.profitshare.ro/files_shared/tr/xxxx*.js"></script>
2. Includeți în pagina de "Thank You" următorul cod:
<iframe src="//c.profitshare.ro/ca/0/[advertiser_code]/p/[encrypted_params]?click_code=[click_code]" alt="" border="" width="1" height="1" style="border:none !important; margin:0px !important;"></iframe>
!!!Unde:
[advertiser_code] – reprezinta codul unic de identificare al advertiserului regasit în contul de advertiser sub denumirea Advertiser Tracking Code în secțiunea Coduri Tracking
[encrypted_params] – reprezinta un sir criptat (urmați modelul de mai jos)
[click_code] - reprezinta codul de cookie setat de codul de tracking (la pasul 1)
Sirul de criptare este urmatorul:
external_reference=[ext_reference]&product_code[]=[code]&product_price[]=[price]&product_name[]=[name]&product_link[]=[link]&product_category[]=[cat_code]&product_category_name[]=[cat_name]&product_part_no[]=[part_no]&product_brand[]=[brand_name]&product_brand_code[]=[brand_code]&product_qty[]=[qty]
!!! Nu este necesara includerea parantezelor drepte in jurul valorilor.
Unde:
[ext_reference]=> numarul de identificare interna a comenzii;
[code] => id-ul intern al produsului comandat;
[price]=> pretul fara TVA a produsului comandat (exceptie pentru firmele care nu platesc TVA: se trimite pretul intreg (afisat pe site));
[name] => numele produsului comandat;
[link]=> adresa URL a produsului comandat;
[cat_code]=> id-ul intern al categoriei de produse din care face parte produsul comandat;
[cat_name]=> numele categoriei de produse din care face parte produsul comandat;
[part_no]=> codul unic de identificare al produsului comandat (Part number);
[brand_name] => numele producatorului/brandului produsului comandat;
[brand_code]=> id-ul intern al producatorului/brandului produsului comandat;
[qty]=> cantitatea comandata.
In cazul in care sunt mai multe produse pe aceeasi comanda, sirul se va continua incepand cu parametrul product_code. De exemplu, pentru o comanda cu 3 produse, sirul de criptat va fi urmatorul:
external_reference=[ext_reference]&product_code[]=[code1]&product_price[]=[price1]&product_name[]=[name1]&product_link[]=[link1]&product_category[]=[cat_code1]&product_category_name[]=[cat_name1]&product_part_no[]=[part_no1]&product_brand[]=[brand_name1]&product_brand_code[]=[brand_code1]&product_qty[]=[qty1]&product_code[]=[code2]&product_price[]=[price2]&product_name[]=[name2]&product_link[]=[link2]&product_category[]=[cat_code2]&product_category_name[]=[cat_name2]&product_part_no[]=[part_no2]&product_brand[]=[brand_name2]&product_brand_code[]=[brand_code2]&product_qty[]=[qty2]&product_code[]=[code3]&product_price[]=[price3]&product_name[]=[name3]&product_link[]=[link3]&product_category[]=[cat_code3]&product_category_name[]=[cat_name3]&product_part_no[]=[part_no3]&product_brand[]=[brand_name3]&product_brand_code[]=[brand_code3]&product_qty[]=[qty3]
Exemplu de implementare PHP:
<?php
$clickCodeName = 'Numele cookie-ului setat in contul Profitshare in zona Alte Setari > Variabile URL personalizare > Cod Click';
$advertiserCode = 'Codul unic de identificare al advertiserului Coduri Tracking > Advertiser Tracking code';
$key = 'Cheie de criptare: regasita in contul de advertiser in sectiunea Coduri Tracking';
// In exemplul de mai jos regasiti o comanda cu 2 produse
$products = [
"external_reference" => 'ID Comanda',
"product_code" => ['Id Produs 1', 'Id Produs 2'],
"product_part_no" => ['partNoProdus1', 'partNoProdus2'],
"product_price" => [100.40, 320.00],
"product_name" => ["Produs de test 1", "Produs de test 2"],
"product_link" => ["https://www.emag.ro/1", "https://www.emag.ro/2"],
"product_category" => ["codCategorie1", "codCategorie2"],
"product_category_name" => ["Nume Categorie 1", "Nume Categorie 2"],
"product_brand_code" => ["codBrand1", "codBrand2"],
"product_brand" => ["Nume Brand 1", "Nume Brand 2"],
"product_qty" => [1, 3]
];
$queryString = http_build_query($products);
function profitshareEncrypt($plaintext, $key)
{
$cipher = "AES-128-CBC";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$encode = base64_encode( $iv.$hmac.$ciphertext_raw );
$ciphertext = bin2hex($encode);
return $ciphertext;
}
$encryptedParams = profitshareEncrypt($queryString, $key);
$firstSideCookie = isset($_COOKIE[$clickCodeName])?"?click_code={$_COOKIE[$clickCodeName]}":"";
echo '<iframe src="//c.profitshare.ro/ca/0/'.$advertiserCode.'/p/'.$encryptedParams . $firstSideCookie .'" alt="" border="" width="1" height="1" style="border:none !important; margin:0px !important;"></iframe>';
Criptarea pentru implementare JavaScript
<script type="text/javascript">
function profitshareEncrypt(plaintext, key)
{
let iv = CryptoJS.enc.Utf8.parse(Math.round((Math.pow(36, 16 + 1) - Math.random() * Math.pow(36, 16))).toString(36).slice(1));
let subKey = CryptoJS.enc.Utf8.parse(key.substring(0, 16));
key = CryptoJS.enc.Utf8.parse(key);
let chiperData = CryptoJS.AES.encrypt(plaintext, subKey, {
iv: iv,
mode: CryptoJS.mode.CBC,
});
let hash = CryptoJS.HmacSHA256(chiperData.ciphertext, key);
let hmac = atob(hash.toString(CryptoJS.enc.Base64));
iv = atob(iv.toString(CryptoJS.enc.Base64));
let chiperRaw = atob(chiperData.toString());
return profitshareBin2hex(btoa(iv + hmac + chiperRaw));
}
function profitshareBin2hex(s){
var v,i, f = 0, a = [];
s += '';
f = s.length;
for (i = 0; i<f; i++) {
a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");
}
return a.join('');
}
console.log(profitshareEncrypt('PLAIN TEXT' , 'ENCRYPTION KEY'));
// atob function for nodejs
// atob = function(str:any){ return Buffer.from(str, 'base64').toString(); }
// btoa function for nodejs
// btoa = function(str:any){ return Buffer.from(str, 'binary').toString('base64'); };
</script>
Observații
- Nu se trimit: produsele cadou, esantioane, vouchere, taxe de livrare.
Comentarii
0 comentarii
Articolul este închis pentru comentarii.