类似于停车场收费的问题,怎么结算??、
现在有这样的一个需求,一直搞不明白最优解:
类似于停车场收费项目,现在使用微信支付充值了一笔 10 元的,又充值了一笔 10 元,现在用户使用了 11 元,要需用微信退款,就是说现在退款9元,该怎么设计(程序哪里来哪里去,不使用微信付款到零钱)
我的问题:他现在使用了 11 元,我只能计算,一次充值了多少钱,从里面扣,不够,把这笔扣完,够了,下次再扣。这个扣的思路有点复杂,怎么设计比较好
高认可度评论:
感觉你们的业务逻辑设计的问题...
根据你的描述 用户是先充值后消费,用户每次消费使用的是自己的
余额
, 那么如果用户要把余额退回 那该功能的本质就应该是提现
,而不是通过用户订单啥的处理计算实现所谓的退款
。退款是退款,提现是提现,不要把本质搞混了。
就好比你在支xx中充值了100,,然后使用支xx
余额
在淘x消费了两笔订单,共计90,剩余10,后面需要把支xx余额中的10块钱拿出来
,那你只能是提现
。针对最后一笔订单退差额,原路返回
啥停车场收费设计这么....nt
我想知道 用户使用了 11 元 这个怎么出现的
没有会员卡充值这样的机制吗,一次性充完消费后余额就要退回去?
感觉你们的业务逻辑设计的问题...
根据你的描述 用户是先充值后消费,用户每次消费使用的是自己的
余额
, 那么如果用户要把余额退回 那该功能的本质就应该是提现
,而不是通过用户订单啥的处理计算实现所谓的退款
。退款是退款,提现是提现,不要把本质搞混了。
就好比你在支xx中充值了100,,然后使用支xx
余额
在淘x消费了两笔订单,共计90,剩余10,后面需要把支xx余额中的10块钱拿出来
,那你只能是提现
。@AloneUtopia 不好意思,看到你的回复了,但是帖子中一直无法查看,不知道怎么回事
加一个
待付款
字段就好了吧。专门封装一个充值类,除了此类,
禁止
通过其他类充值 (这就好维护了)模型的
用户金额
加黑名单(防止别人通过其他方式修改), 这个类充值取消黑白名单加个 总共充值额 字段 每充值一次就增加额度,最后减去花费的价格,剩下的就回退客户,并且额度置为0
没法理解这样设计的意义,余额每一次变动无论是支出还是充值还是退款都是记录性的只维护变动记录不就可以了嘛,余额应该是一个单独的字段。
非要这样设计只能在支付的时候要有一个字段来存这钱的来源是来自哪些id的充值记录,这样才能不出错的退回。
1.以前很多公司的做法是充钱+提现的做法,但是做大之后,好像是犯法的,国家不允许。 2.sass。 3.简单的买卖,不涉及退款,或者退款简单的,可以直接用原生支付宝,微信扫码支付。
上边那个哥们说的很对,多次充值不应该走退款逻辑的,应该是提现。递归退款还是很坑的。应该是充值到用户余额中,然后余额进行提现,每次停车扣费也应该是扣除余额。
需求不合理啊,既然是充值,就不应该有充多了自动退款的。充值成为余额,余额就是提现了撒。再说,你使用11元,两笔充值10元,一笔支付宝,一笔微信,你既可以使用完微信10元,也可以使用完支付宝10元。所以剩余的钱即可以退回支付宝,也可以退回微信。 你这怎么弄?
没注意看各楼层的大佬回复,是否可以每小时为单位把金额拆分成券的形式,比如,一小时1元钱,充值10原,给他生成10张票,按消耗的小时数去按顺序取固定的券数,充值2次按顺序生成10-10张券取11张,剩余的9张退款
这种不应该做充值这个业务逻辑,每次支付费用就是一笔单独的订单,同理退款针对不同的订单退款即可
机场,医院的收费逻辑是:车牌进,车牌出(同一车牌)。记录进场时间,根据时长来指定收费标准。无需充值,直接绑定对应的车牌获取停车时间缴纳对应的收费,即收费完成可离场
这是啥业务流程唉 ,怪怪的
一看就是穷逼老板舍不得手续费,想原路退回,这事搞过,专门写了个算法计算,然后分别按充值的金额原路退回,另外有个注意的事原路退回只能退1年内的所以先排除1年后的,进行退,剩下的转账到余额,当时做出来我都在想这么退用户应该会很懵逼,哈哈,反正做完了也没上线
其实这需求处理也还好吧,技术不就是治疗脑残。
我就不飙中文英语了,直接中文😄
你在每笔订单后面增加一个字段【已退款金额】,查询条件【必须是一年内&&(支付金额-已提现金额>0)】,这样查出来就是可退和退过剩余的
然后排列数组(这个地方就看自己需求了,我是从小到大排,目的就是尽可能保留大额度,鬼知道他会退多小多大),然后遍历数组,依次往下减,直到够了11元,然后你就有了退款单号,依次按单号退款并将退款金额记录【已退款金额】,自己在做一个退款表好对账
【已退款金额】的用处就是假如你退1元,但是只有10元订单,所以就只能先退1元,下次可以继续退他9元(微信支持这样退款,其他支付平台未研究)。
前面排除一年已外的订单金额和数组遍历完剩余的金额,只能转账或是别的方式了(具体老板拍桌子)我们是直接转账
上面说采用“提现”来做,是极度不合理的、不满足需求的:
而采用原路退回的优势也是显而易见的:
我们的采用的是类似做法,给个图你参考:

另外,现在很多系统采用这种先充值,消费后退款的做法。 比如停车场里面的充电站等等,在深圳很常见的。
订单退款,用户充值3笔,每笔5元,退款退6元的话,那就是同时退两笔订单。想想就头大 :disappointed:
可以使用微信公众号来退款,微信公众号使用红包的形式退款,自己做好记录就行。
@cmzz 兄弟,我告诉你为什么很多小公司走充值,你只看到了充值之后提现银行会收手续费,却没看到公司拿着这些人的充值金额去投资,去银行贷款,去利滚利。如果你是一个餐馆老板,你希望用户是在你这充值吃饭,还是每次吃饭付款?我想任何一个聪明的老板,都会好好利用用户充值的钱来做事,集资永远是不会亏的。另外我说了,国家现在不允许这样做,是违法的,但是小公司基本都这样做。
@cmzz 另外,也许你见过很多提现的公司为什么要设置每天提现额度?为什么要设置每天提现次数?因为他们和银行合作,低于多少钱是不收手续费的,另外也是为了防止客户钱被骗被盗提。另外,由于是违法的,我不建议你们这样做,除非你们像 美团,支付宝,腾讯 那样有支付牌照。另外我再说一句,很多公司的做法,比如你骑单车,要你交押金,这个押金你就可以看做是充值,充值是违法的,换种说法就好了。不提倡你们犯经济罪。
每笔 订单记录 加一个 未消费 字段,默认与充值金额相等
比如:
此时用户消费 11元,此时应取出 订单记录 中 未消费 大于 0 的记录来做循环
结果:
如果发生退款,再取 未消费 大于 0 的记录直接退 未消费 的金额即可