in eCommerce platforms/Adobe Magento/src/code/local/Microsoft/Dfp/controllers/Checkout/OnepageController.php [271:365]
private function generatePurchasePayload($order, $assessmentType)
{
$quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
$userId = $order->customer_email;
if ($quote->getCheckoutMethod(true) == 'guest') {
$userId = $this->dfp->GUID();
}
// Shipping address details
$shippingAddress = $order->getShippingAddress();
$shipStreet = $shippingAddress->getStreet();
$shippingData = $shippingAddress->getData();
$orderShippingAddress = array(
'firstName' => $shippingData['firstname'],
'lastName' => $shippingData['lastname'],
'phoneNumber' => $shippingData['telephone'],
'street1' => $shipStreet[0],
'street2' => count($shipStreet) > 1 ? $shipStreet[1] : null,
'city' => $shippingAddress->city,
'state' => $shippingAddress->region,
'zipCode' => $shippingAddress->postcode,
'country' => $shippingAddress->countryId
);
// User Details
$timeZone = (Mage::getSingleton('core/session')->getCustomerTimeZone()) / 60;
if ($timeZone > 0)
{
$timeZone = '-' . $timeZone;
}
else if ($timeZone < 0)
{
$timeZone = '+' . $timeZone;
}
$user = array(
'userId' => $userId,
'firstName' => $order->customer_firstname,
'lastName' => $order->customer_lastname,
'country' => $shippingAddress->countryId,
'zipCode' => $shippingAddress->postcode,
'timeZone' => $timeZone,
'language' => strtoupper(substr(Mage::app()->getLocale()->getLocaleCode(), 0, 2)),
'phoneNumber' => $shippingData['telephone'],
'email' => $order->customer_email,
'isEmailValidated' => false,
'isPhoneNumberValidated' => false
);
// Device FingerPrinting Details
$deviceContext = array(
'deviceContextId' => Mage::getSingleton('core/session')->getFptDfpSessionId() ?? $this->dfp->GUID(),
'ipAddress' => getenv('HTTP_CLIENT_IP') ?? getenv('HTTP_X_FORWARDED_FOR') ?? getenv('HTTP_X_FORWARDED') ?? getenv('HTTP_FORWARDED_FOR') ?? getenv('HTTP_FORWARDED') ?? getenv('REMOTE_ADDR'),
'provider' => Microsoft_Dfp_Helper_Data::DEVICE_CONTEXT_PROVIDER_DFP
);
// Billing Address Details
$paymentInstrumentList = $this->GetPaymentInstrumentDetails($order);
// Cart Details
$productList = array();
foreach ($order->getAllItems() as $item) {
$productList[] = array(
"productId" => $item->getProduct()->getId(),
"purchasePrice" => $item->getPrice(),
"quantity" => intval($item->getQtyOrdered()),
"productName" => $item->getName(),
"sku" => $item->getSku(),
"currency" => $order->getOrderCurrencyCode(),
"isRecurring" => false
);
}
$_metadata = array(
"trackingId" => $this->dfp->GUID(),
"merchantTimeStamp" => date('c')
);
return array(
'purchaseId' => Mage::getSingleton('checkout/session')->getLastRealOrderId(),
'assessmentType' => $assessmentType,
'customerLocalDate' => Mage::getSingleton('core/session')->getcustomerLocalDate(),
'merchantLocalDate' => date('c'),
'totalAmount' => $order->getGrandTotal(),
'salesTax' => $order->getTaxAmount(),
'currency' => $order->getOrderCurrencyCode(),
'shippingMethod' => Microsoft_Dfp_Helper_Data::PRODUCT_SHIPPING_STANDARD,
'user' => $user,
'deviceContext' => $deviceContext,
'shippingAddress' => $orderShippingAddress,
'paymentInstrumentList' => $paymentInstrumentList,
'productList' => $productList,
'_metadata' => $_metadata
);
}