$order['id'], 'pay_way' => $order['pay_way'] ]); } if($from == 'recharge') { Db::name('recharge_order')->where('id', $order['id'])->update(['pay_way' => $order['pay_way']]); } // 订单金额为0的情况,直接走支付回调接口 if($order['order_amount'] == 0) { PayNotifyLogic::handle('order', $order['order_sn'], []); return $order['id']; } switch ($order['pay_way']) { case Pay::WECHAT_PAY: $res = WeChatPayServer::unifiedOrder($from, $order, $order_source); if (false === $res) { self::$error = WeChatPayServer::getError(); } break; case Pay::ALI_PAY: $aliPay = new AliPayServer(); $res = $aliPay->pay($from, $order, $order_source); if(false === $res) { self::$error = $aliPay->getError(); } else { self::$return_code = 10001;//特殊状态码,用于前端判断 } break; case Pay::BALANCE_PAY: $balancePay = new BalancePayServer(); $res = $balancePay->pay($from, $order, $order_source); if($res !== false) { PayNotifyLogic::handle('order', $order['order_sn'], []); self::$return_code = 20001;//特殊状态码,用于前端判断 }else{ self::$error = $balancePay->getError(); } break; default: self::$error = '订单异常'; $res = false; } return $res; } /** * Notes: pc预支付 * @param $order * @author 段誉(2021/3/17 14:56) * @return array|bool|string * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public static function pcPay($order, $order_source = Client_::pc) { $res = []; // 更新订单支付方式 Order::update([ 'id' => $order['id'], 'pay_way' => $order['pay_way'] ]); // 订单金额为0的情况,直接走支付回调接口 if($order['order_amount'] == 0) { PayNotifyLogic::handle('order', $order['order_sn'], []); self::$return_code = 10001;//特殊状态码,用于前端判断 return $order['id']; } switch ($order['pay_way']) { case Pay::WECHAT_PAY: $res = WeChatPayServer::unifiedOrder('order', $order, $order_source); if (false === $res) { self::$error = WeChatPayServer::getError(); return false; } break; case Pay::BALANCE_PAY: $user = User::get($order['user_id']); if ($user['user_money'] < $order['order_amount']) { self::$error = '余额不足'; return false; } $balancePay = new BalancePayServer(); $res = $balancePay->pay('order', $order, '5'); if($res !== false) { PayNotifyLogic::handle('order', $order['order_sn'], []); self::$return_code = 10001;//特殊状态码,用于前端判断 }else{ self::$error = $balancePay->getError(); return false; } break; case Pay::ALI_PAY: if ($order_source != Client_::pc) { self::$error = '支付类型错误'; return false; } $aliPay = new AliPayServer(); $res = $aliPay->pay('order', $order, $order_source); if (false === $res) { self::$error = $aliPay->getError(); return false; } self::$return_code = 20001;//特殊状态码,用于前端判断 break; default: self::$error = '无效的支付方式'; return false; } return $res; } /** * Notes: 是否在白名单内支付 * @param $user_id * @author 段誉(2021/2/24 10:01) * @return bool */ public static function isPayWhiteList($user_id) { $white_list = Env::get('wechat.white_list', ''); $white_list = explode(',', $white_list); if (in_array($user_id, $white_list)) { return true; } return false; } }