Magento:轻松删除"paypal/express/review"步骤

Dre*_*lon 13 php paypal magento

当使用paypal在magento中订购时,它会将您带到paypal,paypal已经显示确认,您确认,您将被重定向到另一个确认页面(/ paypal/express/review),这是一个额外的步骤,对于用户体验来说是不必要的,我想删除它并在用户在paypal页面上确认时自动下订单,一旦离开paypal,如果订单成功,客户应该看到成功页面.

有没有任何简单的解决方案,我可能忽略了,或者至少如果你能指出我正确的方向去除那一步.

Dre*_*ell 12

实际上,Express Checkout可以解决这个问题,我个人建议坚持使用它.

在SetExpressCheckout请求之后,您将用户重定向到PayPal.您可以将useraction = commit附加到此URL,以便从PayPal页面触发确认.

这会导致PayPal上的"继续"按钮切换到"付款"按钮,并通知用户这是他们的最终确认...点击付款将提交付款.

您仍然必须在服务器上调用DoExpressCheckoutPayment来完成此过程,但此时GetExpressCheckoutDetails是可选的.当使用useraction = commit时,您将在ReturnURL中将PayerID作为URL参数返回,因此如果您不需要/不需要,则不必调用GECD.

您可以将此设置更进一步,并使用回调API(也称为即时更新API)将运费和销售税信息提供给PayPal审核页面.这样,您就可以根据在PayPal评论页面上选择的用户送货地址,使用您自己的送货数据填充PayPal评论页面上的下拉值.

这些功能的引入完全符合您的要求......消除了额外的审核流程.

所有这些都说,如果Express Checkout的Magento模块没有为所有这些提供选项,那么你需要扩展它并自己构建它们.不过,我很喜欢它.


Ann*_*lkl 11

实际上,这里提到的所有解决方案都需要编辑Magento核心.这被称为不良做法,并不会让您的商店更新.

您需要为清洁解决方案做些什么:

  1. 创建一个模块(在我的例子中:Avoe_Paypal)以包含更改
  2. 重写Paypal配置
  3. 重定向paypal快速审查步骤http://yourdomain.com/paypal/express/review/

1)创建您的模块

Avoe /贝宝的/ etc/config.xml中

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Avoe_Paypal>
            <version>0.1.0</version>
        </Avoe_Paypal>
    </modules>

    <global>
        <models>
            <Avoe_Paypal>
                <class>Avoe_Paypal_Model</class>
            </Avoe_Paypal>
            <paypal>
                <rewrite>
                    <config>Avoe_Paypal_Model_Config</config>
                </rewrite>
            </paypal>
        </models>
        <events>
            <controller_action_predispatch_paypal_express_review>
                <observers>
                    <avoe_paypal_predispatch>
                        <type>singleton</type>
                        <class>Avoe_Paypal_Model_Observer</class>
                        <method>paypalExpressReturnPredispatch</method>
                    </avoe_paypal_predispatch>
                </observers>
            </controller_action_predispatch_paypal_express_review>
        </events>
    </global>
</config>
Run Code Online (Sandbox Code Playgroud)

应用程序的/ etc/Avoe_Paypal.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Avoe_Paypal>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Paypal />
            </depends>
        </Avoe_Paypal>
    </modules>
</config>
Run Code Online (Sandbox Code Playgroud)

2)重写配置,添加useraction'commit':

<?php
class Avoe_Paypal_Model_Config extends Mage_Paypal_Model_Config {

    /**
     * Get url for dispatching customer to express checkout start
     * Added useraction 'commit' to remove PayPal Express Checkout review page
     *
     * @param string $token
     * @return string
     */
    public function getExpressCheckoutStartUrl($token)
    {
        return $this->getPaypalUrl(array(
            'cmd'   => '_express-checkout',
            'useraction' => 'commit',
            'token' => $token,
        ));
    }
}
Run Code Online (Sandbox Code Playgroud)

3)创建观察者重定向:

<?php

class Avoe_Paypal_Model_Observer {

    function paypalExpressReturnPredispatch($observer) {
        Mage::app()->getResponse()->setRedirect(Mage::getUrl('*/*/placeOrder'));
    }
}
Run Code Online (Sandbox Code Playgroud)

昨天刚刚发布了一个小的Magento扩展,用于删除审核步骤:

https://github.com/tim-bezhashvyly/Sandfox_RemovePaypalExpressReviewStep


Ant*_*n S 9

如果您不需要此功能,请不要使用paypal express并使用paypal标准.paypal express是一种结账方式,而不是付款方式

编辑:现在可配置为1.9,仍然是延迟但可行.

  • 1.9中有一个选项,但它与"快捷按钮"不兼容 - [更多此处](https://quickshiftin.com/blog/2015/05/skip-order-review-paypal-express-magento/) . (2认同)
  • 请注意,PayPal标准不再受支持,PayPal Express是您的最佳选择. (2认同)

小智 9

那么合适的交易,对我来说是完美的(对我而言)是上述的总结:

1.转到: \app\code\core\Mage\Paypal\Controller\Express\Abstract.php

并在returnAction()中搜索:

$this->_redirect('*/*/review'); 
Run Code Online (Sandbox Code Playgroud)

你需要改变:

$this->_redirect('*/*/review');
Run Code Online (Sandbox Code Playgroud)

至:

$this->_redirect('*/*/placeOrder');
Run Code Online (Sandbox Code Playgroud)

2.转到: \app\code\core\Mage\Paypal\Model\Config.php并更改:

public function getExpressCheckoutStartUrl($token)
{
    return $this->getPaypalUrl(array(
        'cmd'   => '_express-checkout',
        'token' => $token,
    ));
}
Run Code Online (Sandbox Code Playgroud)

至:

public function getExpressCheckoutStartUrl($token)
{
    return $this->getPaypalUrl(array(
        'cmd'   => '_express-checkout',
        'useraction' => 'commit',
        'token' => $token,
    ));
}
Run Code Online (Sandbox Code Playgroud)

通过上述2个更改,我想出了如何在Magento Paypal Express Checkout中跳过评论页面.

  • 请不要编辑核心.这被认为是不好的做法,不会让您的商店更新.在这里查看我的答案:http://stackoverflow.com/a/27266232/865443 (2认同)

小智 7

安德鲁·安吉尔的回答确实没有避开确认页面,它只是将按钮值更改为"支付"而不是"确认",或类似的东西.

无论如何,正确的方法是去 \ app\code\core\Mage\Paypal\Model\Config.php, getExpressCheckoutEditUrl($token)方法和改变

'useraction' => 'continue',
Run Code Online (Sandbox Code Playgroud)

'useraction' => 'commit’.
Run Code Online (Sandbox Code Playgroud)

要在Paypal Express中避免确认用户页面,您只需更改控制器操作中的一行.转到Mage/Paypal/Controller/Express/Abstract.php并搜索$this->_redirect('*/*/review'); 在returnAction().你需要改变

$this->_redirect('\*/\*/review');
Run Code Online (Sandbox Code Playgroud)

$this->_redirect('\*/\*/placeOrder');
Run Code Online (Sandbox Code Playgroud)

这样,当paypal返回返回操作时,您将避免显示整个评论页面并自动确认付款.因此,Paypal以与PayPal标准方法相同的方式再次重定向到成功页面.