1

MagentoでPaypalを使用する場合、標準とエクスプレスの2つの明確な選択肢があります。

実際には両者の違いはかなり紛らわしいですが、主な違いの1つは、ペイパル標準がペイパルにリダイレクトする時点ですぐに注文を完了するのに対し、エクスプレスはそうではないことです。

これは基本的に、ユーザーのバスケットがペイパルへの転送の時点でペイパル標準を使用してクリアされ、クリックして戻るとバスケットがなくなることを意味します。

これはコードのどの時点で発生していますか?

Magentoで2つの支払い方法を確認できます。

app\code\core\Mage\Paypal\Model\Express.php

app\code\core\Mage\Paypal\Model\Standard.php

しかし、magentoがエクスプレスで注文を継続できる場所がわかりません

4

2 に答える 2

7

ExpressとStandardの間の実際のフローは異なります...

PayPal Express

支払い方法が選択された直後(そして明らかに注文が完了する前)に、ユーザーはPayPalにリダイレクトされます。PayPalでの支払いを承認した後、サイトに戻って注文を完了します。

PayPal標準

ユーザーはチェックアウトプロセス全体を実行し、サイトで注文を完了します。その後、支払いを整理するためにPayPalにリダイレクトされます。PayPalにリダイレクトする前に注文が完了しているため、注文を完了するためにサイトに戻る必要はありません。これが、PayPalで支払うかどうかに関係なく、サイトに戻ると空のバスケットが表示される理由です。見積もりはすでに注文に変換されています。

したがって、この意味で、PayPal Expressは基本的にチェックアウト方法であり、PayPal標準は支払い方法です。


これがすべて起こるコード内の正確な場所に関して...

PayPal Express

Mage_Checkout_OnepageControllerのsavePayment()アクションで呼び出されるgetCheckoutRedirectUrl()メソッドを使用するため、上記のように注文が完了する前にリダイレクトされます。

PayPal標準

Mage_Checkout_Model_Type_OnepageのsaveOrder()メソッドで呼び出されるgetOrderPlaceRedirectUrl()を使用します

すべてが発生する正確なコードポイントについては、リンクを参照してください。

于 2012-08-18T12:06:34.520 に答える
-1

コードの簡単なチェックに基づく部分的な答え、おそらくこれは少なくともあなたを正しい方向に向けるでしょう。あなたが見つけたものを私に知らせてください、そして私はいくつかの追加の掘り下げを試みて、より多くの詳細を提供します。

// Mage_Paypal_StandardController
public function redirectAction()
{
    $session = Mage::getSingleton('checkout/session');
    $session->setPaypalStandardQuoteId($session->getQuoteId());
    $this->getResponse()->setBody($this->getLayout()->createBlock('paypal/standard_redirect')->toHtml());
    $session->unsQuoteId();
    $session->unsRedirectUrl();
}

チェックアウト/セッションでquote_idが設定されていないことに注意してください。それはそれをするかもしれません。

quote_idまた、Expressコントローラーでは、が設定されていない場所はありません。

// Mage_Paypal_Controller_Express_Abstract
public function placeOrderAction()
{
    ...
}
于 2012-08-17T20:39:08.213 に答える