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 /贝宝的/ 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
如果您不需要此功能,请不要使用paypal express并使用paypal标准.paypal express是一种结账方式,而不是付款方式
编辑:现在可配置为1.9,仍然是延迟但可行.
小智 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中跳过评论页面.
小智 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标准方法相同的方式再次重定向到成功页面.