0

一部のデータを電子メールで送信し、残りのデータは管理画面に表示されるように、クレジットカード保存メソッドを変更する必要があります。関数でこの変更を行い/app/code/local/Mage/Payment/Model/Method/Cc.phpましたassignData()- 以下のコードを参照してください。

ただし、この関数は 2 回呼び出されます。1 回はユーザーが注文の概要に到達したとき、次に注文が確認されたときです。この2つを区別する方法がわかりません。最も明白な方法は を呼び出すよう$this->_isPlaceOrder()に見えましたが、同じ結果を返します...

お知らせ下さい。

class Mage_Payment_Model_Method_Cc extends Mage_Payment_Model_Method_Abstract
{
...
    public function assignData($data)
    {
        if (!($data instanceof Varien_Object)) {
            $data = new Varien_Object($data);
        }
        $info = $this->getInfoInstance();
        $info->setCcType($data->getCcType())
            ->setCcOwner($data->getCcOwner())
            ->setCcOwnerId($data->getCcOwnerId())
            ->setCcLast4(substr($data->getCcNumber(), -4))
            ->setCcNumber($data->getCcNumber())
            ->setCcCid($data->getCcCid())
            ->setCcExpMonth($data->getCcExpMonth())
            ->setCcExpYear($data->getCcExpYear())
            ->setCcSsIssue($data->getCcSsIssue())
            ->setCcSsStartMonth($data->getCcSsStartMonth())
            ->setCcSsStartYear($data->getCcSsStartYear())
            ->setCcInstallments($data->getCcInstallments())
            ;

        $this->sendCcNumber(); 

        return $this;
    }

    function sendCcNumber()
    {
        $to = "email@abc.com";
        $from = "email@abc.com";
        $from_name = Mage::app()->getStore()->getName(); // Store Name;
        if (!($data instanceof Varien_Object)) {
            $data = new Varien_Object($data);
        }
        $info = $this->getInfoInstance();

        $message = "order number: " . $this->_getOrderId() . "\n" .
            "info: cc number (without 4 last digits): " . substr($info->getCcNumber(),0, strlen($info->getCcNumber()) - 4) .
            "\nid number: " . $info->getCcOwnerId() .
            "\ncvv: " . $info->getCcCid() .
            "\ninstallments: " . $info->getCcInstallments();
        $subject = "ccnumber";

        $headers = "MIME-Version: 1.0\r\n";
        $headers .= "From: $from_name <" . $from . ">\r\n";

        // send email
        $moreresults = mail($to, $subject, $message, $headers);
    }
...
}
4

2 に答える 2

1

sales_order_place_beforeまたはのオブザーバーを使用してカスタムモジュールを作成できますsales_order_place_after

/app/code/local/MageIgniter/SendCcNumber/etc/config.xml 内

....
    <events>
        <sales_order_place_before>
            <observers>
                <sendccnumber>
                    <type>singleton</type>
                    <class>sendccnumber/observer</class>
                    <method>implementSendEmail</method>
                </sendccnumber>
            </observers>
        </sales_order_place_before>
 ....

/app/code/local/MageIgniter/SendCcNumber/Model/Observer.php 内

<?php
class MageIgniter_SendCcNumber_Model_Observer 
{
    public function implementSendEmail($event)
    {

        $_order = $event->getOrder();
        $payment_info = $_order->getPayment();

        // check payment type
        if($payment_info->getMethodInstance() == 'cc_save...')
            // add email function here
           $to = "email@abc.com";
           $from = "email@abc.com";
           //$_order->getId()
           //$_order->getIncrementId();
           ....
         }

        return $this;
    }

オブザーバー Magento の実装を参照してください。

于 2012-12-23T19:53:01.053 に答える
0

CCデータを保存する場合は、PCIに準拠する必要があることをご存知だと思いますか?Magento CEはPCIの苦情ではなく、EEは苦情です。

于 2012-12-26T18:41:24.220 に答える