如何在通过PayPal标准取消付款时在任何状态下保存订单以订购表。

有帮助吗?

解决方案

在花费几个小时后,我首先知道Magento 1.9包括PayPal Express以及PayPal标准。因此,使得这清楚我刚刚通过SQL更改和阻止重写(参考一些外部源)。返回到PayPal取消行动需要覆盖的那一点。这可以通过观察者世代古典etagcode获得,其余的下面的代码也解释了其他过程。希望这应该帮助某人。

本地/ stackoverflow / paypalstandard / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Stackoverflow_Paypalstandard>
            <version>0.1.0</version>
        </Stackoverflow_Paypalstandard>
    </modules>
    <global>
        <models>
            <custom_paypalstandard>
                <class>Stackoverflow_Paypalstandard_Model</class>
            </custom_paypalstandard>
        </models>
        <blocks>
            <custom_paypalstandard>
                <class>Stackoverflow_Paypalstandard_Block</class>
            </custom_paypalstandard>
            <paypal>
                <rewrite>
                    <standard_redirect>Stackoverflow_Paypalstandard_Block_Standard_Redirect</standard_redirect>
                    <adminhtml_system_config_fieldset_location>Stackoverflow_Paypalstandard_Block_Adminhtml_System_Config_Fieldset_Location</adminhtml_system_config_fieldset_location>
                </rewrite>
            </paypal>
        </blocks>
        <events>
            <sales_order_payment_cancel>
                <observers>
                    <after_placing_order>
                        <class>custom_paypalstandard/observer</class>
                        <method>implementOrderStatus</method>
                    </after_placing_order>
                </observers>
            </sales_order_payment_cancel>
        </events>
    </global>
</config>
.

本地/ stackoverflow / paypalstandard / block / adminhtml / system / config / fieldset / location.php

这是覆盖的一部分,以便停用PayPal Express - 请参阅 一些 链接。

本地/ stackoverflow / paypalstandard / block / standard / redirect.php

class Stackoverflow_Paypalstandard_Block_Standard_Redirect extends Mage_Paypal_Block_Standard_Redirect
{
    public function _toHtml()
    {
        $standard = Mage::getModel('paypal/standard');

        $form = new Varien_Data_Form();
        $form->setAction($standard->getConfig()->getPaypalUrl())
            ->setId('paypal_standard_checkout')
            ->setName('paypal_standard_checkout')
            ->setMethod('POST')
            ->setUseContainer(true);
        foreach ($standard->getStandardCheckoutFormFields() as $field=>$value) {
            $form->addField($field, 'hidden', array('name'=>$field, 'value'=>$value));
        }
        $idSuffix = Mage::helper('core')->uniqHash();
        $submitButton = new Varien_Data_Form_Element_Submit(array(
            'value'    => $this->__('Click here if you are not redirected within 10 seconds...'),
        ));
        $id = "submit_to_paypal_button_{$idSuffix}";
        $submitButton->setId($id);
        $form->addElement($submitButton);
        $html = '<html><body>';
        $html.= $this->__('You will be redirected to the PayPal website in a few seconds.');
        $html.= $form->toHtml();
        $html.= '<script type="text/javascript">document.getElementById("paypal_standard_checkout").submit();</script>';
        $html.= '</body></html>';

        return $html;
    }
}
.


local / stackoverflow / paypalstandard / model / observer.php


class Stackoverflow_Paypalstandard_Model_Observer
{

 public function implementOrderStatus($observer)
    {
        $payment = $observer->getEvent()->getPayment();
        $order = $payment->getOrder();
        $order->setActionFlag(Mage_Sales_Model_Order::ACTION_FLAG_CANCEL, false);
        $orderIds = Mage::getSingleton('adminhtml/session')->getNonCancelledOrders();
        if (!$orderIds) {
            $orderIds = array($order->getId());
        } else {
            $orderIds[] = $order->getId();
        }
        Mage::getSingleton('adminhtml/session')->setNonCancelledOrders($orderIds);
    }
}
.

etc / modules / stactoverflow_paypalstandard.xml


<config>
    <modules>
        <Stackoverflow_Paypalstandard>
            <active>true</active>
            <codePool>local</codePool>
        </Stackoverflow_Paypalstandard>
    </modules>
</config>
.
许可以下: CC-BY-SA归因
scroll top