一、pc端網站登錄
?
1、獲取并過濾用戶提交的用戶名和密碼以及驗證碼
2、驗證用戶提交驗證碼和session中的驗證碼是否一致
3、驗證用戶名是否存在
4、根據用戶名獲取密碼,并校驗密碼是否一致
5、密碼一致,則登錄成功,跳轉到對應的首頁
?
圖示:
?
?
二、pc端網站注冊
1、ajax獲取用戶要注冊的用戶名和手機號,并驗證是否被占用,如果已經被占用,給出相應提示
2、根據生成的隨機數字組合連接短信平臺發送驗證碼
3、刪除本號碼下驗證碼緩存
4、添加本號碼下驗證碼緩存
5、Ajax獲取兩次密碼并進行比對,如果不一致,作出相應提示
6、驗證驗證碼是否一致
7、如果密碼一致,則執行注冊,并跳轉到首頁,刪除當前手機號驗證碼緩存
?
圖示:
?
?
三、第三方登錄(qq,微信,微博,coding.net,百度,github等)
各個第三方登錄平臺流程類似,這里介紹qq第三方登錄
1、在qq開發者平臺獲取到app_id , app_key , 回調地址
2、拼接請求url
3、請求時攜帶state狀態值,用于防范csrf攻擊,回調頁面會原樣返回
4、處理回調,驗證返回的state值和本地state值是否一致
5、如果state值一致,則再根據返回的code值獲取accsess_token
6、根據accsess_token獲取openid和用戶資料(在第三方平臺上,每一個qq號對應一個唯一的openid)
7、根據openid執行本地登錄注冊操作
比如(根據openid判斷是否為網站新用戶,如果是新用戶,則執行網站內部的注冊程序,并生成一個對應的uid,然后將uid寫入session或cookie,實現保持會話。如果openid已經存在,則執行登錄操作,直接將openid對應的uid寫入session或cookie,保持會話)。
?
可參考https://blog.csdn.net/xiaoxian8023/article/details/38114921
注:官方參考文檔點擊這里
?
?
四、支付流程(第三方支付)
1、用戶將商品加入購物車或立即購買
2、在購物車進行結算或者立即購買時,獲取商品數、總價格,攜帶參數跳轉到確認訂單頁面(包括地址,姓名,商品數,價錢,支付方式等)
?
3、將訂單信息寫入數據庫,并跳轉到訂單創建成功頁面
?
4、用戶點擊支付,確認支付請求時,后端根據訂單信息拼接第三方支付請求url?,并進行請求,跳轉到第三方支付頁面
?
5、用戶登錄第三方賬戶,并進行支付
6、用戶支付成功后,跳轉到支付成功頁面,然后跳轉到同步通知頁面(請求第三方支付時傳入的return_url)
6、商城網站接收到支付異步通知后(notify_url)根據驗證規則驗證信息的有效性,并作出相應的更改操作(例:有效則更改訂單為已付款狀態,無效則記錄非法請求信息)
?
詳細流程:
?
退款和關閉訂單類似,詳細請查看官方文檔?