Skip to content

Instantly share code, notes, and snippets.

@jsstoni
Last active June 15, 2021 14:29
Show Gist options
  • Save jsstoni/bba076cd8bf62fe1f4c223be616f912f to your computer and use it in GitHub Desktop.
Save jsstoni/bba076cd8bf62fe1f4c223be616f912f to your computer and use it in GitHub Desktop.
<?php
function getRandomString($lng = 12) {
$charset = '0123456789';
$randString = "";
while(strlen($randString) < $lng) {
$randChar = substr(str_shuffle($charset), mt_rand(0, strlen($charset)), 1);
$randString .= $randChar;
}
return $randString;
}
function sendGoogleEvent($ga_id, $items, $order_id, $amount)
{
if ($order_id != $_SESSION['ga_event']) {
eventGoogle($ga_id, $items, $order_id, $amount);
}
}
function setFieldsGoogle($ga_id, $items, $order_id, $amount) {
$data = json_decode($items, true);
$source = json_decode($_SESSION['ga_utm'], true);
$fields = array(
'v' => 1,
'tid'=> $ga_id,
'cid' => (!empty($_COOKIE['_ga'])) ? str_replace("GA1.2.", "", $_COOKIE['_ga']) : getRandomString(8),
't' => 'event',
'dl' => 'https://ecomm-space.violetanailsspa.com',
'ec' => 'Ecommerce',
'ea' => 'Purchase',
'ni' => 0,
'cd2' => $source['utm_source'],
'cd3' => $source['utm_medium'],
'cm1' => 0,
'pa' => 'purchase',
'ti' => $order_id,
'ta' => 'https://ecomm-space.violetanailsspa.com',
'tr' => $amount,
'tt' => 0,
'ts' => 0,
'tcc' => 0,
'cu' => 'USD'
);
foreach($data as $key => $val) {
$fields['pr'.($key+1)."nm"] = $val['name'];
$fields['pr'.($key+1)."id"] = $val['id'];
$fields['pr'.($key+1)."pr"] = $val['price'];
$fields['pr'.($key+1)."qt"] = $val['quantity'];
}
return $fields;
}
function eventGoogle($ga_id, $pr, $order_id, $amount) {
$strCookie='';
foreach ($_COOKIE as $key => $value) {
$strCookie .= $key.'='.$value.'; ';
}
$fields = setFieldsGoogle($ga_id, $pr, $order_id, $amount);
$fields_string = '';
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, utf8_encode($fields_string));
curl_setopt($ch, CURLOPT_URL, "https://google-analytics.com/collect");
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, $strCookie );
$result = curl_exec($ch);
curl_close($ch);
$_SESSION['ga_event'] = $order_id;
}
/*
Usage usage:
$amount = number_format($_SESSION['amount'], 2, ".", "");
$order_id = $_SESSION['order_id'];
$items = $_SESSION['dataItems'];
sendGoogleEvent('UA-199153759-1', $items, $order_id, $amount);
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment