2012-04-23 117 views
2

我爲一個網站設置了付款頁面,首先完成了一個簡單購物車的小孩,然後當用戶點擊「提交」時,我需要將交易數據發佈到外部信用卡處理站點,並重定向用戶訪問該網站。一旦他們在那裏輸入了他們的信用卡信息,該網站就會重新導向我,無論是批准還是拒絕。如何使用POST重定向ASP.NET MVC?

問題是,我無法看到MVC界面中的任何內容,允許我使用POST操作進行重定向。 Redirect()方法使用GET(在第三方站點上不起作用)。我嘗試使用WebClient.UploadValues()做一個程序化的帖子,然後我從字符串中返回一個字符串,我可以通過返回Content()來向用戶顯示 - 但是這個表單中的鏈接應該與CC處理網站相關解釋爲相對於我的網站,這是沒有流血使用我。

我該怎麼做?

+0

難道你們就不能只是發佈到該網站直接? – 2012-04-23 18:50:09

+0

@TimBJames - 不需要,我需要做一些預處理來生成我自己的交易ID等。 – 2012-04-23 18:51:05

+0

@Shaul - 重點是在您打開結賬頁面之前生成這些東西。例如,您的交易ID可以基於您的購物車ID,客戶ID等確定性地確定,以便在將交易張貼到卡處理器之前生成它。 – tvanfosson 2012-04-23 19:32:21

回答

0

根據您的信用卡處理提供商,機制可能會有所不同。通常,您可以使用帶有URL參數的GET,然後用它們來填充會話並重定向到收集信用卡信息的表單,或者更有可能的是,您將其URL用作檢出頁面上的操作以便它直接發佈到他們的網站。請檢查您的提供商的文檔和示例,因爲該機制取決於他們所支持的內容。

+0

通過URL參數使用GET不起作用。發佈確實有用 - 但是我的回答讓人感到不安,因爲MVC3不支持程序化發佈。那是對的嗎?如果是這樣,他們爲什麼會這樣設計呢? – 2012-04-23 18:59:43

+0

@Shaul不幸的是我相信程序員發佈不是在mvc中實現的。 – 2012-04-23 19:09:22

+0

通常情況下,您將生成帶有指向信用卡處理器站點的窗體的視圖。通常情況下,如果您直接發佈到自己的網站,而不是使用某些帶外API,則可以在自己的網站上隱藏(或以其他方式)字段生成所需的所有數據,並將其直接發佈到其網站。除了生成一個使用javascript自動提交表單的頁面之外,沒有任何方法可以從服務器強制瀏覽器在其他地方發佈。我會考慮自動提交惡意,並且不應該有必要與提供商合作。 – tvanfosson 2012-04-23 19:10:24

5

您無法使用信息重定向。

但是,您可以這樣做:

  • 接收後,做的東西就可以了
  • 回報用戶包含充滿包含隱藏字段處理的數據
  • 具有形式自動提交表單視圖使用javascript(在您的CC提供商處設置了後動作)
  • 用戶轉到CC提供商
  • 用戶返回到您的網站

編輯 - 使用jQuery,形式後與窗體ID ccform,設置爲你的CC提供的URL的行動和隱藏字段:

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

大聲笑,這是@tvanfosson迴避的「邪惡」建議。 :-)由於我根本沒有使用JavaScript,所以請您提供一個代碼示例說明如何完成這項工作? – 2012-04-23 19:21:18

+0

這是「邪惡的」,但如果您想使用POST,則無法以其他方式完成。但我同意你的CC提供者應該爲你提供更好的API。 – werfu 2012-04-23 19:34:42

+0

感謝您的編輯!我如何知道要輸入「#ccform」的字符串?你如何使用'Html.BeginForm'發佈到遠程站點? – 2012-04-23 20:42:21