private function generatePurchasePayload()

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
		);
	}