微信提现流程图
第一次在項目中遇到需要做一個微信提現(xiàn)功能.做了一個簡單設(shè)計圖,不知道能不能滿足大部分業(yè)務(wù)場景.貼出來希望和大家一起討論討論.繼續(xù)優(yōu)化.
這里不牽扯提現(xiàn)的前期準(zhǔn)備.比如企業(yè)賬戶,公眾號,用戶綁定等.
簡單對整個流程圖做一個文字說明:
1,用戶發(fā)起提現(xiàn)申請? 這里沒有什么可以說的.無非就是輸入提現(xiàn)金額之類的操作.
2,做一些校驗,主要校驗用戶余額是否滿足提現(xiàn)的要求.
3,余額都不足就不要提現(xiàn)了撒? ?(想P呢..)
4,如果有錢的話,就直接進(jìn)入提現(xiàn)的下一個流程,對用戶的金額進(jìn)行加減,記錄明細(xì)等
5,這里重新獲取一次用戶余額,主要想法就是萬一臟讀了呢.(其實后面的樂觀鎖也能避免這種情況),但感覺再讀一次數(shù)據(jù),會減少樂觀鎖更新失敗的幾率
6,想的是先提前扣除用戶金額.免得提現(xiàn)之間有其他操作.導(dǎo)致最后金額不正確
7,數(shù)據(jù)庫做了一個樂觀鎖,嘗試幾次更新后直接拋異常.也是防止多線程更新數(shù)據(jù)
8,生成提現(xiàn)明細(xì)記錄
9,調(diào)用微信支付api完成支付
10,微信接口如果返回狀態(tài)不是明確表示成功或失敗.還需要再重新調(diào)用微信支付查詢接口api查詢訂單支付狀態(tài)
11,調(diào)用微信支付查詢接口返回是成功支付,則更新明細(xì)記錄狀態(tài)為完成
12,調(diào)用微信支付接口直接返回成功支付的話,也可以直接更新明細(xì)記錄狀態(tài)為完成
13,如果微信支付接口或查詢接口都標(biāo)識支付失敗,修改微信明細(xì)狀態(tài)為失敗
?
補充想法:?
1,在步驟13的時候,大家會發(fā)現(xiàn)步驟6扣除了用戶金額.這里有本來想添加一個步驟,就是將用戶多余扣除的金額再補回去.但又覺得,這種特殊情況應(yīng)該人工介入來處理了.不知道大家如何看待.
2,這個里面只把步驟6和步驟8放在一個事物里面.我的想法是,這個流程還是很長的.如果都在一個事物里面是不是性能不會太好呢.這里有沒有大佬出來講解一下改如何設(shè)計才正確呢.
?
?
最后: 這個設(shè)計方法也肯定有很多不足,如果大家有什么建議歡迎留言討論.? ?希望能做出一個又安全有高效的提現(xiàn)流程.
總結(jié)
- 上一篇: 编译安装zabbix时遇到configu
- 下一篇: 5G(NSA)注网流程