/**
  * EITHER CREATE OR UPDATE THE CUSTOMER
  * 
  * TO CREATE
  * http://help.paytrace.com/api-create-customer-profile
  * 
  * TO UPDATE
  * http://help.paytrace.com/api-update-customer-profile
  * 
  * TO DELETE
  * if $card is empty then we delete the card from paytrace
  * 
  * @param Mage_Customer_Model_Customer $customer
  */
 public function paytraceCustomer(Mage_Customer_Model_Customer $customer, Widgetized_Level3_Model_Card $card = null)
 {
     $defaults = array('UN' => $this->getConfigData('login'), 'PSWD' => $this->getConfigData('trans_key'), 'TERMS' => 'Y', 'METHOD' => 'CreateCustomer', 'CUSTID' => $customer->getId(), 'BNAME' => $customer->getFirstname() . ' ' . $customer->getLastname(), 'CC' => '', 'EXPMNTH' => '', 'EXPYR' => '');
     $addressId = $customer->getDefaultBilling();
     $billing = Mage::getModel('sales/order_address')->load($addressId);
     if ($billing) {
         $defaults['BADDRESS'] = $billing->getPostcode();
         $defaults['BCITY'] = $billing->getCity();
         $defaults['BSTATE'] = $billing->getRegion();
         $defaults['BZIP'] = $billing->getPostcode();
         $defaults['BCOUNTRY'] = $billing->getCountryId();
     }
     if ($card) {
         $defaults['CC'] = $card->getNumber();
         $defaults['EXPMNTH'] = $card->getMonth();
         $defaults['EXPYR'] = $card->getYear();
     }
     try {
         $result = $this->call(array_keys($defaults), $defaults);
     } catch (Exception $ex) {
         $message = $this->__($ex->getMessage());
         if ($card) {
             $card->setToken($message);
             $card->save();
         }
     }
 }
Beispiel #2
0
 /**
  * @param Mage_Customer_Model_Customer $customer
  * @return array|null
  */
 protected function _getAddresses(Mage_Customer_Model_Customer $customer)
 {
     $addrData = array();
     $addresses = $customer->getAddresses();
     if (!empty($addresses)) {
         foreach ($addresses as $address) {
             $tags = null;
             if ($customer->getDefaultBilling() == $address->getEntityId()) {
                 $tags = array(Xcom_Chronicle_Helper_Data::ADDRESS_TAG_BILLING);
             }
             $addrData[] = Mage::helper('xcom_chronicle')->createAddress($address, $tags);
         }
     }
     return $addrData;
 }
 /**
  * Retrieve customer address (default billing or default shipping) ID on which tax calculation must be based
  *
  * @param Mage_Customer_Model_Customer $customer
  * @param Mage_Core_Model_Store|string|int|null $store
  * @return int|string
  */
 protected function _getVatRequiredCustomerAddress(Mage_Customer_Model_Customer $customer, $store = null)
 {
     $configAddressType = Mage::helper('customer/address')->getTaxCalculationAddressType($store);
     $requiredAddress = null;
     switch ($configAddressType) {
         case Mage_Customer_Model_Address_Abstract::TYPE_SHIPPING:
             $requiredAddress = $customer->getDefaultShipping();
             break;
         default:
             $requiredAddress = $customer->getDefaultBilling();
     }
     return $requiredAddress;
 }
 /**
  * Set up the billing address for the quote and on the customer, and set the customer's
  * default billing address.
  *
  * @param $customer Mage_Customer_Model_Customer
  *
  * @return Mage_Sales_Model_Quote_Address $billingAddress | null
  */
 protected function _prepareCustomerBilling(Mage_Customer_Model_Customer $customer)
 {
     $billing = $this->_quote->getBillingAddress();
     if (!$billing->getCustomerId() || $billing->getSaveInAddressBook()) {
         $customerBilling = $billing->exportCustomerAddress();
         $customer->addAddress($customerBilling);
         $billing->setCustomerAddress($customerBilling);
         if (!$customer->getDefaultBilling()) {
             $customerBilling->setIsDefaultBilling(true);
         }
         return $customerBilling;
     }
     return null;
 }
 /**
  * Retrieve customer addresses list
  *
  * @param Mage_Customer_Model_Customer $customer
  *
  * @return array
  */
 protected function getAddressItems($customer)
 {
     $result = array();
     foreach ($customer->getAddresses() as $address) {
         $data = $address->toArray();
         $row = array();
         foreach ($this->_mapAddressAttributes as $attributeAlias => $attributeCode) {
             $row[$attributeAlias] = isset($data[$attributeCode]) ? $data[$attributeCode] : null;
         }
         foreach ($this->getAllowedAttributes($address) as $attributeCode => $attribute) {
             if (isset($data[$attributeCode])) {
                 $row[$attributeCode] = $data[$attributeCode];
             }
         }
         $row['is_default_billing'] = $customer->getDefaultBilling() == $address->getId();
         $row['is_default_shipping'] = $customer->getDefaultShipping() == $address->getId();
         $result[] = $row;
     }
     return $result;
 }