0

現在、「One Page Checkout」に基づいて 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 に答える