2011-12-09 11 views
2

私はASP.NET 4.0、C#、Webフォーム、およびマスターページを使用しています。Authorize.Netサイレントポスト発行

私はその別のページ(サイレント)への投稿ボタンでテストページ(Silent_Test)を持ってAuthorize.Netのサイレントポスト機能を実装しようとしていると、カップルのテストページに

を作成しました。この問題は、サイレントページがロードされた場合(つまり、Silent_Testユーザーのクリックボタンがサイレントページの読み込みにリダイレクトされた場合)、POSTを介してサイレントページが情報をキャプチャすることにあるようです。情報がページロードイベントにあるので意味がありますが、Authorize.Netのサイレントポストはページをロードしないので、ページがロードされないとPOST情報をキャプチャする方法はわかりますか?私の理解は間違っているのですか?これについては間違った方向に向かっていますか?誰かが、Authorize.Netがサイレントポストで送る情報を捕まえたり処理したりするためのヒントやサンプルコードを提供できますか?

Silent_Test.ASPX

<%@ Page Title="Silent Test" Language="C#" MasterPageFile="~/MasterPages 
/Site.master" AutoEventWireup="true" 
CodeFile="Silent_Test.aspx.cs" Inherits="_Silent_Test" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> 
    <form action="https://www.test.com/silent.aspx" method="post"> 
     <input type="hidden" name="x_response_code" value="9"/> 
     <input type="hidden" name="x_cust_id" value="99999999-9999-9999-9999-999999999999"/> 
     <input type="submit"/> 
    </form> 
</asp:Content> 

Silent_Test.ASPX.CS - コード変更されていない -

Silent.ASPX

<%@ Page Title="Silent" Language="C#" MasterPageFile="~/MasterPages/Site.master" 
AutoEventWireup="true" CodeFile="Silent.aspx.cs" Inherits="_Silent" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server"></asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> 
    <div> 
     <%-- There is no need to put anything in the .ASPX file since Authorize.net's server does not care about the response from the POST call.--%> 
     <p>You have reached this page in error. Please verify you have the correct web page address.</p> 
    </div> 
</asp:Content> 

Silent.ASPX.CS

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Configuration; 
using System.Data.SqlClient; 

public partial class _Silent : BasePage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string connectionString = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString1"].ConnectionString; 
     string insertSql = "INSERT INTO Silent(x_cust_id, x_response_code) 
     VALUES(@cust_id,@response_code)"; 
     using (SqlConnection myConnection = new SqlConnection(connectionString)) 
     { 
      myConnection.Open(); 
      SqlCommand myCommand = new SqlCommand(insertSql, myConnection); 
      myCommand.Parameters.AddWithValue("@cust_id", this.Request.Form["x_cust_id"]); 
      myCommand.Parameters.AddWithValue("@response_code", 
      this.Request.Form["x_response_code"]); 
      myCommand.ExecuteNonQuery(); 
      myConnection.Close(); 
     } 
    } 
} 

答えて