getHandlers(); $extra_shipping_fee = 0; if (!empty($form->process_extra_data['shipping_fee'])) { foreach ($form->process_extra_data['shipping_fee'] as $gid => $fees) { $extra_shipping_fee = array_sum($fees); } } if (empty($form->marketing['deduct']['shipping_fee']['money'])) $form->marketing['deduct']['shipping_fee']['money'] = 0; $form->marketing['deduct']['shipping_fee']['money'] += $extra_shipping_fee; foreach ($group_order_goods as &$item) { // 运费减免处理 foreach ($handlers as $key => $handler) { // 如果是社区团购订单,那么就不需要进行邮费处理 - 并且判断是否为送货上门/自提, 团长是否存在 if ($form->is_force_free_shipping && $handler == FreeShippingMarketing::class) { continue; } /** @var BaseMarketing $class */ $item = $handler::compute($item, $form, $extra); if ($item === false) throw new Exception($handler::getStaticError()); } if (!$form->is_force_free_shipping) $item = FreightFullReduceMarketing::compute($item, $form); // 扩展费用 if (!empty($form->process_extra_data['shipping_fee'])) { foreach ($form->process_extra_data['shipping_fee'] as $gid => $fees) { if (!empty($item['goods'][$gid])) { if (empty($item['mch_order_info']['shipping_money'])) $item['mch_order_info']['shipping_money'] = 0; $item['mch_order_info']['shipping_money'] += array_sum($fees); $item['mch_order_info']['pay_money'] += array_sum($fees); } } } $form['total_pay_money'] = round($form['total_pay_money']+$item['mch_order_info']['pay_money'],2);// 计算总额 $form['total_pay_money_not_coupon'] = bcadd( $form['total_pay_money_not_coupon'], bcadd( $item['mch_order_info']['goods_price'], $item['mch_order_info']['coupon_money'] ?? 0, 2 ), 2 ); // 计算优惠券前金额 } $form['group_order_goods'] = $group_order_goods; return $form; } catch (Exception $e) { $this->setError($e->getMessage()); return false; } } }