2012-02-09 30 views
0

我試圖解決一個工作流,看起來是這樣的:(在PHP)用重定向POST'ing到新頁面的最佳做法?

  1. 用戶輸入訂單信息在我的購物車。
  2. 的順序被捕獲並存儲到我的數據庫(W/O的信用卡信息)
  3. 用戶被重定向到authorize.net的SIM網頁進行付款

當前設置:

購物車。 PHP - 收集用戶的發貨信息的/ etc

storeorder.php - 存儲在我的數據庫的順序,然後組裝與適當的要求authorize.net POST字段的表單

簡而言之,用戶最終不得不查看不必要的中間頁面,他們必須單擊「付款」表單提交按鈕,然後將它們發送到authorize.net。

組合這些步驟的最佳做法是什麼? (接收POST,將信息存儲在我的數據庫中,然後在沒有任何用戶交互的情況下使用新的POST字段自動重定向到authorize.net)

回答

0

用戶是否必須在authorize.net頁面上執行任何類型的輸入或你的表格是否提供了所有需要的信息?如果你生成了所有的信息,那麼最簡單的方法是通過一個呼叫authorize.net直接向他們推送數據並檢查返回狀態代碼/輸出以查看它是否成功/不等。

如果用戶仍然需要輸入帳單詳細信息,請使用以下方法。

形式職位,以/somepage.php

somepage.php它運行在底部的處理,並一路一旦處理完成加標題(「位置:https://www.authorize.net/dopaymenthere」);

請確保你仍然在這個頁面上回顯付款按鈕,以防萬一用戶在他們強迫重定向停止等地方做了一些不尋常的事情。這樣看起來不像破碎的代碼,但對於少數幾個例外情況對他們的瀏覽器不起作用,你仍然可以正常處理它們

PS:這隻會通過連接post變量作爲get請求來工作,假設authorize.net將處理get請求作爲變量。

真正簡單的方法來做到這一點,而不使用獲取請求是與JavaScript提交表單上的DOM準備...這種方式,你可以顯示處理訂單的消息給用戶。並貼有隱藏的形式直接向authorize.net的情況下,你的處理時間比預期要等

在你有類似的processing.php頁面上的jQuery方面:

echo $form; // HTML form with all it's values required by authorize.net 
echo "<h1>Processing your request</h1>"; 
<script type='text/javascript'>$(document).ready(function(){$('#hiddenformid').submit();});</script> 
+0

原始海報:是的,我們正在使用SIM卡方式,因此用戶必須在authorize.net頁面輸入所有賬單信息。 (信用卡#,到期日期,安全碼)。我們不直接傳遞這些信息的原因是因爲從技術上講,它使您略微超出PCI合規性。 (上面的用戶在技術上使用直接後置方法(DPM),而不是SIM)。 – NQQ 2012-02-09 05:20:50

+0

使用託管表單的關鍵在於不要讓敏感信息通過服務器運行。如果您正在收集付款數據,然後將其發送到authorize.net,那麼您最好使用AIM。 – 2012-02-09 05:21:42

+0

根據你的回答,解決你的問題最簡單的方法是用戶不會看到的即時重定向。我將編輯我的anser以使其更加清晰。 – 2012-02-09 05:25:04

0

shoppingcart.php您可以放置​​一個結賬按鈕。按提示用戶操作已提交。 Do not save item prices/quantity in hidden fields.在用戶結帳按鈕的POSTing之後,您可以將所有信息保存在數據庫中,並在PHP Post條件中創建一個HTML表單,以爲authorize.net設置值並將您的頁眉重定向到付款頁面。

1

不要與用戶的錢交互!
即使您不想存儲信用卡詳細信息,您的網站可能會被黑客攻擊並且攻擊者會得到它。

  1. 用戶在我的購物車中輸入訂單信息。
  2. 該訂單是通過authorize.net的SIM頁面處理付款
  3. authorize.net聯繫您的網站與付款細節。

是最合適的方式。
世界上每個站點都以這種方式工作。所以你必須。不要把自己當成一個聰明的王牌。

相關問題