Адрес PayPal сохранен как адрес по умолчанию
Вопрос
Новый клиент, который совершает виртуальную покупку продукта через PayPal, передает свой счет для выставления счетов в Magento. Адрес прикреплен к заказу, но не прикреплен к клиенту. Как бы лучший способ прикрепить это к клиенту, а также установить его в качестве платежного адреса по умолчанию в своей учетной записи?
Решение
Вы захотите нажать на predispatch
событие Mage_Paypal_IpnController
учебный класс:
Создайте XML в своем пользовательском модуле, чтобы обрабатывать наблюдатель для Predispatch:
<global>
<events>
<controller_action_predispatch_paypal_ipn_index>
<observers>
<mymodule_paypal_ipn_index>
<type>singleton</type>
<class>yourmodel/observer</class>
<method>ipnPreDispatch</method>
</mymodule_paypal_ipn_index>
</observers>
</controller_action_predispatch_paypal_ipn_index>
</events>
</global>
Xersver.php:
<?php
class YourCompany_YourModule_Model_Observer
{
public function ipnPreDispatch($observer)
{
//get the request object and post data
$data = $observer->getControllerAction()->getRequest()->getPost();
//get the email address
$email = $data['email_address'];
//get the customer via the email
$customer = Mage::getModel("customer/customer")->loadByEmail($email);
//set the customer default address
$default_address = array (
'firstname' => $data['first'],
'lastname' => $data['last'],
'street' => array (
'0' => $data['street1'],
'1' => $data['street2'],
),
'city' => $data['city'],
'region_id' => $data['state'],
'postcode' => $data['zipcode'],
'country_id' => $data['country'],
'telephone' => $data['telephone'],
);
$address = Mage::getModel('customer/address');
$address->setData($default_address)
->setCustomerId($customer->getId())
->setIsDefaultBilling('1')
->setIsDefaultShipping('1')
->setSaveInAddressBook('1');
try {
$address->save();
} catch(Exception $e) {
Mage::logExeption($e);
}
}
}
Я Не уверен в формате IPN, так что ключи $data
в наблюдателе выше может потребоваться изменить чтобы настроить. Кроме того, я Не уверен в бизнес -правилах, Итак, в настоящее время он устанавливается Все адреса клиента IPN по умолчанию к тому, что было в их последнем порядке. Это не готовый к производству, но получает вам 90% пути.