2017-09-06 20 views
0
public class OrderCard 
{ 

    public string cardnumber { get; set; } 
    public string cardname { get; set; } 
    public string cardexpire { get; set; } 
.. 
.. 
} 

public class Order 
{ 
    public static Order GetOrder() 
    { 
     if (HttpContext.Current.Session["Cart-Order"] != null) 
      return (Order)HttpContext.Current.Session["Cart-Order"]; 
     else 
      return new Order(); 
    } 

    public int OrderId { get; set; } 
    public string billingName { get; set; } 
    public string billingAddress { get; set; } 

    public OrderCard Card { get; set; } 

    public bool IsNewCustomer { get; set; } 
... 
} 

別の方法で/への反映/参照クラスIは、チェックアウトプロセス のための上記のようないくつかのクラスを作成し、私は移動/

注文クラスを埋めるために)AJAXとJSON経由で/投稿ページの情報を送信し

質問#1: cOrderをactionPayment()に送って取り戻すのは正しいですか?

質問#2:が、これは、その後のために彼のすべてのページのセッションで、このクラス情報を変更/実行(ユーザーの課金情報のためのクラス、ショッピングカード情報、カード情報を作成する)とセッションに転送する真のアプローチですeコマースのウェブサイトですか?

*****私の英語のため申し訳ありませんが、私は*****それを説明することを願って

***** checkout.aspx ***** 

[WebMethod(EnableSession = true)] 
public static string SaveBillingAndPay(Order cOrder) 
{ 

    OrderCard cardContainer = cOrder.Card; 
    .. 
    .. 
    cOrder = null; 
    cOrder = Order.GetOrder(); 
    cOrder.Card = cardContainer; 

    cOrder = actionPayment(cOrder); 

    .. 
    .. 
    return "thanks.aspx"; 
} 

private Order actionPayment(Order cOrder) 
{ 
    // do things 

    return cOrder; 
} 

答えて

0

質問#1:はactionPayment(にコーダーを送信するために、それを右です)、その後服用戻る?

回答1:はい、これは完全に有効な処理オーダーです。電子商取引アプリケーションでは、注文の詳細全体が単一のエンティティに格納されます。あなたが渡しているクラスのオブジェクトであり、メモリ参照位置のコピーを介して渡されることを忘れないでください。ネットワークを介して渡さない限り、オブジェクト全体がパラメータに常にコピーされることはありません。あなたはオブジェクトを渡していますが、何らかのアクションが実行されています。さらに多くのフィールドが戻ってきて、オブジェクトをより詳細に戻します。

質問#2:が、これは本当のアプローチ(ユーザーの課金情報のためのクラス、ショッピングカード情報、カード情報を作成)してから行ってセッションに転送/ eコマースのための彼のすべてのページのセッションでこのクラスの情報を修正していますウェブサイト?

回答2:です。セッションはどこに保存されていますか?主に電子商取引アプリケーションでは、セッションはSQLサーバーなどのデータベースに格納されます。それは悪く見えるかもしれませんが、何かを容易にします。ユーザーが途中でセッションを終了して明日に戻って注文を完了したい場合、彼は最後にロードされたセッションを元に戻します。これにより、彼は製品選択全体をカートに戻すことになります。彼は注文画面に戻って非コミットされた注文の詳細を持っていて、基本的に、彼は途絶えたところから続けることができます。注文が完了して支払いが行われると、これらの詳細は注文に変換され、セッションから削除されなければなりません。アプリケーションがこのセッションの詳細を完全にメモリ内にのみ格納している場合は、間違ったことをしています。 また、後の取引のために保存しない限り、ユーザーのクレジットカードまたは支払いまたは銀行口座の詳細をプレーンテキストまたはデータベースに保存しないでください。また、これらの場合、暗証番号またはCVV番号または有効期限は保存しないでください。トランザクションゲートウェイが提供するストアドトランザクションIDのみ。問題が発生した場合にトランザクションをマップし、トランザクションポリシーで許可されている場合は、最後の4桁までマッピングできます。