payment相关逻辑
付款有手动付款和计划程序自动付款两种,照例先列出涉及到的概念
付款方式 - PaymentTypes - 现金,支票,信用卡,等等
记账类型 - Ledger_AccTransTypes - 涉及到金钱往来的都需要记账,简单说就是收到的钱和支出的钱作何用途
手动付款
支持的付款方式有EFT,CC,Agent Sweep,Check,Money Order和Cash,有相应的权限才可以使用对应的付款方式。在Quote绑定和Policy的Insured Info tab中都可以进入付款页面。手动付款的大致过程是这样的:
- 填写付款金额
- 选择付款方式
- 填写选定的付款方式下的账号信息以及账单的地址信息
- 如果选择了EFT或者CC
- 获取accounting date, Bill Code 没有就生成一个,这个code只是存入了Policy和Payment Process表中,不知道有什么其他用途
- 需要手续费的在总金额中加入手续费
- 调用solupay,如果不成功就显示付款不成功页面
- 付款成功会添加accounting记录,也就是记账信息,有手续费的要分开记录成两条记账信息, 对应的记账类型如下:
- PMT_OCC Invoice Premium - Online Credit Card Payment -> Credit Card
- PMT_EC Invoice Premium - Electronic Check Payment -> EFT/EC, 注意这里和自动扣款有些区别
- CON_FEE Invoice Convenience Fee -> 手续费
- 将付款的相关信息保存以供自动付款适用 - Policy_PaymentProcess
- Over
- 其他的付款方式暂不介绍
自动付款
自动付款需要Policy有多个待支付分期账单,而且有支付历史,并且保存了相应的账号信息。支持的付款方式有EFT/EC(Electronic Check)和CC(Credit Card)
CC记账类型 - PMT_OCC Invoice Premium - Online Credit Card Payment
EFT/EC记账类型 - PMT_ACH Invoice Premium - ACH Payment
自动付款的过程:
- 找到自动设置了自动付款的Policy下的待支付的Bill,以及对应的最新付款账号信息,TODO这是啥? NSF=0,DueDate<处理时间
- 从Policy_PaymentProcess获取保存的账号信息,和手动付款不同之处
- 后面的和手动付款基本一样,调用接口,添加记账信息
- Over
修改付款信息
从policy action页面我们可以进入修改自动付款信息页面,选择付款方式,填写好账号信息保存,后台会利用新的账号信息调用付款接口验证账号的合法性。成功后将所有的老记录失效,插入一条新的payment process记录,下次自动付款便会使用它。
Agent Sweep付款方式:
Agency的账户给保险公司,客户的钱直接交给agency,保险公司直接从账户扣除所需的保费。
手动付款选择Agent Sweep之后,会添加记账信息,schedule一个付款任务到agentsweep表,然后有dts去跑,调用付款接口
Solupay付款接口
solupay wiki
接口支持action参数,包括根据付款账号信息注册solupay账号,获取已注册账号token,更新注册信息,自动扣款,退款。
所有的付款结果都将保存到这里Merchant_Responses。付款报错就来这里查。entry id 为0的agent sweep的sst加入的,为2的是自动扣款sst加的,其他的则是对应的用户手动付款的。
PolicyData_Bill
账单分期信息都在这里,付款、退款、保费变化,将重新计算账单,top down类型的费用在最近bill一次性收取,event spread费用平摊到剩下的所有的未支付bill中。TODObill变动如何计算,如何adjustment.
任何影响accounting的操作都将引起recalculate bill,但是这个是底层封装的,无从知道更细节的逻辑。
ACH Payment
不知道是否准确
abbr. 自动化交易所(Automated Clearing House)
将付款信息按如下的格式保存为文本文件