2012-04-23 3 views
2

Я настраиваю страницу платежей для сайта, на которой сначала заканчивается ребенок из простой корзины покупок, а затем, когда пользователь нажимает «Отправить», мне нужно ПОСТАВИТЬ данные транзакции на внешний сайт обработки кредитных карт и перенаправить пользователя на этот сайт. Как только они ввели данные своей кредитной карты, сайт перенаправляет меня ко мне, либо с одобрением, либо с отказом.Как перенаправить ASP.NET MVC с помощью POST?

Проблема: я не вижу ничего в интерфейсе MVC, который позволяет мне перенаправлять с помощью действия POST. Метод Redirect() использует GET (который не работает в любом случае на стороннем сайте). Я пробовал делать программную запись, используя WebClient.UploadValues(), и я возвращаюсь от этой строки, которую я могу представить пользователю, возвращая Content(), - но тогда ссылки внутри этой формы, которые предположительно будут относиться к сайту обработки CC, вместо этого интерпретируется как относительно моего сайта, который не используется для меня.

Как это сделать?

+0

Вы можете не только разместить на этом сайте прямой ? –

+0

@TimBJames - Нет, мне нужно сделать предварительную обработку, чтобы создать свой собственный идентификатор транзакции и т. Д. –

+0

@Shaul - дело в том, что вы создадите эти вещи, прежде чем попасть на страницу проверки. Например, ваш идентификатор транзакции может быть детерминированно основан на идентификаторе корзины, идентификаторе клиента и т. Д., Чтобы вы могли сгенерировать его перед отправкой транзакции на процессор карты. – tvanfosson

ответ

0

В зависимости от вашего поставщика услуг по обработке кредитных карт механизм может отличаться. Как правило, вы либо используете GET с параметрами URL, которые они, в свою очередь, будут использовать для заполнения сеанса и перенаправления на форму, которая собирает информацию о кредитной карте, или, скорее всего, вы используете свой URL как действие на странице проверки так что он попадает прямо на свой сайт. Проверьте документацию и примеры вашего провайдера, поскольку механизм будет зависеть от того, что они поддерживают.

+0

Использование параметров GET с параметрами URL не работает. Проводка работает, но я получаю от вашего ответа непростое мнение, что MVC3 не поддерживает публикацию в программе. Это верно? Если да, то почему они спроектировали его таким образом? –

+0

@ Шой, к сожалению, я считаю, что программная публикация не реализована в mvc. –

+0

Обычно вы должны сгенерировать представление с помощью формы, указанной на сайте процессора кредитной корзины. Обычно, если вы делаете прямую запись на свой сайт, в отличие от использования какого-либо внеполосного API, вы генерируете все данные, которые им нужны, в скрытых (или других) полях на вашем сайте и публикуете их прямо на своем сайте. Нет, кроме создания страницы, которая автоматически блокирует форму с помощью javascript, любым способом с сервера, чтобы заставить браузер отправлять сообщения в другом месте. Я бы подумал, что это аутосубмит, и не нужно работать с провайдером. – tvanfosson

5

Вы не можете перенаправить использование сообщения.

Однако вы можете сделать это:

  • Получить почту и делать вещи на нем
  • Возврат пользователь вид, содержащий форму, заполненную Скрытое поле, содержащих обработанные данные
  • ли форма представленных автоматически используя javascript (наличие действия post, установленного вашим провайдером CC)
  • Пользователь отправляется поставщику CC
  • Пользователь возвращается на ваш сайт

EDIT - Использование JQuery, форма пост с формой ID ccform, с набором действий в URL вашего провайдера куб.см и скрытых полей:

$.ready(function() { $('#ccform').submit(); }); 
+0

LOL, это предложение «зла», которого избегает @tvanfosson. :-) Так как я совсем не дома с javascript, не могли бы вы включить пример кода, как это можно сделать? –

+0

Это «зло», но это не может быть сделано иначе, если вы хотите использовать POST. Но я согласен с тем, что ваш провайдер CC должен предоставить вам лучший API. – werfu

+0

Спасибо за редактирование! Как узнать, какую строку поставить для «#ccform»? И как вы используете 'Html.BeginForm' для публикации на удаленном сайте? –