一般電商或供應(yīng)鏈系統(tǒng)都有下單和支付環(huán)節(jié),用戶下單后鎖定資源,付款給平臺鞋吉,平臺調(diào)用供應(yīng)商接口出票。但現(xiàn)實情況是因為網(wǎng)絡(luò)抖動的原因励烦,可能會出現(xiàn)供應(yīng)商出票成功谓着,但是反饋給平臺失敗的情況。這個時候再次調(diào)用出票接口坛掠,或者運營人員換其他渠道出票都是會導(dǎo)致重復(fù)出票的可能赊锚。
為了解決這個問題,我們在票務(wù)系統(tǒng)在設(shè)計的時候屉栓,需要對每個供應(yīng)商的出票接口做區(qū)分舷蒲。
1.出票支持重復(fù)調(diào)用,供應(yīng)商對同一個訂單號不會重復(fù)出票
2.不支持重復(fù)調(diào)用友多,可能會出現(xiàn)重復(fù)出票的問題
分布式鎖防重復(fù)調(diào)用
對于情況2,出票程序需要做并發(fā)控制牲平,同一個訂單只能調(diào)用一次出票接口,不管成功失敗域滥,可以通過redis分布式鎖纵柿,或者zk的方式實現(xiàn)。
出票詳情接口
業(yè)界追蹤出票狀態(tài)的通用做法是启绰,由供應(yīng)商提供一個出票詳情接口昂儒,讓調(diào)用方傳入訂單號來查詢此訂單的出票狀態(tài)
1.出票中
2.已出票(票號)
3.未出票
有了這個接口,可以解決兩個問題:
1.定期去輪詢出票詳情委可,一旦出票成功渊跋,即可拿到票號返回給用戶。
2.需要人工出票的時候,讓票務(wù)系統(tǒng)讓運營人員使用刹枉,如果返回未出票的時候叽唱,再換另外的渠道出票。
人工協(xié)商
供應(yīng)商的系統(tǒng)因不能提供出票詳情接口微宝。
平臺因為服務(wù)保證需要在一定時間給用戶出票棺亭,這種就必須事前走商務(wù)層面和供應(yīng)商約定,因為這個問題導(dǎo)致重復(fù)出票蟋软,第二天人工確認(rèn)后是否可以退票镶摘,不然運營中必然會出現(xiàn)互相扯皮的問題。