簡體   English   中英

使用外部支付網關進行電子商務庫存管理

[英]ecommerce stock management with external payment gateway

這個問題類似於這一個 ,但與一捻(所以接受了老問題的答案是無效在以下情況下)

我有一個賣票的網站(PHP / MYSQL)。 假設我只剩一張票:

  • 買方A將票放入購物車並進入支付網關頁面(即paypal)
  • 門票被鎖定5分鍾,所以買家B不能買
  • 買家A等待5分鍾,Paypal頁面打開,什么都不做
  • 機票已解鎖,因此買方B將其放入購物車並進入Pay​​Pal頁面
  • 買方A成功執行PayPal上的付款程序
  • 買方B成功執行PayPal上的付款程序

我可以等待更長時間,但我認為這不會在更一般的情況下解決問題。 而且,如果我這樣做,就可以制作某種DoS,將物品鎖定在庫存中很長一段時間。

什么是處理這種情況的最佳方法?

所有支付網關都會進行回發以告知您(例如)支付參考等。大多數還會回發授權/認證信息,例如CSC / CVV2檢查結果,以便您(商家)對是否接受最終決定權付款與否。

收到回發后,您應該能夠檢查機票是否仍然“鎖定”,如果沒有,則通過支付網關發出付款撤銷以取消付款。 然后你需要顯示一條消息'抱歉,超時超時請再試一次'

如果網關不支持“即時反轉”樣式功能,那么它們至少會支持某種“無效”功能,從而實際上不會從客戶卡中取出資金,並且授權保留會自動下降(通常在兩天后) ,雖然在某些卡上可能需要更長的時間)。 對於(希望很小)超時的交易數量,這可能是可以接受的。 值得監控多少交易超時,以便可以調整超時期限。

或者,如果票證不再被鎖定(並且再次,如果網關支持它),則發回退款付款。

您可能無法使用外部支付網關條目頁面並執行您要執行的操作。

Paypal和許多其他處理器都有直接的Web服務集成路線。 這意味着您收集頁面上的付款信息,將其提交給您的服務器,然后進行Web服務調用並立即從處理器獲得響應。 (我不記得PayPal稱之為產品的是什么,但過去它被命名為PayFlow Pro並且是從Verisign購買的。)

因此,當您將門票放入購物車時,您不會鎖定門票。 您的工作流程將是:

  1. 收集付款信息。
  2. 將付款信息發回服務器后:a。 嘗試鎖定票證 - 如果不可用則返回失敗b。 成功鎖定,處理授權
  3. 成功授權后,將從可用池中刪除票證。
  4. 如果授權或錯誤不成功,則會解鎖票證並可供其他用戶使用。

無需處理鎖定超時。 它們僅鎖定足夠長的時間以驗證有效付款。

您沒有詢問在防止PCI暴露的同時解決問題。 既然你可能會問:

有些處理器允許您將付款信息集合嵌入到您自己的頁面中。 有一些允許您獲取“令牌”來替換卡號,以便您的服務器永遠不會收到卡號。 然后可以在服務器端Web服務調用上使用該令牌。 您得到了所需的信息,而且您無需處理有關接收卡號的PCI問題。

一個更社交的解決方案而不是技術解決方案怎么樣? 為什么不在你等待太久的時候明確表示機票會被解鎖?

如果有人把它放在購物車中,我認為你不應該像這5分鍾那樣阻止這張票。 你最終可能會驅逐其他一些客戶......

我建議你允許每個人把票添加到他/她的購物車,除非有人實際支付並購買。 現在,當其他人繼續結帳時,只需點亮一條消息“抱歉你遲到了...售罄售罄!!!” 並應從購物車中刪除門票。

這樣,票證不會被客戶阻止,並且仍然不會出現兩個人為同一票證付款的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM