2
我正在開發一個項目,要求我的應用程序在用戶付費時向他的PayPal帳戶付款。這個流程支付給用戶,可靠和安全嗎?
以下是我做到了到目前爲止:
- 的(記錄)用戶轉到支付頁面會列出他的所有付款(接受或不)
- 他進入他的PayPal電子郵件和他的應用(我的)密碼(用於安全)
- POST頁面獲取該用戶的status =「UNPAID」的所有付款列表,並將狀態更新爲「WORKING」(以避免用戶刷新頁面整個過程完成並重新發送相同數量的錢)
- 我們計算的總噸數升量在該列表中付出(一個簡單的
for
) - 量通過Paypal自適應支付API(請求:PAY)發送到貝寶
- 的響應被檢查,如果已完成,則列表狀態被設置爲「已完成「,如果不是,列表將恢復爲」UNPAID「(如果在此期間發生了第二次付款請求,則通過
WHERE id IN(x, y, z)
進行SQL更新。然後 - 的消息被顯示給用戶
但我需要你們的幫助,我是一個有風險的問題前,我想避免的,我就知道你會怎麼做:
- 如果用戶在進程頁面上點擊刷新,我不想給他發送兩次(或更多)金額(「工作」鎖在這裏,但是如果用戶在我之前點擊刷新會發生什麼設置鎖?)
- 很少可能:如果用戶在鎖定「WORKING」之後點擊f5,但在請求paypal之前發生了什麼,以及收到新的付款。通過遵循我所做的,只有一個項目(新)將被設置爲WORKING,但其他所有其他付款將會丟失
你會怎麼做?使其100%可靠的最佳方法是什麼?
感謝您的幫助
注:
4間6的步驟通過PlayFramework jobs製成,具有now()
和awaiting()
結果