public function wxpay_app() { $period_id = Input::get('period_id'); $period = Period::find($period_id); // 判断时间段有效性 if (!isset($period)) { return Response::json(array('error_code' => 2, 'message' => '无该时间段,请重新选择')); } if ($period->current >= $period->total) { return Response::json(array('error_code' => 3, 'message' => '已满人,请重新选择')); } $schedule = $period->schedule; $doctor = $schedule->doctor; $user_id = Session::get('user.id'); // 选择指定挂号账户 if (Input::has('account_id')) { $account_id = Input::get('account_id'); $account = RegisterAccount::find($account_id); if (!isset($account)) { return Response::json(array('error_code' => 4, 'message' => '不存在该挂号账户')); } if ($account->user_id != $user_id) { return Response::json(array('error_code' => 5, 'message' => '无效账户')); } } else { $account = RegisterAccount::where('user_id', $user_id)->first(); if (!isset($account)) { return Response::json(array('error_code' => 6, 'message' => '请先申请挂号账户')); } $account_id = $account->id; } $user_id = Session::get('user.id'); $attach = array('period_id' => (int) Input::get('period_id'), 'account_id' => $account_id); try { $period = Period::find(Input::get('period_id')); $schedule = $period->schedule; $doctor = $schedule->doctor; $order = $this->create_order($user_id, 'APP', json_encode($attach), (int) ($doctor->register_fee * 100)); $para = array('appid' => $order['appid'], 'partnerid' => WxPayConfig::MCHID, 'prepayid' => $order['prepay_id'], 'package' => 'Sign=WXPay', 'noncestr' => WxPayApi::getNonceStr(), 'timestamp' => time()); $wxpay_result = new WxPayResults(); $wxpay_result->FromArray($para); $wxpay_result->SetSign(); $package = $wxpay_result->GetValues(); } catch (Exception $e) { return Response::json(array('error_code' => 1, 'message' => $e->getMessage())); } return Response::json(array('error_code' => 0, 'package' => $package)); }
public function cancel() { $record_id = Input::get('record_id'); $record = RegisterRecord::find($record_id); // 是否存在该记录 if (!isset($record)) { return Response::json(array('error_code' => 2, 'message' => '不存在该挂号')); } $register_account = RegisterAccount::find($record->account_id); // 检查该就诊记录是否该用户的 if ($register_account->user_id != Session::get('user.id')) { return Response::json(array('error_code' => 3, 'message' => '无法取消该挂号')); } // 检查就诊状态 if ($record->status) { return Response::json(array('error_code' => 4, 'message' => '已就诊无法取消')); } // 取消同时将对应时间段挂号人数减1 try { DB::transaction(function () use($record) { $period = Period::find($record->period_id); $period->current -= 1; $period->save(); $record->delete(); $message = new Message(); $message->from_uid = $record->user_id; $message->to_uid = $record->doctor->user_id; $message->content = $record->user->real_name . '取消挂号'; $message->timestamp = time(); $message->status = 3; $message->save(); }); } catch (Exception $e) { return Response::json(array('error_code' => -1, 'message' => $e->getMessage())); } return Response::json(array('error_code' => 0, 'message' => '取消成功')); }