getInfo(['s.site_id' => $data['site_id']], $field, 's', $json); $accounts = []; if ($siteInfo['is_commission'] == 1) return $accounts; //免分账 if (isset($siteInfo['is_platform_commission']) && $siteInfo['is_platform_commission'] && in_array($siteInfo['agent_type'], ['divide', 'divideAndSitefee'])) { switch ($data['pay_type']) { case 'weapp': case 'wechat': case 'wechatpay': $platform = config('accounts.weapp'); $account_type = 'MERCHANT_ID'; break; case 'alipay': case 'zmxxpay': case 'huabie': case 'zmgopay': default: $account_type = 'userId'; $platform = config('accounts.aliapp'); break; } $amount = $data['pay_money'] * $platform['fee_commission'] / 100; //默认抽佣 if (floatval($siteInfo['platform_commission_rate'])) { $platform['fee_commission'] = $siteInfo['platform_commission_rate']; $amount = $data['pay_money'] * $siteInfo['platform_commission_rate'] / 100; } $platform['site_id'] = $data['site_id']; //订单号 $platform['ag_site_id'] = $siteInfo['agent_id']; //订单号 $platform['is_platform'] = 1; //订单号 $platform['order_id'] = $data['order_id']; //订单号 $platform['member_id'] = $data['member_id']; //订单号 $platform['is_video_number'] = $data['is_video_number'] ?: 0; //订单号 $platform['out_trade_no'] = $data['out_trade_no']; //交易号 $platform['trade_no'] = $data['trade_no'] ?? ''; //订单号 $platform['pay_money'] = $data['pay_money']; //支付金额 $platform['amount'] = $amount; //分账金额 $platform['channel_type'] = $data['order_from']; //分账金额 $platform['account_type'] = $account_type; //订单归属 $platform['promotion_type'] = $data['promotion_type']; //订单归属 $platform['reason'] = '平台技术服务费'; //订单归属 if ($amount && $platform['account']) { $accounts[] = $platform; } } if ($siteInfo['group_fee_commission'] > 0 || $siteInfo['fee_commission'] > 0) { //代理商分账 $fee_commission = $siteInfo['group_fee_commission']; //按照套餐抽佣 if ($siteInfo['fee_commission']) { //按照站点独立抽佣 $fee_commission = $siteInfo['fee_commission']; } if ($siteInfo['is_operated']) { //如果服务商按产品抽佣 $where = [ ['o.order_id', '=', $data['order_id']] ]; $join = [ ['goods g', 'g.goods_id=o.goods_id', 'left'] ]; $commission_goods_lists = model('order_goods')->getList($where, 'g.goods_id,g.isp_commission,o.price', '', 'o', $join); foreach ($commission_goods_lists as $item) { $isp_commission = $fee_commission; if ($item['isp_commission'] > 0) { $isp_commission = $item['isp_commission']; } $temp = $this->getMoneyArr($data, $siteInfo, $siteInfo['agent_id'], $item['price'], $isp_commission, 2, '代营运服务费'); if ($temp) { $accounts[] = $temp; } } } else { //按交易额抽佣 $acc = $this->getMoneyArr($data, $siteInfo, $siteInfo['agent_id'], $data['pay_money'], $fee_commission, 2, '平台服务商服务费'); if ($acc) { $accounts[] = $acc; } } } if ($siteInfo['agent_pid'] > 0) { //渠道上级分佣 $agent_parent = model('website')->getInfo(['site_id' => $siteInfo['agent_pid']], 'site_id,web_contacts,web_phone,alipay_account_name,settlement_alipay_account,wecaht_account_name,settlement_wecaht_mch_id,channel_commission_rate'); $fee_commission = $agent_parent['channel_commission_rate']; if ($fee_commission) { $acc = $this->getMoneyArr($data, $siteInfo, $agent_parent['site_id'], $data['pay_money'], $fee_commission, 3, '平台服务商服务费'); if ($acc) { $accounts[] = $acc; } } } return $accounts; } /*** * 整理数据 * @param $data * @param $siteInfo 站点信息 * @param $ag_site_id代理商 * @param $price 产品价格 * @param $fee_commission 费率 * @param $reason 备注 * @return array */ private function getMoneyArr($data, $siteInfo, $ag_site_id, $price, $fee_commission, $platform_type = 2, $reason = '服务商服务费') { $money = $price * $fee_commission / 100; //判断是否按产品抽佣 $acc = [ 'site_id' => $data['site_id'], 'ag_site_id' => $ag_site_id, 'is_platform' => $platform_type, 'order_id' => $data['order_id'], 'member_id' => $data['member_id'], 'out_trade_no' => $data['out_trade_no'], 'trade_no' => $data['trade_no'] ?? '', //订单号 'is_video_number' => $data['is_video_number'] ?: 0, 'fee_commission' => $fee_commission, 'pay_money' => $price,//支付金额, 'amount' => $money, 'account_type' => 'userId', 'channel_type' => $data['order_from'], 'promotion_type' => $data['promotion_type'], 'reason' => $reason ]; switch ($data['pay_type']) { case 'weapp': case 'wechat': $acc['realname'] = $siteInfo['wecaht_account_name']; $acc['account'] = $siteInfo['settlement_wecaht_mch_id']; $acc['account_type'] = 'MERCHANT_ID'; break; case 'alipay': case 'aliapp': case 'zmxxpay': case 'huabie': case 'zmgopay': $acc['realname'] = $siteInfo['alipay_account_name']; $acc['account'] = $siteInfo['settlement_alipay_account']; $acc['account_type'] = 'userId'; break; default: $acc['account'] = ''; } if ($money <= 0 || !$acc['account'] || !$acc['realname']) { //未设置账号不分佣 $acc = []; } return $acc; } }