微信支付分账功能核心逻辑

背景

现在做的所有系统都是SAAS,哪怕客户要单商户、单业务,我都会按照多商户、SAAS架构设计。不图别的 就图一个扩展。

比如我之前发的网约巴士系统,几乎所有的都是SAAS,可以独立核算、财务独立:

其中用的最多的就是分账,核心业务逻辑就是:

统一下单支付是多一个参数,告诉微信,这个订单需要分账哦:

然后设置定时任务、或者手动,调用官方接口进行分账。具体业务可以参考官方文档。

分账普通直连分账接口文档icon-default.png?t=O83Ahttps://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=27_7&index=8

解决方案

这里关键的是业务逻辑,主要处理如下几个:

  1. 下单设置分账参数
  2. 手动(自动)分账
  3. 记录相关业务逻辑

这里主要贴出来,自动分账的核心业务:

//分账到企业,请先添加分账账户
$receiverslists =(new Receiver())->where(['status'=>'1'])->field('id,type,account,"分账给合作方" as description')->select();
$receivers = [];
foreach($receiverslists as $s=>$v){
    $receivers[] = [
        "type"=> $v['type'],
        "account"=>$v['account'],
        "amount"=>$amount,
        "description"=> "分到合作伙伴"
    ];
}
//如果后台删除了,就分账到企业
if(!$receivers){
     $receivers = [
        "type"=> "MERCHANT_ID",
        "account"=>'1439888888',
        "amount"=>$amount,
        "description"=> "分到合作伙伴"
    ];
}

$result = $Wechatpay->ProfitShare($out_order_no,$transaction_id,$receivers,$val['paymentaccount_id']);
// dump($result);
// exit;
if($result['return_code'] == 'SUCCESS') {
    if($result['result_code'] == 'SUCCESS'){
    	$data = [
            "mch_id" =>$result['mch_id'],
            "appid" =>$result['appid'],
            "order_id" =>$result['order_id'],
            "receivers" =>$result['receivers'],
            "receivers_status" => $result['status'],
            'return_code' => $result['return_code'],
            'result_code' => $result['result_code']
        ];
    }else{
    	$data = [
            "mch_id" =>$result['mch_id'],
            "appid" =>$result['appid'],
             "return_msg" => $result['err_code_des'],
            'return_code' => $result['return_code'],
            'result_code' => $result['result_code']
        ];
    }
}else{
	$data = [
        'return_msg' => $result['return_msg'],
        'return_code' => $result['return_code']
    ];
}

主要工作流程是:

  1. 增加分账方管理;
  2. 增加自动分账函数;
  3. 设置查询分账业务功能;
  4. 小程序增加分账明细;

最后的话

业务为主、技术为后盾.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斌_bingyu709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值