0

我正在尝试为 PayPal IPN 编写自己的 ASP.NET C# 处理程序页面。

我跟踪了一些我在网上找到的示例,但没有成功。

我似乎在第一步失败了:捕获从 PayPal 发送到处理程序页面的即时付款通知 (IPN) 数据。

我有一个网页: PayPalIPNHandler.aspx.cs 并且在 Page_Load 我有以下内容:

protected void Page_Load(object sender, EventArgs e)
{

    byte[] param = Request.BinaryRead(Request.ContentLength);
    string strRequest = Encoding.ASCII.GetString(param);

}

我使用一些示例数据来测试处理程序页面:

/sitename/PayPalIPNHandler.aspx?mc_gross=0.01&protection_eligibility=Eligible&address_status=confirmed&item_number1=&payer_id=pid&tax=0.00&address_street=23%20The%20Street&payment_date=12:38:53%20Jan%2010,%202012%20PST&zip=windows-status=25&char_zip=windows-status= IP4%204LP&mc_shipping = 0.00&mc_handling = 0.00&FIRST_NAME =约翰&mc_fee = 0.01 address_country_code = GB&ADDRESS_NAME =约翰%20Smith&notify_version = 3.4&定制= payer_status =未经验证和业务= X @ googlemail.com&ADDRESS_COUNTRY =联合%20Kingdom&num_cart_items = 1&mc_handling1 = 0.00&ADDRESS_CITY =伊普斯维奇&verify_sign =验证和PAYER_EMAIL = X @ gmail的.com&mc_shipping1=0.00&txn_id=1&payment_type=instant&last_name=Smith&address_state=Suffolk&item_name1=&receiver_email=x@googlemail.com&payment_fee=&quantity1=1&receiver_id=w&txn_type=cart&mc_gross_1=0.01&mc_currency=GBP&residence_country=GB&transaction_subject=Shopping%20Cart&payment_gross=&ipn_track_id=Bu4

但是, ContentLength 似乎总是 0 而 strRequest 是 ""

我显然犯了一个非常愚蠢的错误,但我只是看不出我做错了什么。

请帮忙。

亲切的问候

沃尔特

4

1 回答 1

1

HTTP GET 请求的内容将始终为空 - 只有在 POST(以及 PUT 和可能的 DELETE)请求上发送内容才有效。根据您的评论,我会说您需要查看

Request.ServerVariables["QUERY_STRING"]
于 2012-09-10T22:43:41.683 回答