李云波
(黑龍江外國語學院,哈爾濱150025)
基于JAVA的支付系統的設計
李云波
(黑龍江外國語學院,哈爾濱150025)
支付系統是為了解決人們支付問題的服務系統,支付系統是隨著電子商務的發展而產生的便捷的支付方式。以往線下的現金支付既不方便又浪費資源,已經不能滿足當今自動化、網絡化的生活方式,支付系統便應運而生。從描述支付系統的介紹出發,分別從支付系統的需求分析、支付系統的主要技術以及支付系統的設計幾個方面描述了支付系統,給出了系統的ER圖和流程圖等UML設計圖。
系統需求分析;JAVA語言;支付系統設計;UML設計圖;SpringMVC框架;Dubbo服務;Zookeeper框架
最早的支付系統只是解決了支付問題,并沒有輔助支付的服務,包括日常對賬等事務都是人工處理;后期添加了對賬功能,提供了第三方支付平臺對接接口。第三方支付平臺的出現均衡了支付賬戶管理的風險;隨著第三方支付平臺的不斷壯大,銀行的支付系統作為三方支付平臺的基礎服務,主要側重于清算、結算以及對賬環節。不管支付系統經歷多少迭代,其出發點都是為支付提供解決方案,讓支付更簡單,并且對安全有著較高的要求[1]。
隨著科學技術的不斷發展與更新,支付系統也在隨之不斷地進行完善,其工作目標不僅僅局限于支付系統技術更新換代,更注重將最新的開發技術與支付業務相整合。支付系統的需求分析相對于其他系統來說要更嚴謹和廣泛,不僅僅要調研用戶需求,更要大力挖掘市場需求和未來幾年市場的發展方向[2]。由于支付類型較多,因此在需求分析環節需要針對不同類型的支付進行調研和分析。主要的支付類型包括對企業的代收、代付、企業網銀等;對個人的快捷、網銀、充值、提現以及鑒權等等。需求分析主要從以下幾個方面展開,即:系統安全需求分析、用戶需求分析,以及支付行業業務需求分析[3]。
支付系統比其他的服務系統在安全方面有著更高的要求,系統不僅對用戶的基本信息進行維護,更重要的是需要對用戶的資金進行安全管理。支付系統對安全性有著極高的要求,主要體現在兩個方面,首先是用戶的資金安全,站在用戶的角度上去考慮,只有保證用戶的資金安全,才能得到用戶的認可。說到資金安全,很難不讓人想到一致性的問題,當用戶的賬戶資金做減少的同時,肯定有相關的賬戶做增加,如果其中的某一個環節出現了問題,那么與此相關的兩個賬戶中的資金都不得發生改變,并且需要用友好的文案提示用戶,第一時間告知本次操作的結果,并合理地給出下一步處理方案,重新支付或是等待最終結果通知,讓用戶在更大程度上感知到自己的資金是安全的[4]。其次是用戶的敏感信息安全,支付系統中存儲了大量用戶的敏感信息,例如姓名、身份證號、銀行卡號等等,為了保證信息的安全,必須采用數據加密的方式進行存儲,以確保用戶的信息不被泄露。
任何一個系統的需求分析必須站在用戶的立場去考慮,首先要了解到系統能為用戶做什么,要給用戶提供哪些便利的服務,因此要著重對用戶的使用習慣和基本要求做詳細的分析。從用戶的操作習慣和友好的提示信息等細節出發,深入挖掘用戶的潛在需求,隨著大數據時代的到來,可以對每個用戶的行為數據進行分析與挖掘,并根據分析結果為用戶提供更全面的定制化的服務方案,將支付和生活中其他的需求串聯起來,更好地為用戶提供更全面的服務[5]。
隨著科技的不斷更新,支付系統也在不斷地進行迭代,采用最新的、最安全的技術為用戶解決支付問題。與此同時支付業務也在不斷壯大,支付已經不僅僅是單一地為用戶提供支付服務,而是為用戶提供完整的金融解決方案。比如支付依賴的四要素鑒權服務,快捷支付依賴的短信驗證服務,以及用戶使用分期支付時的征信查詢服務等等。隨著支付行業的不斷擴大,支付系統也在結合行業需求,逐漸完善與健全自身的服務范圍[6]。
支付系統采用最新的框架和技術不僅實現了系統的高并發和高可用,同時也實現了系統內部各個模塊之間調用的高性能,將同步的操作轉換為異步處理,分布加異步的處理方式更能夠發揮出并發的優勢。
Spring MVC是一個輕量級的、具有強大功能的web框架。它充分利用了Spring龐大的注解庫,降低了開發成本和難度,可以說Spring MVC提供了基于簡單的JavaBeans的開發模式,簡化了后臺控制的開發。框架中的控制器并不是直接處理前臺請求,而是將其委托給Spring中的其他beans,通過Spring提供的依賴注入特性,將這些beans注入到控制器中。Spring MVC具有兩個主要的組件:處理器映射和視圖解析器,降低了系統各個層次之間的耦合性。處理器映射的作用是根據請求來動態選擇利用哪個控制器處理相應的邏輯;視圖解析器的作用是合理地將獲取到的數據進行渲染[7]。
當系統的服務沒有達到一定規模的時候一般都是通過配置url地址進行訪問,但是一旦服務越來越多,這樣對于眾多的url地址維護起來成本是比較高的,因此需要一個服務注冊中心,將這些服務動態地注冊和顯示出來,使得服務透明化。dubbo分布式服務框架可以解決上述問題。dubbo具有五個主要的角色,分別是 provider、consumer、registry、monitor和container。其中provider是服務的提供者,負責將系統中的所有服務顯示出來,供調用者使用;consumer是服務的消費者,負責調用遠程的服務;registry負責服務的注冊以及發現注冊;monitor是監控中心,負責統計各個服務的調用次數和每次服務的調用時間;container則是容器,服務運行需要依賴到它[8]。
zookeeper是分布式應用程序的協調服務,將復雜的系統服務進行合理有效的封裝,最終為用戶提供簡單、穩定的服務。zookeeper作為dubbo服務的注冊中心,主要是解決分布式系統中集群部署應用的一致性問題。zookeeper的存儲方式與文件系統類似,是基于目錄節點的樹形結構,其作用并不僅僅是記錄數據,更重要的是維護與監控存儲數據狀態發生的變化,正因為可以及時監控到這些數據狀態的變化,才能夠實現對數據集群的良好管理[9]。
要實現支付系統的高并發和高可用特征,緩存機制是必不可少的。支付系統的緩存采用redis實現。redis是基于鍵—值映射結構存儲方式的緩存,其支持多種類型的value值,包括:字符串、列表和集合。由于redis支持多種類型的鍵值,因此,為數據的存儲提供了極大的便利。其運行原理是:當接收到一個請求時,需要獲取數據,這時系統首先會自動去redis中獲取相應數據,若沒有命中,即緩存中沒有該數據,此時才會去數據庫讀取相應的數據,與此同時把讀取到的數據存儲到緩存中,當下次請求獲取相同數據的時候就會從redis中直接讀取,以此大大降低了數據庫讀寫壓力,同時也能在很大程度上提高響應效率。redis集群部署可以更好的作為緩存微系統提供服務,而且支持主從同步,數據可以從主服務器向任何一個或者多個服務器同步。redis集群部署可以減輕服務器壓力,從而實現高效率。當主服務器進行讀寫時,另一個請求過來時會自動轉移到從服務器進行讀取。
支付系統對每一次請求的要求都非常高,既要保證每次請求都是有效的,還要保證每次請求都有最終結果狀態。要很好地解決支付并發問題就要采用異步處理方式,實現高效地處理用戶請求,支付系統采用rabbitMQ消息隊列,實現異步處理。當服務器接收到用戶請求時,要把請求記錄到隊列當中,這樣不管多少請求過來,后臺都能有序地進行處理,而且不會漏掉任何一個請求。rabbitMQ是一個典型的生產者-消費者模式,當接收到用戶請求時,就會向消息隊列中寫入消息,就是生產者;當處理器從消息隊列中讀取或者訂閱消息,并進行處理,就是消費者。支付系統要求每一次請求都是有效的,因此采用消息隊列有效地解決這個問題,當向其他服務發送請求時,可能由于網絡原因導致請求失敗,這時并沒有直接返回錯誤,而是繼續嘗試消費這條消息,直到在規定的時間內返回最終結果,這樣大大地提高了系統的穩定性和吞吐量。

圖1 支付相關表設計
下面從數據庫設計和支付系統流程設計兩個方面描述支付系統的設計。
支付系統是一個復雜的系統,因此對數據表設計的要求也非常高,不僅具有簡單的管理商戶和用戶的數據表,更重要的是與支付訂單相關的表,包括:支付訂單表、路由表、日志表以及通知表等等。之所有這么多與支付訂單相關的表,目的就是為了保證訂單狀態的一致性和完整性。這些表穿插了整個支付流程,包括:下單、校驗、扣款、通知和對賬等。支付相關的表設計如圖1所示。輔助支付業務相關表設計如圖2所示,主要羅列了系統資源、系統用戶以及系統角色之間的關系。

圖2 基礎表設計
完善的支付系統包括八個主要模塊,分別是:交易模塊、風控模塊、路由模塊、網關模塊、核對查詢模塊、通知模塊、交易監控模塊以及報警模塊等。總體的支付流程為:用戶發起一筆交易在交易模塊會進行一系列的合法性校驗,通過校驗后會生成支付訂單;支付訂單發送到風控模塊檢查交易的限額以及風險等等;校驗通過后流轉到路由模塊,為支付訂單選取最優的支付通道,到達網關模塊進行支付;銀行會發送同步和異步通知到通知模塊,根據不同類型的通知進行特殊處理,最后定時到銀行系統查詢支付訂單的最終交易金額和交易狀態。交易監控模塊和報警模塊穿插在整個支付過程當中,當發現哪個環節出現問題監控模塊就會進行記錄,并在一定的時間內給相關人員發送報警信息。
目前,各行業領域都經歷著向智能化、自動化和網絡化的升級。然而,支付這個不可或缺的金融環節卻沒有想象中的飛速進步,特別是B2B支付領域更是如此。安全性、機密性、復雜性等因素造成一種尷尬的景象:公司提供著最先進最前沿的互聯網服務,卻采用了最原始最落后的方式收取費用;公司同時為數千家企業提供智能化技術支持,卻仍然需要大量人力手工地處理賬目。本文設計的支付系統直面B2B行業支付痛點,以雄厚的技術實力和專業的金融服務,為高速發展的企業一站式地構建與之匹配的網絡支付方式,其使業務與支付達到并駕齊驅的完美狀態。
[1]馬鈺平.網上銀行支付系統設計與實現[J].山東農業大學學報:自然科學版.2016,(6):945-948.Ma Yuping.Design and Implementation of Online Banking PaymentSystem[J].ShandongAgriculturalUniversityJournal:Natural Science Edition.2016,(6):945-948.
[2]周景春.基于SSL協議的電子商務支付系統的設計與實現[J].現代電子技術.2017,(2):167-170.Zhou Jingchun.Design and Implementation of E-business PaymentSystemBasedonSSLProtocol[J].ModernElectronics Technology.2017,(2):167-170.
[3]李毅兵,張哲.基于B/S模式的在線支付系統的設計與實現[J].電腦開發與應用.2012,(8):35-37.Li Yibing,Zhang zhe.Design and implementation of Online PaymentSystemBasedonB/SMode[J].ComputerDevelopment and Application.2012,(8):35-37.
[4]裴昂昂.小型商業銀行支付系統的設計與實現[D].西安:西安電子科技大學,2015.Pei Angang.The Design and Implementation of the Payment System of Small Commercial Banks[D].Xi'an:Xidian University,2015.
[5]曹方.群雄逐鹿手機支付迎來爆發期 [J].上海信息化.2010,(11):46-49.Cao Fang.Qun Xiong Zhu Lu Cellphone Payment Confronting a Outbreak Period[J].Shanghai Informationization.2010,(11):46-49.
[6]范榮真.基于WAP的手機支付平臺研究[J].華南金融電腦.2010,(3):92-94.Fan Rongzhen.Research on Mobilephone Payment Platform Based on WAP[J].South China Financial Computer.2010,(3):92-94
[7]張穎.基于WAP的手機支付中間平臺設計研究[J].現代商貿工業.2009,(7):264-265.Zhang Ying.Design and Research on Middlephone Payment Intermediate Platform Based on WAP[J].Modern Commerce Industry.2009,(7):264-265.
[8]魯婷婷.移動支付系統中客戶端的設計與實現[D].上海:上海交通大學,2015.Lu Tingting.Design and Implementation of Client in Mobile Payment System[D].Shanghai:Shanghai Jiaotong University,2015.
[9]李宏達.移動支付技術風險及評估方法研究[D].上海交通大學,2013.Li Hongda.Research on Mobile Payment Technology Risk and Evaluation Method[D].Shanghai Jiaotong University,2013.
Design of Payment System Based on JAVA
Li Yunbo
(Heilongjiang International University,Heilongjiang,Harbin 150025,China)
Payment system is a service system to solve the problem of payment,which is a convenient way of payment with the development of e-commerce.In the past,offline cash payment was not convenient and waste of resources,and it has been unable to meet today's automated and networked lifestyle,and thus the payment system comes into being.Beginning with a introduction which descripts the payment system,the payment system is described from the following aspects:the demand analysis of payment system,the main technology of payment system and the design of payment system to give the system ER diagram and flow chart and other UML design.
System requirement analysis;JAVA language;Payment system design;UML design diagram;SpringMVC;Dubbo;Zookeeper
10.3969/j.issn.1002-2279.2017.04.020
B
1002-2279-(2017)04-0082-05
李云波(1976—),男,黑龍江省雙鴨山市人,黑龍江外國語學院副校長,副教授,碩士學位,主研方向:數據庫管理。
2017-04-01