/** * extraxcts the according Barclaycard owner* parameter * * @param Mage_Sales_Model_Quote $quote * @param Mage_Customer_Model_Address_Abstract $billingAddress * * @return array */ public function getOwnerParams(Mage_Sales_Model_Quote $quote, Mage_Customer_Model_Address_Abstract $billingAddress) { $ownerParams = array(); if ($this->getConfig()->canSubmitExtraParameter($quote->getStoreId())) { $ownerParams = array('OWNERADDRESS' => str_replace("\n", ' ', $billingAddress->getStreet(1)), 'OWNERTOWN' => $billingAddress->getCity(), 'OWNERZIP' => $billingAddress->getPostcode(), 'OWNERTELNO' => $billingAddress->getTelephone(), 'OWNERCTY' => $billingAddress->getCountry(), 'ECOM_BILLTO_POSTAL_POSTALCODE' => $billingAddress->getPostcode()); } return $ownerParams; }
/** * @param Mage_Customer_Model_Address_Abstract $address * * @return Payone_Api_Request_AddressCheck */ public function mapFromAddress(Mage_Customer_Model_Address_Abstract $address) { $request = $this->getFactory()->getRequestVerificationAddressCheck(); $helper = $this->helper(); $configGlobal = $this->getConfigGlobal(); $config = $this->getConfig(); // @todo move addressCheckType detection to method // @todo add option to configure used Adresschecktype externaly if ($address->getAddressType() === 'billing') { $request->setAddresschecktype($config->getCheckBilling()); // check if billing is used for shipping and shipping-address has to be checked if ($address->getUseForShipping() === true and $config->mustCheckShipping()) { $request->setAddresschecktype($config->getCheckShipping()); } } elseif ($address->getAddressType() === 'shipping') { $request->setAddresschecktype($config->getCheckShipping()); } else { throw new Exception('Invalid Address Check Type'); } $request->setAid($configGlobal->getAid()); $request->setMid($configGlobal->getMid()); $request->setMode($config->getMode()); $request->setPortalid($configGlobal->getPortalid()); $request->setKey($configGlobal->getKey()); $request->setCity($address->getCity()); $request->setCompany($address->getCompany()); $request->setCountry($address->getCountry()); $request->setFirstname($address->getFirstname()); $request->setLastname($address->getLastname()); $request->setIntegratorName('Magento'); $request->setIntegratorVersion($helper->getMagentoVersion()); $request->setSolutionName('votum'); $request->setSolutionVersion($helper->getPayoneVersion()); $request->setEncoding('UTF-8'); $request->setLanguage($helper->getDefaultLanguage()); $request->setStreet($address->getStreetFull()); $request->setTelephonenumber($address->getTelephone()); $countryId = $address->getCountryId(); if ($countryId == "US" || $countryId == "CA") { $request->setState($address->getRegionCode()); } $request->setZip($address->getPostcode()); return $request; }
/** * @param Mage_Customer_Model_Address_Abstract $address * @return Payone_Api_Request_Consumerscore */ public function mapFromAddress(Mage_Customer_Model_Address_Abstract $address) { $factory = $this->getFactory(); $request = $factory->getRequestVerificationConsumerScore(); $helper = $this->helper(); $configGlobal = $this->getConfigGlobal(); $config = $this->getConfig(); $request->setConsumerscoretype($config->getType()); $request->setAddresschecktype(Payone_Api_Enum_AddressCheckType::NONE); $request->setAid($configGlobal->getAid()); $request->setMid($configGlobal->getMid()); $request->setMode($config->getMode()); $request->setPortalid($configGlobal->getPortalid()); $request->setKey($configGlobal->getKey()); $request->setCity($address->getCity()); $request->setCompany($address->getCompany()); $request->setCountry($address->getCountry()); $request->setFirstname($address->getFirstname()); $request->setLastname($address->getLastname()); $request->setIntegratorName('Magento'); $request->setIntegratorVersion($helper->getMagentoVersion()); $request->setSolutionName('votum'); $request->setSolutionVersion($helper->getPayoneVersion()); if ($customerId = $address->getCustomerId()) { $customer = $factory->getModelCustomer(); $customer->load($customerId); $date = $customer->getDob(); $date = date('Ymd', strtotime($date)); $request->setBirthday($date); } $request->setEncoding('UTF-8'); $request->setLanguage($helper->getDefaultLanguage()); $request->setStreet($address->getStreetFull()); $request->setTelephonenumber($address->getTelephone()); $request->setZip($address->getPostcode()); return $request; }
/** * Validates the address with the AvaTax validation API. * Returns true on success and an array with an error on failure. * * @return array|bool * @throws OnePica_AvaTax_Model_Avatax_Address_Exception */ public function validate() { if (!$this->_mageAddress) { throw new OnePica_AvaTax_Model_Avatax_Address_Exception($this->__('An address must be set before validation.')); } /** @var Mage_Sales_Model_Quote $quote */ $quote = $this->_mageAddress->getQuote(); $isAddressValidationOn = $this->_getDataHelper()->isAddressValidationOn($this->_mageAddress, $this->_storeId); $isAddressNormalizationOn = $this->_getDataHelper()->isAddressNormalizationOn($this->_mageAddress, $this->_storeId); $isAddressActionable = $this->_getDataHelper()->isAddressActionable($this->_mageAddress, $quote->getStoreId()); //if there is no use cases for AvaTax services, return address as valid without doing a lookup if (!$isAddressValidationOn && !$isAddressNormalizationOn && !$isAddressActionable) { return true; } //lookup in AvaTax (with caching) $key = $this->_mageAddress->getCacheHashKey(); if (array_key_exists($key, $this->_cache)) { $result = unserialize($this->_cache[$key]); } elseif ($this->_mageAddress->getPostcode() && $this->_mageAddress->getPostcode() != '-') { $checkFieldsResult = $this->_checkFields(); if ($checkFieldsResult) { return $checkFieldsResult; } $result = $this->_sendAddressValidationRequest(); $this->_cache[$key] = serialize($result); } else { $errors = array(); $errors[] = $this->__('Invalid ZIP/Postal Code.'); return $errors; } $this->_addressNormalization($isAddressNormalizationOn, $result); $addressValidationResult = $this->_addressValidation($isAddressValidationOn, $isAddressActionable, $result); if ($addressValidationResult) { return $addressValidationResult; } return true; }
/** * @param Mage_Customer_Model_Address_Abstract $address * @return array */ protected function _getAddressData(Mage_Customer_Model_Address_Abstract $address) { $data = array(); if ($address) { $data['name'] = $address->getName(); $data['address'] = $address->getStreetFull(); $data['city'] = $address->getCity(); $data['postcode'] = $address->getPostcode(); $data['country'] = $address->getCountry(); $data['state'] = $address->getRegion() ? $address->getRegion() : ''; } return $data; }
/** * generates hash from address data * * @param Mage_Sales_Model_Quote_Address $address the address data to hash * * @returns sha1 hash of address */ public function generateAddressHash(Mage_Customer_Model_Address_Abstract $address) { $addressString = $address->getFirstname(); $addressString .= $address->getMiddlename(); $addressString .= $address->getLastname(); $addressString .= $address->getCompany(); $street = $address->getStreetFull(); if (is_array($street)) { $street = implode('', $street); } $addressString .= $street; $addressString .= $address->getPostcode(); $addressString .= $address->getCity(); $addressString .= $address->getCountryId(); return sha1($addressString); }
/** * Transfer physical address data from the order address to the physical * address payload. * * @param Mage_Customer_Model_Address_Abstract * @param IPhysicalAddress * @return IPhysicalAddress */ protected function _transferPhysicalAddressData(Mage_Customer_Model_Address_Abstract $address, IPhysicalAddress $physicalAddress) { return $physicalAddress->setLines($address->getStreet(-1))->setCity($address->getCity())->setMainDivision($address->getRegionCode())->setCountryCode($address->getCountryId())->setPostalCode($address->getPostcode())->setPhone($address->getTelephone()); }
/** * Extract array of address data - street, city, region code, etc. from an address object * @param Mage_Customer_Model_Address_Abstract $address Address object to pull data from * @return array Extracted data */ protected function _extractAddressData(Mage_Customer_Model_Address_Abstract $address) { return array('street' => $address->getStreet(), 'city' => $address->getCity(), 'region_code' => $address->getRegionCode(), 'country_id' => $address->getCountryId(), 'postcode' => $address->getPostcode()); }
/** * Transfer data from a Magento customer address to a ROM SDK * PhysicalAddress payload. * * @param Mage_Customer_Model_Address_Abstract * @param IPhysicalAddress * @return IPhysicalAddress */ public function customerAddressToPhysicalAddressPayload(Mage_Customer_Model_Address_Abstract $address, IPhysicalAddress $payload) { return $payload->setLines($address->getStreetFull())->setCity($address->getCity())->setMainDivision($address->getRegionId())->setCountryCode($address->getCountryId())->setPostalCode($address->getPostcode()); }
/** * Validates the address with the AvaTax validation API. * Returns true on success and an array with an error on failure. * * @return array|bool * @throws OnePica_AvaTax_Model_Avatax_Address_Exception */ public function validate() { if (!$this->_mageAddress) { throw new OnePica_AvaTax_Model_Avatax_Address_Exception($this->__('An address must be set before validation.')); } /** @var OnePica_AvaTax_Model_Config $config */ $config = Mage::getSingleton('avatax/config')->init($this->_storeId); /** @var Mage_Sales_Model_Quote $quote */ $quote = $this->_mageAddress->getQuote(); $isAddressValidationOn = $this->_getDataHelper()->isAddressValidationOn($this->_mageAddress, $this->_storeId); $isAddressNormalizationOn = $this->_getDataHelper()->isAddressNormalizationOn($this->_mageAddress, $this->_storeId); $isAddressActionable = $this->_getDataHelper()->isAddressActionable($this->_mageAddress, $quote->getStoreId()); //if there is no use cases for AvaTax services, return address as valid without doing a lookup if (!$isAddressValidationOn && !$isAddressNormalizationOn && !$isAddressActionable) { return true; } //lookup in AvaTax (with caching) $key = $this->_mageAddress->getCacheHashKey(); if (array_key_exists($key, $this->_cache)) { $result = unserialize($this->_cache[$key]); } elseif ($this->_mageAddress->getPostcode() && $this->_mageAddress->getPostcode() != '-') { $session = Mage::getSingleton('checkout/session'); if ($session->getPostType() == 'onepage') { $requiredFields = explode(",", $this->getHelper()->getFieldRequiredList()); $fieldRules = explode(",", $this->getHelper()->getFieldRule()); foreach ($requiredFields as $field) { $requiredFlag = 0; foreach ($fieldRules as $rule) { if (preg_match("/street\\d/", $field)) { $field = "street"; } if ($field == "country") { $field = "country_id"; } if ($this->_mageAddress->getData($field) == $rule || !$this->_mageAddress->getData($field)) { $requiredFlag = 1; } } if ($requiredFlag) { $errors = array(); $errors[] = $this->__('Invalid ') . $this->__($field); return $errors; } } } $client = $config->getAddressConnection(); $request = new ValidateRequest($this->_requestAddress, TextCase::$Mixed, 0); $request->setTaxability(true); $result = $client->Validate($request); $this->_log(OnePica_AvaTax_Model_Source_Logtype::VALIDATE, $request, $result, $this->_storeId, $config->getParams()); $this->_cache[$key] = serialize($result); } else { $errors = array(); $errors[] = $this->__('Invalid ZIP/Postal Code.'); return $errors; } //normalization if ($isAddressNormalizationOn && $result->getResultCode() == SeverityLevel::$Success) { $responseAddress = $result->getValidAddresses(); $responseAddress = array_pop($responseAddress); if ($responseAddress instanceof ValidAddress) { $this->_responseAddress = $responseAddress; $this->_convertResponseAddress(); } else { throw new OnePica_AvaTax_Model_Avatax_Address_Exception($this->__('Invalid response address type.')); } } //validation if ($isAddressValidationOn == 1) { if ($result->getResultCode() == SeverityLevel::$Success) { $this->_mageAddress->setAddressValidated(true); return true; } else { $errors = array(); foreach ($result->getMessages() as $message) { $errors[] = $this->__($message->getSummary()); } return $errors; } } elseif ($isAddressValidationOn == 2) { $this->_mageAddress->setAddressValidated(true); if ($result->getResultCode() == SeverityLevel::$Success) { return true; } else { if (!$this->_mageAddress->getAddressNotified()) { $this->_mageAddress->setAddressNotified(true); foreach ($result->getMessages() as $message) { Mage::getSingleton('core/session')->addNotice($this->__($message->getSummary())); } } return true; } //a valid address isn't required, but Avalara has to say there is //enough info to drill down to a tax jurisdiction to calc on } elseif (!$isAddressValidationOn && $isAddressActionable) { if ($result->isTaxable()) { $this->_mageAddress->setAddressValidated(true); return true; } else { $errors = array(); foreach ($result->getMessages() as $message) { $errors[] = $this->__($message->getSummary()); } return $errors; } } return true; }
/** * Extract only the data from the addres that gets validated. * The extracted data can be compared to the data in an existing * @param Mage_Customer_Model_Address_Abstract $address * @return Mage_Customer_Model_Address_Abstract - an address object containing only the data that gets validated */ protected function _extractValidatedAddressData(Mage_Customer_Model_Address_Abstract $address) { $validatedAddress = Mage::getModel('customer/address')->setData(['street' => $address->getData('street'), 'city' => $address->getCity(), 'region_id' => $address->getRegionId(), 'country_id' => $address->getCountryId(), 'postcode' => $address->getPostcode(), 'address_type' => $address->getAddressType()]); return $validatedAddress; }
protected function getAddress(Mage_Customer_Model_Address_Abstract $address) { $taxAddress = new AvaTax\Address(); $taxAddress->setLine1($this->limit($address->getStreet1(), 50)); $taxAddress->setLine2($this->limit($address->getStreet2(), 50)); $taxAddress->setLine3($this->limit($address->getStreet3(), 50)); $taxAddress->setCity($this->limit($address->getCity(), 50)); $taxAddress->setRegion($this->limit($address->getRegionCode(), 3)); $taxAddress->setCountry($this->limit($address->getCountryId(), 2)); $taxAddress->setPostalCode($this->limit($address->getPostcode(), 11)); return $taxAddress; }
/** * Create OCL Address record * * @param Mage_Customer_Model_Address_Abstract|Mage_Sales_Model_Order_Address $address * @param string|null $billingEntityId * @return array */ public function createAddress($address, $tags = null) { $region = $address->getRegion(); $data = array('street1' => (string) $address->getStreet1(), 'street2' => (string) $address->getStreet2(), 'street3' => (string) $address->getStreet3(), 'street4' => (string) $address->getStreet4(), 'city' => (string) $address->getCity(), 'county' => null, 'stateOrProvince' => empty($region) ? null : $region, 'postalCode' => (string) $address->getPostcode(), 'country' => (string) Mage::getModel('directory/country')->loadByCode($address->getCountryId())->getIso3Code(), 'tags' => $tags); return $data; }
/** * Creates a hash from an addresses key data * * @param Mage_Customer_Model_Address_Abstract $address * @return string */ public function createAddressHash(Mage_Customer_Model_Address_Abstract $address) { $values = $address->getFirstname() . $address->getLastname() . $address->getStreetFull() . $address->getPostcode() . $address->getCity() . $address->getRegionCode() . $address->getCountry(); $hash = md5($values); return $hash; }
protected function getAddress($code, Mage_Customer_Model_Address_Abstract $address) { $data = array('Line1' => $this->limit($address->getStreet1(), 50), 'Line2' => $this->limit($address->getStreet2(), 50), 'Line3' => $this->limit($address->getStreet3(), 50), 'City' => $this->limit($address->getCity(), 50), 'Region' => $this->limit($address->getRegionCode(), 3), 'Country' => $this->limit($address->getCountryId(), 2), 'PostalCode' => $this->limit($address->getPostcode(), 11)); $data = array_filter($data); if ($code && !empty($data)) { $data['AddressCode'] = $code; } return $data; }