2010-04-07 125 views
5

即時通訊編寫表單將數據發佈到paypal,這工作正常,我創建帶有隱藏字段的表單,然後提交一切提交到貝寶提交按鈕。自動提交表單(cURL)

但是,當用戶單擊該按鈕時,我想要做的更多,例如在數據庫中更改其購物車狀態。所以,我希望能夠在點擊提交時執行一些代碼,然後將數據發佈到paypal。

我不想爲此使用JavaScript。

我現在的方法是使用cURL,表單發回到當前頁面,然後檢查$ _POST數據,執行其他命令,如更新購物車的狀態,然後創建一個curl命令,以及將表單數據發佈到paypal。現在,它已成功發佈,但瀏覽器不會關閉到貝寶。

起初我只是退回一個字符串的結果,然後回顯出來,我可以看到該帖子成功,然後我設置CURLOPT_FOLLOWLOCATION爲1假設這會讓瀏覽器去貝寶,但它沒有,它似乎做的是從貝寶中抓取一些東西,並把它放在我的頁面上。

使用cURL是正確的嗎?如果是這樣,我該如何解決這個問題?我想遠離javascript,因爲只有啓用了javascript的用戶才能更新購物車。

用於curl的im代碼位於下方,post_data是我創建的數組,然後將鍵值對讀入post_string。

//Set cURL Options 
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($curl_connection, CURLOPT_USERAGENT, 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, false); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl_connection, CURLOPT_MAXREDIRS, 20); 

//Set Data to be Posted 
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string); 

//Execute Request 
curl_exec($curl_connection); 

回答

2

也許嘗試捲曲用頭聲明

<?php 
header ("Location: https://www.paypal.com/"); 

這可能因工作,如果瀏覽器需要通過任何狀態(會話)信息,以貝寶結合起來。此會話信息收集在您的CURL調用中,但不幸的是,無法將其傳遞給瀏覽器。所以如果你需要保持這個狀態,那麼這是行不通的。

Curl在服務器端運行。它不會影響你的瀏覽器。 CURLOPT_FOLLOWLOCATION只是簡單地指示CURL服從,例如貝寶發送一個頭像上面提到的頭。指示瀏覽器執行某些操作的唯一方法是使用上面的HTTP頭或HTML響應中的某種元標記進行響應,例如

<META HTTP-EQUIV="refresh" CONTENT="10;URL=https://www.paypal.com/"> 

作爲一種替代方案,paypal是否不提供重定向功能,當交易完成後,重定向回您的服務器。如果是這樣,那麼只需在回調過程中更改卡片狀態並跳過整個捲曲過程?

+0

謝謝,我希望我不會在貝寶的回調中做到這一點,我想設置一個購物車的狀態,因爲它發送到PayPal和一個時,它返回只是因此能準確跟蹤進度,並幫助糾正任何錯誤,虐待嘗試設置一些HTTP標題,並看到,但我可能只需要在回調中做。我只是假設自動提交表單並遵循該操作會更容易。 – cast01 2010-04-07 12:43:21

+0

我想你仍然可以爲那些已啓用javascript的用戶執行這兩種操作。對於那些沒有啓用JavaScript的用戶,只能使用回調,但對於那些已啓用javascript的用戶(大多數),您可以在ajax調用中設置'going-to-paypal'標誌,並將'set'設置爲'complete'國旗在回調中。 – 2010-04-07 13:07:57

1

在收到表單並做你需要做的事情之後,你應該展示另一個只有一個按鈕(隱藏字段中的其他數據)的表單,供用戶點擊並最終前往paypal。

+0

感謝您的回覆,但是這將破壞我試圖做的事情的目的。我想設置一個購物車,例如,當用戶點擊付費時,「去貝寶」。如果當他們點擊付款時,我然後設置購物車狀態並向他們展示他們必須提交的另一種表單,然後他們可以選擇不提交,然後我的購物車狀態將會錯誤。 – cast01 2010-04-07 12:44:25

+0

然後你需要一行javascript來自動提交表單。否則,您的服務器無法一次性重定向並單獨向PayPal提交表單。 – zaf 2010-04-07 13:15:23