Мерчант Web Money

Александр Злобин
Дата: 25.04.2010 02:54:02
Кто ни будь сталкивался - почему невозможно прочитать параметры из POST запроса от мерчанта Web Money? Проверяю через мейл - приходит нормальное письмо, все параметры на месте, направляю на свою страницу - ничего нет в параметрах... пусто... ШЕСТЬ ЧАСОВ (без обмана) мучаюсь... чего только не перепробовал...

вот как пытаюсь читать:

protected void Page_Load(object sender, EventArgs e)
{
if (null == Request.Form) return; // никак не реагируем

string LMI_PREREQUEST = Request.Form["LMI_PREREQUEST"];
if (string.Compare("1", LMI_PREREQUEST) == 0)
{
Response.Write("YES");
return;
}

string context = Request.Form.ToString();
}

получаю пустую строку... хоть убейся...
SanSYS
Дата: 25.04.2010 12:27:11
хм.... Request["LMI_PREREQUEST"] ? большой разницы нет, понимаю, но все же - так будет результат?
Александр Злобин
Дата: 25.04.2010 13:51:23
SanSYS,

попробовал, разница есть и так вообще не работает, потому что объект Request вообще не содержит такого поля... т.е. возникает исключение...
Александр Злобин
Дата: 25.04.2010 13:59:42
Ночь не спал, перерыл кучу форумов, нашел еще несколько таких же вопросов, т.е. я не один такой... но нигде нет решения... везде пишут что читать просто через Request.Form... но ведь не читается!!!
SanSYS
Дата: 25.04.2010 20:56:06
фигово :( попробуйте пойти каким-нить другим путем
Александр Злобин
Дата: 26.04.2010 13:42:37
SanSYS,

к концу второй бессонной ночи накопал решение...
Zoria
Дата: 26.04.2010 13:51:14
Александр Злобин
SanSYS,

к концу второй бессонной ночи накопал решение...

"ну рассказывайте, как обгоняли, как подрезали" (с) ? если не жалко, конечно :)
Александр Злобин
Дата: 26.04.2010 21:48:56
Zoria,

Не жалко. Рассказываю. Два ключевых момента, из-за которых из Request ничего не читается.

1. В качестве Result URL нужно использовать специальную ashx-страницу а не aspx, ибо на aspx-странице в Request оказывается пусто (причина до сих пор не выяснена, по идее он везде должен быть одинаковый).

2. На aspx-странице с формой запроса платежа надо отключить ViewState, ибо иначе он при запросе забивает строку параметров так, что там в итоге оказываются некорректные данные и невозможно из Request вынуть нужные параметры. Я это сделал так (в классе страницы):

protected override void SavePageStateToPersistenceMedium(object state) { }
protected override object LoadPageStateFromPersistenceMedium() { return null; }

Ну и после этого всё встало на свои места...