1. 程式人生 > >在設計支付系統是應該要注意

在設計支付系統是應該要注意

電商系統缺不了支付,甚至凡是帶有支付的系統,支付是必須的。

目前我們在做支付系統時,一般不會做支付渠道的整個流程(也許在某一些金融公司會有),我們更多的接入微信支付、支付寶支付、銀聯等這些有公共介面的第三方支付平臺。

我目前做的比較多的是微信支付和支付寶支付,基本功能是一致的:支付。但是有些細節不一樣,比如支付金額的單位。微信支付金額的單位是【分】,而支付寶支付金額的單位是【元】,也許第一次看他們介面文件時,內心就有一萬頭草泥馬賓士而過:MD,幹嘛不一樣?那我們在設計資料庫時,就要對這兩個支付平臺進行相容。那我們在我們的資料庫中,金額設計成分呢,還是元呢?他們對映到資料庫裡的區別就是:一個是整數(分),一個是浮點數(元)。咋整?

在起初的時候,我也不知道該怎麼選擇,分也行,元也行,沒很大問題,不就是一個單位轉換嗎?那時設計的系統有的用分,有的用元,看心情。但是,資料欄位使用浮點數時,會出現一個小問題:精度!

對,就是精度。因為浮動數在實際儲存時,都是有精度的,即,比如我欲存的是1.4,但是實際儲存的就有可能是1.402343或1.392343之類的,同時,在我們的程式碼層,也有會有精度問題,比如我就遇到過類似的問題。所以,為避免不必要的問題,或避免奇怪問題的發生時,我們在運算時,儘量採用整數運算,儲存也儘量採用整形儲存。