2010-10-06 1 views
0

У меня есть кнопка ASP, когда она нажимается, она вызывает функцию, которая добавляет информацию о заказе в мою базу данных. Следующий этап процесса заказа заключается в передаче пользователя к платежному шлюзу с помощью этой формы:ASP.net C# почтовая форма для пользователей от имени

<form action="https://select-test.wp3.rbsworldpay.com/wcc/purchase" name="BuyForm" method="POST"> 
<input type="hidden" name="instId" value="151711"> 
<input type="hidden" name="cartId" value="abc123"> 
<input type="hidden" name="currency" value="GBP"> 
<input type="hidden" name="amount" value="1221"> 
<input type="hidden" name="desc" value=""> 
<input type="hidden" name="testMode" value="100"> 
<input type="submit" value="To Payment!"> 
</form> 

Однако я действительно хотел бы это так, чтобы пользователь:

прессованной кнопка заказа -> функция порядка называется -> Пользователь автоматически передается в порядке страница

Как предполагается:

кнопка прессованного заказа -> Функция порядка называются -> Пользователь переходит на другую страницу -> Пользователя вручную щелкает кнопку, чтобы перейти Worldpay страницы оплаты

Есть ли вообще в C# для перенаправления пользователя к страницу заказа и отправить данные формы с ними?

+0

Отъезд http://stackoverflow.com/questions/26857/how-do-you-programmatically-fill-in-a-form-and-post-a-web-page – InSane

+0

@Insane, это другое, потому что это возвращает результат и не перемещает пользователя. Это было бы (я думаю) нарушением правил платежных шлюзов. –

ответ

2

Вы можете переадресовать из обработчика представить первую форму заказа:

Response.Redirect("https://select-test.wp3.rbsworldpay.com/wcc/purchase?instId=151711&cartId=abc123&currency=GBP&amount=1221&desc=&testMode=100"); 

Обратите внимание, что ваши параметры формы в настоящее время открыты для несанкционированного доступа, независимо от того, подавать ли вы через GET или POST. Я уверен, что WorldPay имеет некоторые меры безопасности, которые вы можете использовать для предотвращения и/или обнаружения фальсификации. Вы должны использовать их!

Edit ...

WorldPay позволит вам submit a hash along with your payment parameters помочь предотвратить фальсификации. Это должно остановить любое вмешательство любительского опроса; может ли он остановить определенного атакующего, это другое дело.

Как вы упомянули в комментариях, вы должны обязательно зарегистрировать параметры на своем конце перед отправкой, а затем перекрестно ссылаться на них на данные обратного вызова, чтобы убедиться, что ничего не тронуто.

+0

@Tim: Уже редактировалось до того, как появился ваш комментарий. Проблема безопасности существует независимо от того, используете ли вы GET или POST: использование GET означает, что кто-то может изменять данные; использование сообщения означает, что * почти * кто-то может вмешиваться в значения. – LukeH

+0

Это должно быть сделано, я думаю! Шлюз выполняет обратный вызов для проверки, поэтому я просто буду отмечать любые измененные заказы. Тем не менее, я надеялся заблокировать любые любимые строки запросов. –

+1

@Tim: Если вы перенаправляетесь на внешний сайт, вам необходимо как-то отправить эти данные. Я очень сомневаюсь, что WorldPay сможет видеть данные сеанса, хранящиеся на сервере Тома. – LukeH

1

Вы можете использовать Response.Redirect("OtherPage.aspx"); в конце вашего обработчика событий. Используя этот метод, вы можете добавить элементы в строку запроса (например, идентификатор заказа) ... Response.Redirect("OtherPage.aspx?OrderID=abcdef");.

В качестве альтернативы вы можете выполнить обработку на странице заказа и перечислить ее как PostbackUrl, чтобы первая страница возвращалась непосредственно на страницу заказа.

+0

Вы можете передать какой-либо маркер в строке запроса, но фактический идентификатор может оставить вас открытым для подделки URL. В любом случае такой метод должен быть проверен на сервере на основе чего-то, что сложнее вмешаться (например, соответствующей переменной сеанса). –

0

Несколько способов:

1) Поместите заказ в состоянии сеанса и носить его вместе с пользователем, автоматически извлекая его, когда они перенаправляются на последней странице.

2) Создайте форму, которая отправляет свои данные с новой страницей в качестве цели (вместо того, чтобы возвращать себя в качестве поведения по умолчанию в ASP.Net).

3) Создайте форму со скрытыми полями и выведите ее на страницу.

В ситуациях № 2 и № 3 вы можете использовать скрипт на стороне клиента для автоматической отправки формы.

 Смежные вопросы

  • Нет связанных вопросов^_^