4

顧客に割引料金を提供するカスタム モジュールを作成しました。このリンクを参照して、顧客手数料割引用のカスタム モジュールを作成しました。

この場合、顧客が独自の割引ポイントを持っている場合、カート ページで割引ポイントを適用して、小計と総計を減らします。変更は、カートやチェックアウト ページなどで正常に機能します。

私の問題は、注文の小計と総計が Paypal 支払いゲートウェイの項目に反映されないことです。

そのため、イベント オブザーバーを作成して、サブ合計で割引料金を差し引き、新しい行をペイパル ライン アイテムに追加しました。

以下のコードでは、割引料金と小計控除のために新しい行を追加しようとしました

<events>
        <paypal_prepare_line_items>
                <observers>
                    <modulename>
                        <type>singleton</type>
                        <class>modulename/observer</class>
                        <method>prepareItems</method>
                    </modulename>
                </observers>
         </paypal_prepare_line_items>
</events>

そしてオブザーバーコアは

<?php 
class Mycompany_Modulename_Model_Observer extends Mage_Core_Model_Abstract
{
    const TOTAL_FEE = 'Fee';
    const TOTAL_SUBTOTAL = 'subtotal';

    public function prepareItems($observer)
    {   
        $cart = $observer->getPaypalCart();

        if($cart->getSalesEntity()->getFeeAmount())
        {

            $name = 'Custom Discount';
            $qty = '1';
            $amount = -1.00 * $cart->getSalesEntity()->getFeeAmount();
            $identifier = NULL;

            $cart->_shouldRender = true;

            $item = new Varien_Object(array(
                'name'   => $name,
                'qty'    => $qty,
                'amount' => (float)$amount,
            ));

            $cart->_items[] = $item;

            $cart->updateTotal();

        }

        return;

    }

}

誰でも私に正しい解決策を指摘できますか?

Paypal の項目に割引料金を追加する必要があり、小計が正しく計算されます。

よろしくお願いします。

ありがとう。

4

2 に答える 2

3

あなたはおそらくすでにそれを理解しています。しかし、あなたがしようとしていることはできません._itemsにアクセスできるとは思いません. 代わりに:

$cart->addItem($name, $qty, $amount);

updateTotal を呼び出す必要はないと思います。前の手順を行ったところ、その金額が Paypal 標準メソッドの合計集計金額に追加されました。単純なフォームの代わりに API を使用する他のメソッドについてはテストしていません。

于 2013-04-14T06:27:59.217 に答える
1

問題を解決するはずのオブザーバー クラス コードを次に示します。

class Mycompany_Modulename_Model_Observer
{
    public function prepareItems(Varien_Event_Observer $observer)
    {        
        $label = SOME_LABEL;
        $qty = SOME_QTY;
        $feeAmount = SOME_FEE_AMOUNT;
        $itemNumber = SOME_IDENTIFIER_OR_SKU;

        /* @var $cart Mage_Paypal_Model_Cart */
        $cart = $observer->getEvent()->getPaypalCart();

        $cart->addItem($label, $qty, $feeAmount, $itemNumber);

        return $this;
    }
}
于 2015-08-23T16:09:44.890 に答える