系统架构

image

应用架构

image

系统流程

image

image

资金流

image

image

流程图

收单及放款

image

售中退款

image

业务场景

年费佣金

总览

image

年费佣金设置

@startuml

autonumber

actor "小二" as 小二
participant "ovs-sellercenter" as ovs_sellercenter
participant "taobao-finance-viewconvert-ns-s" as taobao_finance_viewconvert_ns_s
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s


小二 -> ovs_sellercenter: 小二后台提交年费佣金设置

ovs_sellercenter -> ovs_sellercenter: 小二后台走审批流程

ovs_sellercenter -> 小二: 审批结果

ovs_sellercenter -> taobao_finance_viewconvert_ns_s: 审批成功后调用结算接口(BizRuleWriteFacade#saveBizRule)

taobao_finance_viewconvert_ns_s -> taobao_settlement_ns_s: 调用设置接口(BizRuleWriteService#saveBizRule)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 基础参数校验

taobao_settlement_ns_s -> taobao_settlement_ns_s: 校验计费规则因子是否存在

taobao_settlement_ns_s -> taobao_settlement_ns_s: 判断新增或修改

taobao_settlement_ns_s -> taobao_settlement_ns_s: 写入DB

taobao_settlement_ns_s -> taobao_finance_viewconvert_ns_s: 结果返回

taobao_finance_viewconvert_ns_s -> ovs_sellercenter: 结果返回


@enduml

年费佣金查询

@startuml

autonumber


participant "ovs-sellercenter" as ovs_sellercenter
participant "taobao-finance-viewconvert-ns-s" as taobao_finance_viewconvert_ns_s
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s



ovs_sellercenter -> taobao_finance_viewconvert_ns_s: 调用结算年费佣金查询接口(BizRuleQueryFacade#queryBizRule)

taobao_finance_viewconvert_ns_s -> taobao_settlement_ns_s: 接口查询(BizRuleQueryService#queryBizRule)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 查询计费规则

taobao_settlement_ns_s -> taobao_settlement_ns_s: 构建佣金因子表达式

taobao_settlement_ns_s -> taobao_settlement_ns_s: 查询DB

taobao_settlement_ns_s -> taobao_settlement_ns_s: 构建接口返回参数

taobao_settlement_ns_s -> taobao_finance_viewconvert_ns_s: 结果返回

taobao_finance_viewconvert_ns_s -> ovs_sellercenter: 结果返回


@enduml

年费试算 && 年费预缴 && 年费账单查询

@startuml

autonumber

actor "商家" as 商家
participant "taobao-merchant-onboarding-ns-s" as taobao_merchant_onboarding_ns_s
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s
participant "taobao-fund-manage-ns-s" as taobao_fund_manage_ns_s
participant "ipay" as ipay



alt 年费试算
商家 -> taobao_merchant_onboarding_ns_s: 商家入驻

taobao_merchant_onboarding_ns_s -> taobao_settlement_ns_s: 年费试算(StandardSettlementTrialService#trialCalculate)
taobao_settlement_ns_s -> taobao_settlement_ns_s: 调用汇金进行年费试算


taobao_merchant_onboarding_ns_s -> 商家: 展示需要缴纳年费金额

end

alt 年费预缴
商家 -> taobao_merchant_onboarding_ns_s: 商家确认扣费

taobao_merchant_onboarding_ns_s -> taobao_settlement_ns_s: 发送扣费请求(SingleBillingSettlementAcquireService#singleAcquire)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 调用汇金IBizGwService.submit

taobao_settlement_ns_s -> taobao_settlement_ns_s: 年费计算(StdSyncRatingSettleProcess#doRating)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 记录账单

taobao_settlement_ns_s -> taobao_fund_manage_ns_s: 年费代扣

taobao_fund_manage_ns_s -> ipay: 年费代扣请求(商家余额户转平台账户)

ipay -> taobao_fund_manage_ns_s: 结果返回

taobao_fund_manage_ns_s -> taobao_settlement_ns_s: 结果返回

taobao_settlement_ns_s -> taobao_merchant_onboarding_ns_s: 结果返回

end

alt 年费账单查询
商家 -> taobao_merchant_onboarding_ns_s: 年费缴纳结果查询

taobao_merchant_onboarding_ns_s -> taobao_settlement_ns_s: 年费账单查询(StandardSettlementQueryService#queryFcBillByConditions)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 从db查询fcbill表数据

taobao_settlement_ns_s -> taobao_merchant_onboarding_ns_s: 结果返回
taobao_merchant_onboarding_ns_s -> 商家: 结果返回
end

@enduml

保证金

保证金冻结 && 解冻 && 余额查询

@startuml

autonumber

participant "ovs-sellercenter" as taobao_merchant_onboarding_ns_s
participant "taobao-fund-manage-ns-s" as taobao_fund_manage_ns_s
participant "ipay" as ipay

taobao_merchant_onboarding_ns_s -> taobao_merchant_onboarding_ns_s: 监听放款消息 && 定时任务
taobao_merchant_onboarding_ns_s -> taobao_merchant_onboarding_ns_s: 查询小二后台设置的保证金金额
taobao_merchant_onboarding_ns_s -> taobao_merchant_onboarding_ns_s: 查询保证金余额确认冻结还是解冻?
alt 保证金余额查询

taobao_merchant_onboarding_ns_s -> taobao_fund_manage_ns_s: 保证金余额查询(FundManageUserAssetQueryFacade#userAssertQuery)

taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 参数校验

taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 组装查询参数

taobao_fund_manage_ns_s -> ipay: 资产查询

ipay -> taobao_fund_manage_ns_s: 余额返回

taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 结果组装

taobao_fund_manage_ns_s -> taobao_merchant_onboarding_ns_s: 结果返回
end

alt 保证金冻结
taobao_merchant_onboarding_ns_s -> taobao_merchant_onboarding_ns_s: 保证金不足

taobao_merchant_onboarding_ns_s -> taobao_fund_manage_ns_s: 保证金冻结(SettleFundManageFacadeServiceImpl#settleFundTransfer)

taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 幂等校验
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 生成冻结单据
taobao_fund_manage_ns_s -> ipay: 保证金冻结(从商家余额户冻结)

ipay -> taobao_fund_manage_ns_s: 冻结结果返回

taobao_fund_manage_ns_s -> taobao_merchant_onboarding_ns_s: 冻结结果返回
end

alt 保证金解冻
taobao_merchant_onboarding_ns_s -> taobao_merchant_onboarding_ns_s: 保证金过多

taobao_merchant_onboarding_ns_s -> taobao_fund_manage_ns_s: 保证金解冻(SettleFundManageFacadeServiceImpl#settleFundTransfer)

taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 幂等校验
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 生成解冻单据

taobao_fund_manage_ns_s -> ipay: 保证金解冻(解冻到商家余额户)

ipay -> taobao_fund_manage_ns_s: 解冻结果返回

taobao_fund_manage_ns_s -> taobao_merchant_onboarding_ns_s: 解冻结果返回
end


@enduml

交易结算

总览

image

收单 & 资金归集 & 放款

@startuml

autonumber

participant "taobao-trade-ns-s" as 交易
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s
participant "taobao-fund-manage-ns-s" as taobao_fund_manage_ns_s
participant "taobao-payment-ns-s" as taobao_payment_ns_s
participant "ipay" as ipay


alt 收单
交易 --> taobao_settlement_ns_s: 支付成功通知

taobao_settlement_ns_s -> taobao_settlement_ns_s: 执行收单接口(TradeSettlementAcquireFacadeService#tradeOrderAcquire)

taobao_settlement_ns_s -> 交易: 组装交易单

taobao_settlement_ns_s -> taobao_payment_ns_s: 组装支付单

taobao_settlement_ns_s -> taobao_settlement_ns_s: 金额校验(支付和交易金额是否一致,包含金本位金额)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 计算分摊

taobao_settlement_ns_s -> taobao_settlement_ns_s: 组装收单视图

taobao_settlement_ns_s -> taobao_settlement_ns_s: 收单创建资金单,资金池

taobao_settlement_ns_s -> taobao_settlement_ns_s: 创建资金归集超时任务

end

alt 资金归集
taobao_settlement_ns_s -> taobao_settlement_ns_s: 定时任务,执行资金归集接口(TradeSettlementLoanFacadeServiceImpl#fundPretreatment)
taobao_settlement_ns_s -> taobao_settlement_ns_s: 幂等检查
taobao_settlement_ns_s -> taobao_settlement_ns_s: 判断是否做资金归集
taobao_settlement_ns_s -> taobao_settlement_ns_s: 创建资金归集执行单
taobao_settlement_ns_s --> taobao_fund_manage_ns_s: 发送通知给资金管理
taobao_settlement_ns_s -> taobao_settlement_ns_s: 更新执行单状态为成功
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 执行资金管理转账服务接口(SettleFundManageFacade#settleFundTransfer)
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 参数校验
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 幂等校验
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 初始化资金归集转账单
taobao_fund_manage_ns_s -> ipay: 资金归集(担保户转待结算户)
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 更新资金归集转账单状态


end

alt 放款
交易 --> taobao_settlement_ns_s: 确认收货消息
taobao_settlement_ns_s --> taobao_settlement_ns_s: 执行放款接口(TradeSettlementLoanFacadeServiceImpl#confirmGoodsLoan)
taobao_settlement_ns_s -> taobao_settlement_ns_s: 幂等检查
taobao_settlement_ns_s -> taobao_settlement_ns_s: 查询资金池
taobao_settlement_ns_s -> taobao_settlement_ns_s: 业务检查(资金归集、订单状态等检查)
taobao_settlement_ns_s -> taobao_settlement_ns_s: 创建放款执行单,扣减资金池
taobao_settlement_ns_s -> taobao_settlement_ns_s: 处理放款因子
taobao_settlement_ns_s -> taobao_settlement_ns_s: 资金分成计算
taobao_settlement_ns_s -> taobao_settlement_ns_s: 销账
taobao_settlement_ns_s --> taobao_fund_manage_ns_s: 发送消息
taobao_settlement_ns_s -> taobao_settlement_ns_s: 更新执行单状态为成功

taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 执行资金管理转账服务接口(SettleFundManageFacade#settleFundTransfer)
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 幂等校验
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 初始化放款单
taobao_fund_manage_ns_s -> ipay: 放款(货款金额:待结算户转商家支付宝余额,运费&佣金:待结算户转平台户)
taobao_fund_manage_ns_s -> taobao_fund_manage_ns_s: 更新放款单状态

end

@enduml

退款

@startuml

autonumber

participant "taobao-reverse-ns-s" as 逆向
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s
participant "taobao-fund-manage-ns-s" as taobao_fund_manage_ns_s
participant "taobao-payment-ns-s" as taobao_payment_ns_s
participant "ipay" as ipay



逆向 -> taobao_settlement_ns_s: 发起退款(TradeSettlementRefundFacadeServiceImpl#createRefund)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 幂等检查

taobao_settlement_ns_s -> taobao_payment_ns_s: 业务检查(支付状态检查、主订单退款检查)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 校验退款金额限制

taobao_settlement_ns_s -> taobao_settlement_ns_s: 退款金额计算

taobao_settlement_ns_s -> taobao_settlement_ns_s: 创建退款执行单 更新资金池

taobao_settlement_ns_s --> taobao_fund_manage_ns_s: 发起退款准备(SettleFundManageFacade#settleFundTransfer)

taobao_fund_manage_ns_s --> taobao_fund_manage_ns_s: 幂等检查

taobao_fund_manage_ns_s --> taobao_fund_manage_ns_s: 初始化退款款转账单

taobao_fund_manage_ns_s --> taobao_fund_manage_ns_s: 业务检查

taobao_fund_manage_ns_s --> taobao_settlement_ns_s: 退款准备完成

taobao_settlement_ns_s --> taobao_payment_ns_s: 发送退款消息

taobao_payment_ns_s -> ipay: 调用ipay退款(待结算户转担保护)



@enduml

保险结算

总览

image

保险投保

image

@startuml

autonumber

participant "taobao-trade-ns-s" as 交易
participant "服务中台" as 服务中台
participant "众安保险" as 众安保险
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s
participant "taobao-fund-manage-ns-s" as taobao_fund_manage_ns_s
participant "ipay" as ipay





交易 --> 交易: 交易下单,打保险服务标(七天无理由)

交易 --> 服务中台: 支付成功消息

服务中台 --> 服务中台: 创建服务单
服务中台 --> taobao_settlement_ns_s: 发起结算请求(SingleBillingSettlementAcquireService#singleAcquire)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 请求参数校验
taobao_settlement_ns_s -> taobao_settlement_ns_s: 构建汇金参数;
taobao_settlement_ns_s -> taobao_settlement_ns_s: 组装因子
taobao_settlement_ns_s -> taobao_fund_manage_ns_s: 调用ipay汇率接口
taobao_fund_manage_ns_s -> ipay: 查询汇率
taobao_settlement_ns_s -> 交易: 查询交易获取订单的实付金额;
taobao_settlement_ns_s -> taobao_settlement_ns_s: 组装账号(卖家账号->平台账户)
taobao_settlement_ns_s -> taobao_settlement_ns_s: 调用汇金接口(IBizGwService.submit);
taobao_settlement_ns_s -> taobao_settlement_ns_s: 将金额作为保额,同步试算出保费HKD(1%)

taobao_settlement_ns_s -> 服务中台: 同步受理成功,将计费结果返回

服务中台 -> 众安保险: 发起投保

众安保险 -> 众安保险: 投保成功

taobao_settlement_ns_s -> taobao_settlement_ns_s: 收单执行 - 异步计费→记账→销账(stdFcRatingSettleProcess.dealMsg);

taobao_settlement_ns_s -> taobao_fund_manage_ns_s: 保费代扣

taobao_fund_manage_ns_s -> ipay: 执行代扣

ipay -> taobao_fund_manage_ns_s: 代扣成功

taobao_settlement_ns_s --> 服务中台: 异步结果通知

服务中台 -> 服务中台: 状态更新


@enduml

保险赔付

image

@startuml

autonumber
participant "taobao-trade-ns-s" as 交易
participant "taobao-reverse-ns-s" as 逆向
participant "服务中台" as 服务中台
participant "众安保险" as 众安保险
participant "taobao-settlement-ns-s" as taobao_settlement_ns_s
participant "taobao-fund-manage-ns-s" as taobao_fund_manage_ns_s
participant "ipay" as ipay




逆向 -> 逆向: 发起退款

逆向 -> 服务中台: 逆向单打服务标(七天无理由)

服务中台 -> 服务中台: 检验并创建服务单
服务中台 -> 众安保险: 提交申请

众安保险 -> 众安保险: 受理理赔

众安保险 -> 服务中台: 更新状态

服务中台 -> 逆向: 更新状态

逆向 -> 服务中台: 填写运单号

服务中台 -> 众安保险: 运单号

众安保险 -> 众安保险: 收货确认

众安保险 -> 众安保险: 理赔打款

众安保险 -> 服务中台: 更新状态

服务中台 -> taobao_settlement_ns_s: 保险理赔(SingleBillingSettlementAcquireService#singleAcquire)

taobao_settlement_ns_s -> taobao_settlement_ns_s: 请求参数校验
taobao_settlement_ns_s -> taobao_settlement_ns_s: 校验投保订单是否成功?
taobao_settlement_ns_s -> taobao_settlement_ns_s: 构建汇金参数;
taobao_settlement_ns_s -> taobao_settlement_ns_s: 组装因子
taobao_settlement_ns_s -> taobao_fund_manage_ns_s: 调用ipay汇率接口
taobao_fund_manage_ns_s -> ipay: 查询汇率
taobao_settlement_ns_s -> 交易: 查询交易获取订单的实付金额;
taobao_settlement_ns_s -> taobao_settlement_ns_s: 组装账号(平台账户->卖家账户)
taobao_settlement_ns_s -> taobao_settlement_ns_s: 调用汇金接口(IBizGwService.submit);
taobao_settlement_ns_s -> taobao_settlement_ns_s: 收单执行 - 根据保额和赔付比例确定赔付金额
taobao_settlement_ns_s -> taobao_settlement_ns_s: 收单执行 - 异步计费→记账→销账(stdFcRatingSettleProcess.dealMsg);

taobao_settlement_ns_s -> taobao_fund_manage_ns_s: 发起代付

taobao_fund_manage_ns_s -> ipay: 执行代付

ipay -> taobao_fund_manage_ns_s: 代付完成

taobao_fund_manage_ns_s -> taobao_settlement_ns_s: 代付完成

taobao_settlement_ns_s --> 服务中台: 发送销账消息,更新状态

服务中台 -> 逆向: 更新状态


@enduml