Paypal Indirizzo salvato come predefinito Indirizzo
Domanda
Un nuovo cliente che effettua un acquisto prodotto virtuale tramite PayPal ha il proprio indirizzo di fatturazione passato a Magento. L'indirizzo è attaccato alla fine, ma non è attaccato al cliente. Quale sarebbe il modo migliore per collegare questo al cliente e anche impostarlo come l'indirizzo di fatturazione di default sul proprio conto?
Soluzione
Si sta andando a voler rubinetto in caso predispatch
della classe Mage_Paypal_IpnController
:
Creare il codice XML nel modulo personalizzato per gestire l'osservatore per il 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);
}
}
}
sono non certo del formato del IPN , quindi le chiavi $data
nell'osservatore sopra può richiedere modifiche per regolare. Inoltre, sono non è sicuro delle regole di business , quindi al momento imposta tutti gli indirizzi IPN clienti per l'impostazione predefinita a tutto ciò che era in loro ordine più recente. Questo è non pronto per la produzione , ma si ottiene il 90% della strada.