0

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

下订单和一切,但用户永远不会进入第三方支付页面;一些支付方式返回一个空白页,而另一些返回错误代码"Error in Klarna::setConfig: Missing config field(s): secret"

我怀疑涉及到一些缺少的 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();
?>

先感谢您!

4

1 回答 1

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'));
}
于 2012-06-08T23:06:48.737 回答