【问题标题】:Magento: Remove JavaScript from checkout pageMagento:从结帐页面中删除 JavaScript
【发布时间】:2012-04-05 13:57:40
【问题描述】:

我目前正在 Magento 中基于“单页结帐”创建结帐页面 - 或者,我清空了 onepage.phtml 并从头开始。

下订单和一切,但用户永远不会进入第三方支付页面;一些支付方式返回一个空白页面,而另一些返回错误代码“Klarna::setConfig 中的错误:缺少配置字段:秘密”

我怀疑涉及到一些缺少的 JavaScript,所以我的最后一个问题是:是否有可能在没有 JavaScript 的情况下进行结帐,在这种情况下,如何?

如果相关,这里是我用来创建订单的 PHP 代码(放在 onepage.phtml 的顶部)。

<?php
    $checkout = Mage::getSingleton('checkout/type_onepage');

    //STEP(1)
    $checkout->saveCheckoutMethod('guest');

    //STEP(2)
    $checkout->saveBilling($_POST['billing'], false);

    //STEP(3)
    $checkout->saveShipping($_POST, false);

    //STEP(4)
    $checkout->saveShippingMethod('flatrate_flatrate');

    //STEP(5)
    $checkout->savePayment($_POST['payment']);

    //STEP(6)
    $checkout->saveOrder();
?>

提前谢谢你!

【问题讨论】:

  • 这不容易。 Magento 结帐几乎完全基于原型,您需要编写自己的方法来替换他们在 JavaScript 中执行的步骤来删除它。
  • 好的。但是在结账过程中 JavaScript 到底做了什么?

标签: php javascript magento checkout


【解决方案1】:

是的,您可以在没有任何 JS 的情况下下订单。为了支持在 savePayment 方法之后带有一些重定向 url 的付款方式,您必须添加以下行:

$redirectUrl = $checkout->getQuote()
   ->getPayment()
   ->getCheckoutRedirectUrl();
if ($redirectUrl) {
    return $this->getResponse()->setRedirect($redirectUrl);
}

在 saveOrder 之后添加:

$redirectUrl = $checkout->getRedirectUrl();
if ($redirectUrl) {
    $this->_redirect($redirectUrl);
}

您还必须使用 try {...} catch () { ...} 块进行错误处理:

try {
   $checkout = Mage::getSingleton('checkout/type_onepage');

    //STEP(1)
    $checkout->saveCheckoutMethod('guest');

    //STEP(2)
    $checkout->saveBilling($_POST['billing'], false);

    //STEP(3)
    $checkout->saveShipping($_POST, false);

    //STEP(4)
    $checkout->saveShippingMethod('flatrate_flatrate');

    //STEP(5)
    $checkout->savePayment($_POST['payment']);

    //STEP(6)
    $checkout->saveOrder();
} catch (Mage_Core_Exception $e) {
    Mage::getSingleton('checkout/session')->addError($e->getMessage());
} catch (Exception $e) {
    Mage::logException($e);
    Mage::getSingleton('checkout/session')->addError(Mage::helper('checkout')->__('Unable to process your order. Please try again later'));
}

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2015-06-07
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多