2013-05-12 48 views
1

我有一個網站提供了導遊服務。每次巡演都會根據參與者的價格來定價。在重定向到PayPal之前提交表單

用戶必須填寫表格,然後服務器必須驗證表格,然後向客戶和代理辦公室發送電子郵件,其中包含預定行程的詳細信息(首選日期,多少人等)以及然後將用戶重定向到paypal進行支付。

問題是,貝寶提供的立即購買按鈕有他自己的形式與一些隱藏的字段,所以在同一頁上的兩種形式。

我發現樹解決方案,但我不知道什麼是最好的。

  1. 當用戶按下提交,做驗證,發送的電子郵件,然後將用戶重定向到有一個按鈕,說像「執行支付」即提交貝寶形式與送禮者的價格在一個頁面隱藏字段

  2. 當用戶按下提交按鈕時,在服務器上進行ajax調用以驗證表單併發送電子郵件,然後成功提交貝寶表單。

  3. 當用戶按下提交,做驗證,發送的電子郵件,然後服務器提交表單到PayPal

我讀了幾個小時尋找這一問題的最佳解決方案。什麼是最安全,最有效的,不會給用戶造成問題。

對不起,我的英語

+0

我認爲您最好閱讀PayPal商家API,它會變得簡單很多 – 2013-05-12 15:37:04

回答

4

假設您對Web開發有一定的瞭解(因爲您正在討論窗體,會話等),我建議使用PayPal Express Checkout API。你想做的事很常見。以下是我該怎麼做:

  1. 用戶在第1頁的表格中輸入旅遊信息,並點擊「提交」按鈕。

  2. 您的服務器接收到該調用,驗證表單並調用SetExpressCheckout並將PAYMENTACTION設置爲「授權」。這就像「預訂酒店房間」或「租車」。您現在只是要求用戶授權付款;還沒有收費。

  3. 該API會爲您返回一個令牌。您將此令牌與旅遊信息一起存儲在後端數據庫中;並將此特定「預訂」標記爲「收到預訂請求」。

  4. 您將用戶重定向到paypal.com(並在URL中傳遞該令牌)以「授權」付款。

  5. 一旦用戶完成授權,paypal會將用戶重定向到您的網站(「paypal術語」中稱爲「成功頁面」或「返回URL」)。

  6. 您更新數據庫條目,狀態爲「已付款授權」。此時您向用戶和代理商發送電子郵件。

  7. 業務代表驗證並確保巡迴中還有空餘房間等,讓我們知道用戶已全部設置。

  8. 此時您使用該標記調用DoCapture API。這實際上「捕捉」了付款。並且您更新狀態爲「已處理付款」的數據庫條目。您還可以向用戶發送另一封電子郵件,確認付款和預訂。

此時如果有一個落客(比如用戶沒有完成授權)的任何階段,你就會知道,從你的數據庫,你可以發送跟進電子郵件給用戶。或者,如果他授權,但後來代理說該特定行程中沒有空間,則可以再次跟進用戶的下一個可用日期,或者撤消付款等。

是的,這意味着它是「更多的編碼「...但是你會得到」更大的靈活性「,希望你能夠減少掉落。

希望這會有所幫助。以下是快速結帳的文檔:https://cms.paypal.com/cms_content/CA/en_US/files/developer/PP_ExpressCheckout_IntegrationGuide.pdf。有Java,PHP等SDK可用於幫助商家快速集成。

+0

謝謝!非常堅實的答案。您認爲使用PayPal IPN做更好,並遵循您所描述的邏輯,因爲我唯一可用的付款選項是貝寶。所以我想如果有些客戶沒有貝寶賬戶通過貝寶網站用信用卡支付。 – Laxmana 2013-05-13 11:25:03

+0

是的,你也可以用IPN做到這一點,但是你可以想象它會有點複雜(就像你提到你必須使用ajax來「記錄預訂請求」等)。但是,如果你想要轉到IPN路由,然後將按鈕中的PaymentAction設置爲Authorization。然後,您可以通過登錄您的PayPal帳戶或使用API​​來捕獲付款。更多詳細信息在這裏:https://developer.paypal.com/ webapps/developer/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/ – 2013-05-13 19:00:31

+0

+1這麼好的一個 – 2013-05-14 06:31:24

1

你會創建排序與貝寶形式的所有值確認頁面,但使用<input type="hidden" balal /> rather than <input type="text" balal />

嘗試向上突破的過程,而不必整個交易坐在即「立即購買」按鈕。也許在你的網站上創建一個基本的購物車系統,然後允許用戶結賬,然後用隱藏的輸入將它們的購物車的內容發送到PayPal。

通過這種方式,您可以將用戶與預訂進行匹配。

+0

我認爲可能是最好的解決方案,打破這個過程。這會產生一個小問題。如果用戶填寫表單並按提交,然後在另一頁上,用戶不會因爲某種原因點擊繼續,則會在代理辦公室發送一封電子郵件,其中包含用戶提交的詳細信息。 – Laxmana 2013-05-12 15:51:42

+0

我建議使用PayPal的IPN回調(使用return_url字段設置)來確認付款,然後處理數據/電子郵件。只有付款完成後纔會發送IPN回撥。 https://www.paypal.com/au/cgi-bin/webscr?cmd=p/acc/ipn-info-outside – 2013-05-12 15:55:19

+0

感謝您的幫助!所以我必須將我的數據存儲到會話中?然後,當貝寶重定向到我來處理數據?但是,如果用戶付款,然後發生了一些事情,但無法重定向,用戶將付費,但代理商不會知道他預訂的旅程的詳細信息。對不起,是偏執:)編輯 – Laxmana 2013-05-12 16:05:28