質問

PayPalを通じて仮想製品を購入する新しい顧客は、請求先住所をMagentoに渡しました。アドレスは注文に添付されていますが、顧客には添付されていません。これを顧客に添付し、それをアカウントのデフォルトの請求アドレスとして設定する最良の方法は何ですか?

役に立ちましたか?

解決

あなたはを利用したいと思うでしょう predispatch のイベント Mage_Paypal_IpnController クラス:

Predispatchのオブザーバーを処理するために、カスタムモジュールにXMLを作成します。

<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);
        }

    }

}

私は IPNの形式は確かではありません, 、だからキー $data 上記のオブザーバーで 変更する必要がある場合があります 調整。また、私は ビジネスルールがわかりません, 、だから現時点では設定されています すべてのIPNカスタマーアドレス デフォルトでは、最新の注文にあったものは何でも。これは 生産対応ではありません, 、しかし、あなたはそこの方法の90%を取得します。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top