当在magento中使用paypal进行订购时,它会带您到paypal,paypal已经显示一个确认,您确认,您将重定向到另一个确认页面(/ paypal /这是一个额外的步骤,对用户体验来说是不必要的,我想删除它并在用户在PayPal页面上确认时自动下订单,一旦离开PayPal,如果订单成功,客户应该看到成功页面。Magento:简单的方法来删除“PayPal /快递/审查”步骤
是否有任何简单的解决方案,我可能忽略了这个问题,或者至少如果你能指出我正确的方向去除那一步。
当在magento中使用paypal进行订购时,它会带您到paypal,paypal已经显示一个确认,您确认,您将重定向到另一个确认页面(/ paypal /这是一个额外的步骤,对用户体验来说是不必要的,我想删除它并在用户在PayPal页面上确认时自动下订单,一旦离开PayPal,如果订单成功,客户应该看到成功页面。Magento:简单的方法来删除“PayPal /快递/审查”步骤
是否有任何简单的解决方案,我可能忽略了这个问题,或者至少如果你能指出我正确的方向去除那一步。
事实上,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分支拉? – thindery
我开始了,但还没有完成。不过,看起来这里还有其他一些好的答案。 –
Andrew Angel的回答确实不能避免确认页面,它只是将按钮值改为“付款”而不是“确认”,或类似的东西。
反正这样做的正确方法是要 \程序\代码\核心\法师\宝\型号\ config.php文件,以 getExpressCheckoutEditUrl($token)
方法,改变
'useraction' => 'continue',
到
'useraction' => 'commit’.
要在Paypal Express中确认用户页面,您只需更改控制器操作中的一行。 转到法师/贝宝/控制器/快递/抽象.php和搜索$this->_redirect('*/*/review')
;在returnAction()
。在那里,你必须改变
$this->_redirect('\*/\*/review');
到
$this->_redirect('\*/\*/placeOrder');
这样,当贝宝返回,返回你避免以显示整个浏览页面和支付被自动确认动作。所以,PayPal像PayPal Standard方法一样再次重定向到成功页面。
@Toni重定向url部分效果很好,谢谢!然而,将“继续”更改为“提交”并不会更改PayPal网站上的按钮。但是,我可以通过执行以下操作来修复它:在Toni指示更改继续提交的getExpressCheckoutEditUrl函数的正上方,具有函数getExpressCheckoutStartUrl。如果你在那里添加使用变量,它将起作用。 原始功能:
public function getExpressCheckoutStartUrl($token)
{
'return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'token' => $token,
));
}
新功能:
public function getExpressCheckoutStartUrl($token)
{
'return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'useraction' => 'commit',
'token' => $token,
));
}
注意 'useraction'=> '提交',在新的功能中的溶液。这应该工作!
所以合适的交易存在,完美的作品(对我来说)是从上面的一个总结:
1.转到: \程序\代码\核心\法师\宝\控制器\快递\ Abstract.php
和returnAction(搜索)为:
$this->_redirect('*/*/review');
有你有改变:
$this->_redirect('*/*/review');
到:
$this->_redirect('*/*/placeOrder');
2.转到: \应用\代码\核心\法师\贝宝\模型\ CONFIG.PHP 和改变:
public function getExpressCheckoutStartUrl($token)
{
return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'token' => $token,
));
}
到:
public function getExpressCheckoutStartUrl($token)
{
return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'useraction' => 'commit',
'token' => $token,
));
}
随着上面的2个变化,我弄清楚如何 跳过Magento Paypal Express结帐的评论页面。
+1对你感谢,它完美的作品 –
谢谢你克里尔沙阿。我正在寻找它几天...并且我从Toni + David在这里找到了解决方案,所以我为更清晰和更好的解决方案做了一笔总和。传播它:) –
实际上,我也在寻找几个小时,你的解决方案完美的工作 –
这是一步失踪,让我再次总结整个过程。
1.转至:\ app \ code \ core \ Mage \ Paypal \ Controller \ Express \ Abstract。PHP
和returnAction搜索()为:
$this->_redirect('*/*/review');
有你有改变:
$this->_redirect('*/*/review');
到:
$this->_redirect('*/*/placeOrder');
2.转到:\ app \ code \ core \ Mage \ Paypal \ Model \ Config.php并更改:
public function getExpressCheckoutStartUrl($token)
{
return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'token' => $token,
));
}
到:
public function getExpressCheckoutStartUrl($token)
{
return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'useraction' => 'commit',
'token' => $token,
));
}
有了你仍然会被带到浏览页面,并必须同意的条款和条件,以避免这一点去上述两个变化:
/app/code/core/Mage/Paypal/Controller/Express/Abstract.php 搜索:
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.’));
}
}
注释掉与一开始的简单//下面几行:
//if (array_diff($requiredAgreements, $postedAgreements)) {
// Mage::throwException(Mage::helper(‘paypal’)->__(‘Please agree to all the terms and conditions before placing the order.’));
// }
唯一的一次,你会被每一个采取在浏览页面是,如果客户贝宝返回一个错误拒绝。
其实这里提到的所有解决方案都需要编辑Magento核心。这被称为不良做法并且不会让您的商店更新。
你需要什么了干净的解决方案做:
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>
应用的/ 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>
2)重写配置,添加useraction '提交':
<?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,
));
}
}
3)创建观察者重定向:
<?php
class Avoe_Paypal_Model_Observer {
function paypalExpressReturnPredispatch($observer) {
Mage::app()->getResponse()->setRedirect(Mage::getUrl('*/*/placeOrder'));
}
}
还有一个小的Magento昨天刚刚发布的扩展程序,删除审查步骤:
https://github.com/tim-bezhashvyly/Sandfox_RemovePaypalExpressReviewStep
Magento的1.9内置了这种支持,在跳命令检查步骤选择,但它有一个微妙的警告。该功能不适用于您可以在产品详细信息和购物车页面上显示的“快捷方式”按钮。
我的建议,禁用快捷按钮并启用Skip Order Review步骤选项。对于额外的信用,您可以重新排列Onepage结帐流程,以便客户不必两次输入结算信息(一次在Magento上,再次在PayPal上输入)。
更多详细信息请参阅this blog post。
如果您不需要此功能,请勿使用paypal express并使用paypal标准。 paypal express是结帐方式,而不是付款方式 –
谢谢!我没有注意到这一点。现在我做了。 –
这解决了你的问题? –