如何在Magento中获取客户迄今为止输入的所有信用卡详细信息?

如何在Magento中获取客户迄今为止输入的所有信用卡详细信息?,magento,credit-card,Magento,Credit Card,我已从Magento管理面板启用“抄送保存”方法。我想在结帐页面的下拉列表中列出客户输入的所有信用卡详细信息。有人能帮我吗。这不是一个你使用“自己滚”的解决方案。有些交易处理公司拥有卡钱包功能,不需要您自己保存信用卡详细信息,这将比这种思路更加安全 有关存储信用卡数据的法律非常严格,从听起来,这一思路将打破其中几个,使客户面临信用卡欺诈的重大风险 我本来想找到一个完整性的解决方案,但没能做到。上周我碰巧为一位客户做了这件事。我的解决方案是通过提供新类来创建Mage\u Sales\u Model

我已从Magento管理面板启用“抄送保存”方法。我想在结帐页面的下拉列表中列出客户输入的所有信用卡详细信息。有人能帮我吗。

这不是一个你使用“自己滚”的解决方案。有些交易处理公司拥有卡钱包功能,不需要您自己保存信用卡详细信息,这将比这种思路更加安全

有关存储信用卡数据的法律非常严格,从听起来,这一思路将打破其中几个,使客户面临信用卡欺诈的重大风险


我本来想找到一个完整性的解决方案,但没能做到。

上周我碰巧为一位客户做了这件事。我的解决方案是通过提供新类来创建
Mage\u Sales\u Model\u Mysql4\u Order\u Payment\u Collection
的子代,并使用以下配置启用:

<config>
    <global>
        <models>
            <mymodule>
                <class>My_Module_Model</class>
                <resourceModel>mymodule_eav</resourceModel>
            </mymodule>
            <mymodule_eav>
                <class>My_Module_Model_Resource</class>
                <entities>
                    <payment><table>sales_flat_order_payment</table></payment>
                </entities>
            </mymodule_eav>
        </models>
    </global>
</config>
app/code/local/My/Module/Model/Resource/Payment.php

class My_Module_Model_Payment extends Mage_Sales_Model_Order_Payment
{
    protected function _construct()
    {
        $this->_init('mymodule/payment'); // name of single resource model
    }
}
class My_Module_Model_Resource_Payment extends Mage_Sales_Model_Mysql4_Order_Payment
{} // no more is needed
class My_Module_Model_Resource_Payment_Collection extends Mage_Sales_Model_Mysql4_Order_Payment_Collection
{

    protected function _construct()
    {
        $this->_init('mymodule/payment'); // model alias
    }

    public function addSavedFilter($customerId)
    {
        $this->join('sales/order', '`main_table`.`parent_id`=`sales/order`.`entity_id`', '');
        $this->addAttributeToFilter('customer_id', $customerId)
             ->addAttributeToFilter('cc_number_enc', array('neq'=>''))
             ->getSelect()->group(array('cc_exp_year', 'cc_exp_month', 'cc_owner', 'cc_last4', 'cc_type'));
        return $this;
    }
}
app/code/local/My/Module/Model/Resource/Payment/Collection.php

class My_Module_Model_Payment extends Mage_Sales_Model_Order_Payment
{
    protected function _construct()
    {
        $this->_init('mymodule/payment'); // name of single resource model
    }
}
class My_Module_Model_Resource_Payment extends Mage_Sales_Model_Mysql4_Order_Payment
{} // no more is needed
class My_Module_Model_Resource_Payment_Collection extends Mage_Sales_Model_Mysql4_Order_Payment_Collection
{

    protected function _construct()
    {
        $this->_init('mymodule/payment'); // model alias
    }

    public function addSavedFilter($customerId)
    {
        $this->join('sales/order', '`main_table`.`parent_id`=`sales/order`.`entity_id`', '');
        $this->addAttributeToFilter('customer_id', $customerId)
             ->addAttributeToFilter('cc_number_enc', array('neq'=>''))
             ->getSelect()->group(array('cc_exp_year', 'cc_exp_month', 'cc_owner', 'cc_last4', 'cc_type'));
        return $this;
    }
}
然后我可以得到如下列表:

$payments = Mage::getModel('mymodule/payment')->getCollection()->addSavedFilter($customer->getId());
p.S.

正如Joseph指出的,存储信用卡详细信息有一定的法律考虑。在这种特殊情况下,我的客户意识到了这一切,并准备承担责任。

< P>另一个可供选择的方案是使用支付网关来存储信用卡而不是直接在服务器上使用API来处理订单支付。想到的一个众所周知的例子是。这将减轻许多潜在的合法性问题,使您的站点更容易通过PCI合规性扫描和规则。Magento的一些支付方式扩展将对此有所帮助。

我已在服务器上安装了Onestepcheckout扩展,因此您能否告诉我如何获取用户的所有信用卡阵列的确切步骤?请帮助我,我不知道该扩展是如何工作的,但由于它是一个商业扩展,并且您已经支付了费用并安装了它,制造商有义务提供一定数量的支持。他们能提供比我更多的信息。但我需要添加与扩展无关的功能(信用卡)。请告诉我确切的文件(也让它成为核心文件。我可以更改它。)我需要在何处编写addSavedFilter()函数,以及如何在我的phtml文件中调用该函数。使用了正常的EAV方法,就像中给出的示例一样。我已经复制了我以前作品的重要部分,以便你能看到。这里没有什么令人惊讶的。