准备开发和钱有关的功能,还有哪些地方要注意

2020-02-24 12:30:47 +08:00
 5bb864e1fc775087

已知钱精确到分

准备这样处理:

还有什么要注意的吗?

7344 次点击
所在节点    程序员
35 条回复
CStarter
2020-02-24 22:01:13 +08:00
1.涉及汇率,可能出现小数,例如中东项目一般要保留到 7 位小数。
2.事务回滚,一定要严测事务一致性。
3.操作日志,任何一步都要有日志(写入数据表里的日志)
learnshare
2020-02-24 22:12:47 +08:00
操作全部记录,记录多处备份
自动计算审核,必要时人工审核
NoString
2020-02-24 23:27:55 +08:00
汇率汇率汇率 重要的事说三遍 一定要注意汇率(如果涉及外币)
sleepm
2020-02-24 23:55:45 +08:00
幂等...
还有存时间戳
lc7029
2020-02-25 00:12:33 +08:00
银行的套路,出现问题就崩溃,不会带着 bug 运行
rainysia
2020-02-25 00:36:50 +08:00
跨国电商. 汇率小数点后 10 位了解一下..主要要支持很多币种, 比如 1 USD :13000 INR 的 INR. 1 USD: 23000 的 VND.
稍微金额一大, 肉眼可见的误差.
summic
2020-02-25 00:54:59 +08:00
一定要做好防护,例如熔断,将损失控制在一定范围内。
人是不可靠的,bug 也避免不了,得能够保障整个体系做到允许损失几万、几十万,但绝不能损失上千万
Mohanson
2020-02-25 01:38:12 +08:00
存成分在算汇率的时候要特别注意,"一分钱能换到 0 美分"这种奇葩,反正做分母的时候一定要设置最小值…
ericgui
2020-02-25 03:31:46 +08:00
@rainysia。。。。。。真没想到啊,,。。。。
eamon666
2020-02-25 11:07:46 +08:00
注意 事务和锁 select * from id for update 可以参考参考。
qyvlik
2020-02-25 14:26:19 +08:00
数据库的金额字段:用 decimal,控制好小数位数,例如 decimal(20,6),或者 decimal (20, 8),按实际需要定制小数位数。
数据库表设计和业务逻辑:账务系统是金融电子系统的核心,账务系统记录了用户、商户、客户等包括平台相关账户(运营账户、营收账户)的当前资产和资产流向。可以先了解复式记账,资产类型,热点账户等。
数据库事务隔离:MySQL 的话,优先 READ-COMMITTED,性能好一些 ,REPEATABLE-READ 对实时对账逻辑设计友好一些。
锁:在性能和安全上做平衡。
对账:如果没有分布式事务的问题,通过账务系统可以进行实时对账。如果涉及到分布式事务、TCC 柔性事务、使用消息队列做事务补偿时,以上情况需要对对账系统做额外设计。
编程语言:使用类似 bigdecimal 库,注意进位方式。
前端展示:建议不要做过多的计算(前后台计算的进位选择不一致,导致展示上不一致),直接让后台返回计算好的结果(字符串)。
技术之外的建议,政策、法律法规、权限等多多做功课。
biguokang
2020-02-25 16:28:23 +08:00
价格计算千万要放在后台,前端只能传货物 id 和货物数量上来,然后你后端就根据货物 id 从数据库查出货物单价,然后让货物单价*货物数量,得出来的价格(先不考虑折扣之类的附加项)丢给各种支付 api 处理。。。。。。。


还有如果你要和支付宝或者微信支付做对接,你要清楚微信支付和支付宝是以分为单位的,记得区分好元和分,例如你要转 1 块钱给别人,那么你传给支付宝或者微信支付的数据就是 100,我上家公司试过,数据库里面把价格单位定为元,然后一小哥没做转换,看到微信支付支付成功回调返回来的价格字段是 10000 ( 10000 分就是 100 块的意思),自然而然没有做转换所以把价格也存为 10000,导致了一些客户存 100 块能体现 10000 块的 bug。。。。
q447643445
2020-02-25 21:40:56 +08:00
数据库 decimal . java bigdecimal .
我觉得这个不好的点就是. 写计算公式的时候 代码又臭又长
chenhui7373
2020-02-25 23:26:18 +08:00
php 记得只要把单位调低 数字变大就避免了很多问题,

100 分 = 1 元
LDa
2020-03-04 17:11:27 +08:00
技术实现问题都不大,准备点钱赔差额就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/647058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX