在magento中使用paypal订购时,它会带你到paypal,paypal已经显示确认,你确认,你会被重定向到另一个确认页面(/paypal/express/review),这是一个额外的步骤,对于用户体验,我想删除它并在用户在贝宝页面上确认时自动下订单,一旦离开贝宝,如果订单成功,客户应该会看到成功页面。
是否有任何简单的解决方案可以解决我可能忽略的问题,或者至少如果您能指出正确的方向来删除该步骤。
- 如果您不需要此功能,请不要使用贝宝快递并使用贝宝标准。 paypal express 是一种结帐方式而不是付款方式
- 谢谢!我没有注意到这一点。现在我知道了。
- 是的,您可以将其发布为答案,我会选择它。再次感谢。
其实 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 模块没有为所有这些提供选项,您将需要扩展它并自己构建它们。不过,我很漂亮。
- 我将继续为执行此操作的 Magento EC 模块构建一个扩展,我将在 MagentoConnect 上免费发布它。希望在几周内完成。只得腾出时间来。
- 你有没有做过这个或者有一个 github 分支可以从中提取?
- 我开始了,但我还没有完成。不过,这里似乎还有其他一些很好的答案。
- 它现在受 1.9 支持,您可以跳过审查并从设置中调整它
- 1.9 中有一个选项,但它与"快捷按钮"不兼容 - 更多信息在这里。
实际上这里提到的所有解决方案都需要编辑 Magento 核心。这被称为不良做法,不会让您的商店保持更新。
清洁解决方案需要做什么:
1) 创建你的模块
Avoe/Paypal/etc/config.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?xml version = "1.0" encoding = "UTF-8" ?> <config> <modules> <Avoe_Paypal> <version>0.1.0</version> </Avoe_Paypal> </modules> <global> |
app/etc/Avoe_Paypal.xml
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version = "1.0" encoding = "UTF-8" ?> <config > <modules > <Avoe_Paypal > true </active > <codePool >local </codePool > <depends > <Mage_Paypal /> </depends > </Avoe_Paypal > </modules > </config > |
2) 重写配置,添加用户操作\\'commit\\':
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php class Avoe_Paypal_Model_Config extends Mage_Paypal_Model_Config { /** |
3) 创建要重定向的观察者:
1 2 3 4 5 6 7 8 |
<?php
class Avoe_Paypal_Model_Observer { function paypalExpressReturnPredispatch ( $observer ) { |
还有一个昨天刚刚发布的小型 Magento 扩展,用于删除审查步骤:
https://github.com/tim-bezhashvyly/Sandfox_RemovePaypalExpressReviewStep
所以正确的交易,完美的工作(对我来说)是上面的总结:
1。转到:\\\\\\\\app\\\\\\\\code\\\\\\\\core\\\\\\\\Mage\\\\\\\\Paypal\\\\\\\\Controller\\\\\\\\Express\\\\\\\\Abstract.php
并在 returnAction() 中搜索:
1 | $this ->_redirect ( '*/*/review' ) ; |
你必须改变:
1 | $this ->_redirect ( '*/*/review' ) ; |
到:
1 | $this ->_redirect ( '*/*/placeOrder' ) ; |
2。转到:\\\\\\\\app\\\\\\\\code\\\\\\\\core\\\\\\\\Mage\\\\\\\\Paypal\\\\\\\\Model\\\\\\\\Config.php
并更改:
1 2 3 4 5 6 7 |
public function getExpressCheckoutStartUrl ( $token ) { return $this -> getPaypalUrl ( array ( 'cmd' => '_express-checkout' , 'token' => $token , ) ) ; } |
到:
1 2 3 4 5 6 7 8 |
public function getExpressCheckoutStartUrl ( $token ) { return $this -> getPaypalUrl ( array ( 'cmd' => '_express-checkout' , 'useraction' => 'commit' , 'token' => $token , ) ) ; } |
通过上面的 2 个更改,我想出了如何
跳过 Magento Paypal Express Checkout 中的评论页面。
- 谢谢Keyur Shah。我搜索了几天......我从托尼大卫那里找到了解决方案,所以我做了一个更清晰的总结
如果您不需要此功能,请不要使用 paypal express 并使用 paypal 标准。 paypal express 是一种结帐方式而不是付款方式
edit:这现在可以在 1.9 中进行配置,仍然延迟但可行。
- 嗨,我检查了 Magento CE 1.9 中的 PayPal express 设置,但找不到禁用评论页面的设置。你指的是哪个配置?
- @AnnaV?lkl payment/paypal_express/skip_order_review_step
- @AnnaV?lkl 我想如果您启用了协议,它就不起作用,必须接受这些协议......
- 1.9 中有一个选项,但它与"快捷按钮"不兼容 - 更多信息在这里。
- 请注意,不再支持 PayPal Standard,而 PayPal Express 是可行的方法。
Andrew Angel\\'s answer确实没有避开确认页面,它只是将按钮值更改为"支付"而不是"确认",或类似的东西。
无论如何,正确的方法是
\\\\\\\\app\\\\\\\\code\\\\\\\\core\\\\\\\\Mage\\\\\\\\Paypal\\\\\\\\Model\\\\\\\\Config.php,到
getExpressCheckoutEditUrl($token) 方法和更改
1 | 'useraction' => 'continue' , |
到
1 | 'useraction' => 'commit’. |
要避免 Paypal Express 中的确认用户页面,您只需在控制器操作中更改一行。
转到 Mage/Paypal/Controller/Express/Abstract.php 并搜索 $this->_redirect('*/*/review') ;在 returnAction() 中。那里你必须改变
1 | $this ->_redirect ( '\\*/\\*/review' ) ; |
到
1 | $this ->_redirect ( '\\*/\\*/placeOrder' ) ; |
这样,当贝宝返回返回操作时,您就可以避免显示整个评论页面并自动确认付款。因此,Paypal 再次重定向到成功页面,就像 PayPal 标准方法一样。
@Toni 重定向网址部分效果很好,谢谢!但是,将"继续"更改为"提交"并没有改变 PayPal 网站上的按钮。但是,我可以通过执行以下操作来修复它: 在 Toni 指示更改继续提交的 getExpressCheckoutEditUrl 函数正上方,有函数 getExpressCheckoutStartUrl。如果您在那里添加 useraction 变量,它将起作用。
原函数:
1 2 3 4 5 6 7 |
public function getExpressCheckoutStartUrl ( $token ) { 'return $this->getPaypalUrl(array( 'cmd ' => '_express -checkout ', 'token ' => $token, )); } |
新功能:
1 2 3 4 5 6 7 8 |
public function getExpressCheckoutStartUrl ( $token ) { 'return $this->getPaypalUrl(array( 'cmd ' => '_express -checkout ', 'useraction ' => 'commit ', 'token ' => $token, )); } |
注意 \\'useraction\\' => \\'commit\\',已添加到新函数中。这应该工作!
Magento 1.9 内置了对此的支持,即 Skip Order Review Step 选项,但它有一个微妙的警告。该功能不适用于您可以在产品详细信息和购物车页面上显示的"快捷方式"按钮。
我的建议是,禁用快捷按钮并启用"跳过订单审核步骤"选项。为了获得额外的信用,您可以重新安排 Onepage Checkout 流程,这样客户就不必输入两次帐单信息(一次在 Magento 上,一次在 PayPal 上)。
此博客文章中提供了更多详细信息。
这里少了一个步骤,让我再总结一下整个过程。
1。转到:\\\\\\\\app\\\\\\\\code\\\\\\\\core\\\\\\\\Mage\\\\\\\\Paypal\\\\\\\\Controller\\\\\\\\Express\\\\\\\\Abstract.php
并在 returnAction() 中搜索:
1 | $this ->_redirect ( '*/*/review' ) ; |
你必须改变:
1 | $this ->_redirect ( '*/*/review' ) ; |
到:
1 | $this ->_redirect ( '*/*/placeOrder' ) ; |
2。转到:\\\\\\\\app\\\\\\\\code\\\\\\\\core\\\\\\\\Mage\\\\\\\\Paypal\\\\\\\\Model\\\\\\\\Config.php 并更改:
1 2 3 4 5 6 7 |
public function getExpressCheckoutStartUrl ( $token ) { return $this -> getPaypalUrl ( array ( 'cmd' => '_express-checkout' , 'token' => $token , ) ) ; } |
到:
1 2 3 4 5 6 7 8 |
public function getExpressCheckoutStartUrl ( $token ) { return $this -> getPaypalUrl ( array ( 'cmd' => '_express-checkout' , 'useraction' => 'commit' , 'token' => $token , ) ) ; } |
3。通过上述两项更改,您仍将被带到评论页面并且必须同意条款和条件,以避免这种情况转到:
/app/code/core/Mage/Paypal/Controller/Express/Abstract.php
搜索:
1 2 3 4 5 6 7 8 9 10 |
public function placeOrderAction ( ) { try { $requiredAgreements = Mage :: helper (‘checkout’ ) -> getRequiredAgreementIds ( ) ; if ( $requiredAgreements ) { $postedAgreements = array_keys ( $this -> getRequest ( ) -> getPost (‘agreement’ , array ( ) ) ) ; if ( array_diff ( $requiredAgreements , $postedAgreements ) ) { Mage :: throwException (Mage :: helper (‘paypal’ ) ->__ (‘Please agree to all the terms and conditions before placing the order .’ ) ) ; } } |
以简单的//开头注释以下行:
1 2 3 |
//if (array_diff($requiredAgreements, $postedAgreements)) { // Mage::throwException(Mage::helper(‘paypal’)->__(‘Please agree to all the terms and conditions before placing the order.’)); // } |
您将被带到评论页面的唯一时间是客户的贝宝返回拒绝错误。
本文由 华域联盟 原创撰写:华域联盟 » 关于 php:Magento: 删除”paypal/express/review”步骤的简单方法
转载请保留出处和原文链接:https://www.cnhackhy.com/158087.htm