2014-06-19 62 views
0

在爲朋友建立電子商務模塊時,我遇到了一些問題。 整個過程如下:電子商務,成功支付重定向

  • 用戶進入網站並
  • 用戶存儲產品。產品點擊進入購物車,點擊「去收銀臺」
  • 用戶填寫的個人信息,如姓名,地址,電話號碼或電子郵件並點擊此時屆「下一步」
  • 包含CUTOMER和購物車內容的支付網關如PayPal的一個
  • 用戶點擊的所有個人信息,並支付他的產品

每個支付網關提供重定向客戶以下的一個能力:

  • 錯誤路徑
  • 中止路徑
  • 成功之路

所以,如果用戶successfuly祈禱,他是重定向到https://mydomain/payment_status?success 它插入到分貝具有完整的交易細節和成功的狀態,使產品可以發送。

問題是,每個人都可以把東西放到購物車上,直接去https://mydomain/payment_status?success

我們可以創建類似https://mydomain/payment_status?success&transaction_code=2783j4238942j4k2m

一些安全措施,但是它仍然是硬編碼和一個支付用戶後,就會知道哈希,據我所知網關如PayPal無法對自己的東西,將肯定地告訴生成該交易取得了成功。

任何人有想法如何處理這個問題?

---編輯---

貝寶形式:

echo '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">'; 
echo '<input type="hidden" name="cmd" value="_cart">'; 
echo '<input type="hidden" name="upload" value="1">'; 
echo '<input type="hidden" name="business" value="' . Config::Details('email') . '">'; 

//Products details 

echo '<input type="hidden" name="currency_code" value="' . Languages::lang_item('code') . '">'; 
echo '<input type="hidden" name="amount" value="' . $this->_total . '">'; 
echo '<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but03.gif" name="submit" alt="Make payments with PayPal - it\'s fast, free and secure!">'; 
echo '</form>'; 

Sofort形式:

echo '<form method="post" action="https://www.sofort.com/payment/start">'; 
    echo '<input name="amount" type="hidden" value="' . $this->_total . '"/>'; 
    echo '<input name="currency_id" type="hidden" value="' . Languages::lang_item('code') . '"/>'; 
    echo '<input name="reason_1" type="hidden" value="' . Config::Details('reason_1') . '"/>'; 
    echo '<input name="reason_2" type="hidden" value="' . Config::Details('reason_2') . '"/>'; 
    echo '<input name="user_id" type="hidden" value="' . Config::Details('user_id') . '"/>'; 
    echo '<input name="project_id" type="hidden" value="' . Config::Details('project_id') . '"/>'; 
    echo '<input type="submit" value="Odesłać"/>'; 
echo '</form>'; 

這些都是我們的支付網關,並在成功 - 重定向是爲我展示你在上面。 我也檢查,如果重定向後有任何$_POST細節提供,但沒有

+0

只是一個快速搜索PayPal API顯示一堆信息,您可以使用... https://developer.paypal.com/docs/classic/api/adaptive-payments/PaymentDetails_API_Operation/ –

+0

不成功頁面得到任何「POST」數據,如訂單ID等? –

+0

很好看api文檔,但如果我能弄清楚自己該怎麼做我不會問我會嗎?我發佈了我的網關編輯和即時通訊詢問如何修改它,以便能夠得到正確的響應,以及如何接收它 – Mevia

回答

1

這聽起來像貝寶的IPN(即時付款通知)將爲您工作。查看https://developer.paypal.com/webapps/developer/docs/classic/products/instant-payment-notification/ - 基本上,您設置了一個頁面來收聽貝寶的回覆。付款成功後,PayPal將安全地與您的聽衆頁面進行通信,以便您可以將訂單標記爲已付款和完成。

+0

這些都是困擾我,但: - 互聯網連接並不總是100%可靠和IPN信息可能會丟失或延遲 - 服務憤慨消息長達4天 - 因爲IPN不是實時服務,允許完成 之前,你結帳流程不應該等待IPN消息 - 和其他幾個人 好吧,它不覺得正確和值得信賴,似乎也不是大多數電子商務網站的常見做法 – Mevia

+0

它通常是即時的,但你是對的,它不是一項實時服務。但是,您可以編寫代碼來處理響應中的延遲。除非您知道資金已經衝擊您的賬戶,否則您不會想要將訂單標記爲已付款,因此,在通知到達之前,您會將訂單標記爲「正在進行中」,或沿着這些方向行事。 – danmullen

相關問題