陈海蛟

V1

2022/10/27阅读:66主题:前端之巅同款

吐槽一个微信群收款的产品设计细节

感谢何老师的严谨审稿

故事的开始

几乎每天都和爽哥、腿哥一起吃饭,所以经常会在群里 A 账单。

某天爽哥在付款的时候看了一眼收款总额是 88.02 元,开玩笑的说:“吃饭不是花了 88 嘛,你怎么还多收了 2 分钱。”

我的第一反应是:我是不是输入金额的时候,不小心按错了?

我看了下群收款的消息,发现是通过微信支付成功后下发的支付凭证直接发起的群收款,不需要手动输入金额,而支付凭证上的金额是 88 元,但是发起的群收款总额就变成了 88.02 元。

那么真相只有一个:群收款在没有明确告知我的情况下,发起收款时悄悄改了收款的总金额。

为什么会改?

我猜,大概是因为三个人 A 88.00 元,除不尽,但是又不能少收,所以就把总金额变成了可以被三个人平均的 88.02 元,这样每个人需要支付 29.34 元。

测试

为了验证这个猜想,所以我又在群里发起了一个群收款,收款总额是 0.01 元,人数选择 7 个人。果然,发出去之后,别人在群里的收款消息里看到的收款总额是 0.07 元。

发现彩蛋

按照这个思路下去,我找个 500 人的群,对所有人发起群收款,收款总额 0.01 元,那岂不是会被改成 5.00 元,这个差距也太大了。

话不多说就开始搞。然后就发现了群收款的一个限制:最多 100 人

500 人不行,那就选 100 人,然后就发现了另外一个限制:理论计算的人均付款不能少于 0.001 元

如上图:10 个人 A 0.01 元可以创建,11 个人 A 0.01 元就不能创建了,因为 10 个人的理论计算平均值为 0.001,11 个人的理论计算平均值已经小于 0.001 了。(之所以没有选择 100 人,是因为 100 人选起来太太太太麻烦了。)

这个也好理解:因为微信支付的最小单位是分,同时又是采取向上进位的策略,所以在 [0.001, 0.01] 这个区间内都会收款 0.01 元,但是如果算出来的实际值在 [0, 0.001) 这个区间内,即便是进位之后也才 0.001 元,不够微信支付的最小单位 1 分,所以平均金额为 0 ,而平均金额为 0 的群收款不能创建。

继续探索

经过几轮实验,最后发现,当收款总额设置为 0.1 元,总人数 100 人时,平均每人支付 0.01 元,账单的收款总额是 1.00 元。实际收款总额是初始输入总额的 10 倍。

怎么理解这件事

其实涉及到的钱数并不多。最多 100 个人,每个人多付的最多不会超过 0.01 元,总的收款金额最多也不会超过 1 元。(我甚至怀疑微信支付限制群收款最多 100 个人也是出于这样的考虑,避免误差过大。)

这里最大的问题在于:群收款作为一个工具,没有经过同意,替用户做决策,让信息不对等

一个典型场景:一群人吃完饭,张三付款,付完款把小票照片在群里一发,然后发起收款,结果别人发现群收款的数额和小票不一样,多了一点,这得让有强迫症的人多难受。如果每个人都知道是微信改了数额也还好,如果大家不知道,且恰好中间有个较真的人,他会怎么看帮助大家付钱 A 款的这个人。

以前的设计

之所以发现这个点,因为以前的设计不是这样子的。之前 3 个人 A 10 块钱,虽然每个人付的金额和现在逻辑一样,会向上进位,即人均 3.34 元,但是总额是 10 元。不知道从什么时候开始,微信会自动将总额变成 10.02 元。

极限骚操作

生活需要无厘头的快乐,所以,,,,想象一个极限骚操作。

假设你要向 100 人收 100 元。如果这 100 个人非常的配合,不打你,你可以把 100 元分成 1000 份,每次 A 0.1 元,这 100 个人会分别付 1000 次的 0.01 元,最终每个人都付了 10 块钱,总的收款金额变成了 1000 块。

但是你的确是每次收 0.1 ,收了 1000 次,理论上总金额是 100 元,也没啥问题,但 1000 块的确进了你的口袋。要怪也就只能怪微信了。

升华一下

产品在设计上除了要考虑完成功能,还要考虑使用者的心理动机,降低用户的心智负担。

分类:

设计

标签:

产品设计

作者介绍

陈海蛟
V1