<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          京東搞出的一個產(chǎn)品 bug?

          共 2116字,需瀏覽 5分鐘

           ·

          2021-06-26 16:00

          昨天星球里有個同學(xué)向我提了一個問題,我還跟她討論了幾個回合,是關(guān)于電商產(chǎn)品中「好友代付」場景下的設(shè)計邏輯問題。


          她在做產(chǎn)品的過程中為了對標(biāo)同類產(chǎn)品的實現(xiàn)邏輯,專門測試了京東和淘寶的「代付」功能。在使用京東 App 的好友代付功能時發(fā)現(xiàn),針對同一個訂單竟然可以支付兩次。


          我先說下什么叫「好友代付」。


          簡單說,就是你在京東或淘寶上買東西的時候,在支付環(huán)節(jié)可以選擇讓他人幫你付款。


          在淘寶上,是選擇支付寶好友代付。京東里,是選擇微信好友代付。



          以京東為例,選擇代付功能后會跳轉(zhuǎn)到微信,選擇某個好友發(fā)送后,對方會收到一個付款鏈接。


          點擊這個鏈接進去,看到的是一個付款頁面。



          場景明確了,接下來我跟你們說下她是怎么發(fā)現(xiàn)同一個訂單能同時支付兩次的。


          首先,還原下業(yè)務(wù)經(jīng)過。


          她使用的是京東旗下的「京喜」小程序下單購買的非自營商品,活動單價 1 元。


          然后,她提交訂單并選擇了找人代付功能。注意,在好友代付成功之前,作為下單人的她還是可以繼續(xù)支付訂單的。


          接下來,將兩臺手機放到一起同時點擊支付,此時調(diào)起了支付窗口,同時輸入支付密碼后支付成功。


          也就是說,針對同一筆訂單完成了兩次付款。


          顯然,這不是一個正常現(xiàn)象,同一筆訂單不應(yīng)該能被重復(fù)支付。


          隨后,她使用下單人的賬號發(fā)起了訂單退款,代付方退款成功了,可下單人沒有退款。


          通過截圖可以看到,兩筆訂單都是支付成功的,而且對應(yīng)的商品訂單號是一樣的,支付時間也是一樣的。



          這就奇怪了,為什么同一筆訂單能支付兩次呢?為什么發(fā)起退款后,只有代付方成功退款了呢?


          我先說結(jié)論吧。


          這可能不是一個技術(shù)層面的 bug,但肯定是一個產(chǎn)品層面的 bug。


          第一,之所以能實現(xiàn)好友代付,是因為訂單模塊和支付模塊是解耦的,二者通過訂單號和交易流水號關(guān)聯(lián)。


          在技術(shù)上,兩個模塊可以實現(xiàn)獨立。在組織上,訂單團隊和收銀臺支付團隊也可以獨立。


          第二,作為特殊場景下的極端測試場景,當(dāng)同一個訂單被下單方和代付方同時發(fā)起支付時,理論上是需要做并發(fā)判斷的,要有一個鎖死機制,不能讓同一筆訂單被支付兩次。如果發(fā)生,那就是個業(yè)務(wù) bug。


          第三,既然是個業(yè)務(wù)流程中不允許存在的 bug,在產(chǎn)品設(shè)計環(huán)節(jié)就應(yīng)該從邏輯上避免。


          所以,在發(fā)起支付時需要對訂單狀態(tài)進行判斷,只允許一筆支付訂單產(chǎn)生。既然出現(xiàn)了這個問題,顯然是個產(chǎn)品 bug。


          之所以說不是技術(shù)層面的 bug,是因為這筆異常訂單最終都完成了系統(tǒng)退款。


          回到前面說的退款問題。


          在一段時間后,下單人的退款也完成了,只不過比代付方的退款延遲很久。


          針對這個現(xiàn)象,可能的情況也有多種。比如商家審核延遲、系統(tǒng)異常延遲、固定腳本檢測退款訂單或者是運營人員發(fā)現(xiàn)后的手工處理。


          總之,從用戶體驗的角度看,這肯定是一個 bad case,也是一個產(chǎn)品 bug。


          那么,導(dǎo)致這個問題出現(xiàn)的原因是什么呢?


          這里,我斗膽猜測一下。


          前面提到了,這是京東旗下「京喜」業(yè)務(wù)下的訂單。按照京東的特點,不同的垂直業(yè)務(wù)可能有自己的產(chǎn)品研發(fā)體系,他們的業(yè)務(wù)系統(tǒng)會在京東訂單中臺的基礎(chǔ)上做二次邏輯開發(fā)。


          舉個例子,京東健康也是京東的垂直業(yè)務(wù),因為屬于醫(yī)藥場景下的特殊訂單,業(yè)務(wù)流程和普通商品交易有些區(qū)別。所以,他們的訂單流程實際上也是基于京東主交易流程系統(tǒng)上的二次開發(fā),邏輯底層調(diào)用的也是京東的交易中臺系統(tǒng)。


          因此,這個訂單可能也是垂直業(yè)務(wù)的產(chǎn)研團隊進行的二次處理。而他們在調(diào)用中臺支付接口時沒有對訂單狀態(tài)進行判斷和檢測。


          另外一種可能,就是好友代付功能下的訂單狀態(tài)判斷缺失。


          因為在這個場景下,極小概率會出現(xiàn)下單方和代付方同時支付的情況,只有極端測試的時候會出現(xiàn)。


          既然概率足夠小,那很可能在設(shè)計和開發(fā)階段就忽略了?;蛘邲]有被忽略,只是因為優(yōu)先級不高而暫時沒有加上。


          當(dāng)然,在真實的用戶使用場景下,這個問題出現(xiàn)的概率并不高。但不管怎么說,既然能出現(xiàn),那就說明確實是系統(tǒng)的漏洞。


          作為一個大體量的產(chǎn)品,再下的問題也可能被放大。哪怕是 0.001% 的出現(xiàn)概率,放在一個日單量如此巨大的產(chǎn)品上,也不是一個小數(shù)。


          以上,只是我的猜測,并不構(gòu)成結(jié)論。


          訂單編號也在圖里了,京東訂單中臺的產(chǎn)品同學(xué)如果看到了可以去查下這一單的具體交易情況。


          如果確實是問題,就趕緊 fix 一下吧。


          如果你也在設(shè)計類似的交易系統(tǒng)產(chǎn)品,同類的問題也可以思考下如何避免。


          做產(chǎn)品之所以好玩,其中一點就是透過現(xiàn)象找邏輯。


          ················· 唐韌出品 ·················

          安可時刻

          同樣的問題,在美團的產(chǎn)品上就沒存在。


          可能很多人對交易系統(tǒng)產(chǎn)品不是很了解,因為我做過,所以我知道其中的復(fù)雜性。


          說實話,平臺類電商的交易系統(tǒng)可能是所有產(chǎn)品中復(fù)雜程度最高的一類,如果有機會做一次,鍛煉意義還是挺大的。


          今天,與 63743 位讀者一起見證彼此成長
          后臺回復(fù)“w”,可加我個人微信


          推薦閱讀


          微信的產(chǎn)品經(jīng)理,真的那么強么?

          大廠入局,這個需求真的很痛!


          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色录像一级片 | www.人妻 | 自拍偷拍五月天 | 亚洲色导航五月 | 国产足交在线播放 |