項目已提測,這兩天我們都集中精力梳理外包團隊給我司研發的這個三方支付系統的代碼邏輯。今天下午愛琴海會議室,開發組裡一同學分享他對支付結果回調的梳理成果。 支付結果回調的整體時序是:支付渠道方處理完用戶支付信息後,主動調用我方在支付發起時提供的回調地址,把支付結果推給我方,我方處理完成後,回寫字元串“ ...
項目已提測,這兩天我們都集中精力梳理外包團隊給我司研發的這個三方支付系統的代碼邏輯。今天下午愛琴海會議室,開發組裡一同學分享他對支付結果回調的梳理成果。
支付結果回調的整體時序是:支付渠道方處理完用戶支付信息後,主動調用我方在支付發起時提供的回調地址,把支付結果推給我方,我方處理完成後,回寫字元串“ok”以告知支付渠道方,渠道方接收到這個消息,即完成支付結果的通知。
在邏輯的最後他拋出了一個疑問。代碼見下麵截圖,即我方經過驗簽、數據校驗、更新訂單支付結果、記賬、通知下游商戶等一系列邏輯處理之後,要回寫字元串“ok”。responseString的值即是“ok”。程式直接給edb這個對象set了一個參數,然後程式就return完事了。我們知道,肯定要通過當前HttpServletResponse的getWriter的print()或write()方法把這個文本消息輸出到頁面上。而在調用這個NotifyServiceIml的Action里也沒有這樣的語句。那麼,疑問來了,看後面的註釋“設置此值後,平臺會自動返回給通道”,自動返回給渠道方是怎麼實現的呢?在哪裡實現的呢? 那接下來就是要找到這些代碼在哪裡了。
首先,哥們兒打開action config文件。看看當後臺Action返回處理成功後,對應的jsp里有沒有列印。不過,發現沒有配置jsp。
那麼接下來,自然想到的是Interceptor。定位到這個服務類對應的Interceptor類。通過逐行分析onResponse()方法,也沒有發現getWriter()這樣的代碼行。
奇怪了!有同學提議會後直接問外包的程式員吧,一問便知。我一向喜歡先自己摳代碼,實在不行再去問。於是,我接過同事的筆記本電腦,硬著頭皮分析這個Service和它的父類的代碼,興許有沒有梳理到的代碼呢。結果呢,包括我在內,四五雙眼睛都沒有發現。 我苦笑:“認慫了!”
其實我還是不服輸的。去了趟洗手間回到工位,突然想到了servlet。趕緊找servlet-mapping。果然,在web.xml里定義了servlet-mapping;果然,在這個ActionServlet類里,查找getWriter關鍵字找到了答案。
⁶⁶ ⁶⁶⁶⁶⁶⁶ ⁶⁶66⁶⁶⁶⁶ ₆₆₆₆可以啊.這波 ₆₆₆₆⁶⁶⁶⁶⁶⁶卧槽 ⁶⁶666⁶⁶⁶⁶⁶⁶66⁶⁶⁶⁶ 卧槽⁶⁶⁶⁶⁶⁶ ⁶6666⁶⁶666₆₆₆₆₆ 666 ⁶⁶⁶⁶⁶⁶ 666666₆₆₆₆₆₆ ₆⁶⁶⁶ ⁶⁶⁶⁶⁶⁶ ⁶⁶66⁶⁶⁶⁶ ₆₆₆₆可以啊