PayPal la dirección guardada como predeterminado Dirección
Pregunta
Un nuevo cliente que realiza una compra de productos virtuales a través de PayPal tiene su dirección de facturación pasó a Magento. La dirección está unido a la orden, pero no está conectado al cliente. ¿Cuál sería la mejor manera de unir esto al cliente y también configurarlo como la dirección de facturación por defecto en su cuenta?
Solución
Usted va a querer grifo en el caso de la clase predispatch
Mage_Paypal_IpnController
:
Crea el xml en su módulo personalizado para manejar el observador de la 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>
Observer.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);
}
}
}
Me no está seguro del formato del IPN , por lo que las llaves de $data
en el observador por encima de puede ser necesario modificar para ajustar. Además, soy no está seguro de las reglas de negocio , por lo que en el momento en que establece todas las direcciones IPN clientes a los valores predeterminados a lo que estaba de su orden más reciente. Este es No listo para la producción , pero se obtiene el 90% del camino.