电商系统缺不了支付,甚至凡是带有支付的系统,支付是必须的。
目前我们在做支付系统时,一般不会做支付渠道的整个流程(也许在某一些金融公司会有),我们更多的接入微信支付、支付宝支付、银联等这些有公共接口的第三方支付平台。
我目前做的比较多的是微信支付和支付宝支付,基本功能是一致的:支付。但是有些细节不一样,比如支付金额的单位。微信支付金额的单位是【分】,而支付宝支付金额的单位是【元】,也许第一次看他们接口文档时,内心就有一万头草泥马奔驰而过:MD,干嘛不一样?那我们在设计数据库时,就要对这两个支付平台进行兼容。那我们在我们的数据库中,金额设计成分呢,还是元呢?他们映射到数据库里的区别就是:一个是整数(分),一个是浮点数(元)。咋整?
在起初的时候,我也不知道该怎么选择,分也行,元也行,没很大问题,不就是一个单位转换吗?那时设计的系统有的用分,有的用元,看心情。但是,数据字段使用浮点数时,会出现一个小问题:精度!
对,就是精度。因为浮动数在实际存储时,都是有精度的,即,比如我欲存的是1.4,但是实际存储的就有可能是1.402343或1.392343之类的,同时,在我们的代码层,也有会有精度问题,比如我就遇到过类似的问题。所以,为避免不必要的问题,或避免奇怪问题的发生时,我们在运算时,尽量采用整数运算,存储也尽量采用整形存储。