public function addFlowChargeOrder($request, $response) { /*{{{*/ $refId = $request->getRequest('refid', true); $ref = DAL::get()->find('DoctorPatientRef', $refId); $isdpRef = $ref instanceof DoctorPatientRef; $isUserSelf = $ref->user->id == $this->user->id; $isOpenCharge = $ref->space->isChargeOpened(); DBC::requireTrue($isdpRef && $isUserSelf && $isOpenCharge, '对不起,您不能预充值'); if ($this->checkCanCharge($ref)) { $this->message("抱歉!现在不能购买。您已经提前购买了{$ref->space->name}医生的3次指导机会,为避免资源浪费,请在使用后再次够买。", $response, array('text' => '点击这里继续', 'url' => $ref->getUrl())); } else { $product = ProductClient::getInstance()->getDoctorChargeFlowProduct($ref->space); $charge = $product->salePrice; $cashAccount = $this->user->getCashAccount(); if ($cashAccount->amount >= $charge) { $serviceOrder = ServiceOrderClient::getInstance()->create($ref, $product, $this->user); if (false == $serviceOrder->isNull()) { ServiceOrderClient::getInstance()->pay($serviceOrder, $this->user); $serviceOrder = DAL::get()->find('serviceOrder', $serviceOrder->id, true); } if ($serviceOrder->isPaid()) { $response->setRedirect($serviceOrder->successUrl()); return parent::DIRECT_OUTPUT; } } $url = 'http://' . URL_PREFIX . 'passport.haodf.com/telpayment/showtelaccount'; $this->message('您的余额不足,不能购买,请充值后重新购买', $response, array('text' => '去充值', 'url' => $url)); } }
public function ajaxAddFlowChargeOrder($request, $response) {/*{{{*/ $refId = $request->getRequest('refid', 0); $ref = DAL::get()->find('DoctorPatientRef', $refId); $cashAccount = $this->user->getCashAccount(); $product = ProductClient::getInstance()->getDoctorChargeFlowProduct($ref->space); if (false == ($ref instanceof DoctorPatientRef && $ref->user->id == $this->user->id && $ref->space->isChargeOpened())) { $msg = "对不起,您不能预充值"; $res = "failure"; } else if ($ref->isSpaceCanPost() && false == $ref->isLastSpaceReply()) { $msg = "抱歉!现在不能购买。您已经提前购买了{$ref->space->name}医生的3次指导机会,为避免资源浪费,请在使用后再次购买。"; $res = "failure"; } else if ($cashAccount->amount < $product->salePrice) { $msg = "您的余额不足,不能购买,请充值后重新购买。"; $res = "failure"; } else { $serviceOrder = ServiceOrderClient::getInstance()->create($ref, $product, $this->user); if(false == $serviceOrder->isNull()) { ServiceOrderClient::getInstance()->pay($serviceOrder, $this->user); $serviceOrder = DAL::get()->find('serviceOrder', $serviceOrder->id, true); if ($serviceOrder->isPaid()) { $msg = "支付成功!"; $res = "success"; } else { $msg = "支付失败!"; $res = "failure"; } } else { $msg = "支付失败!"; $res = "failure"; } } $results = array('res' => $res, 'msg' => XString::convertToUnicode($msg)); echo json_encode($results); return self::DIRECT_OUTPUT; }/*}}}*/
public function addFlowChargeOrder($request, $response) {/*{{{*/ $refId = $request->getRequest('refid',true); $ref = DAL::get()->find('DoctorPatientRef', $refId); DBC::requireTrue($ref instanceof DoctorPatientRef && $ref->user->id == $this->_newUser->id && $ref->space->isChargeOpened(), '对不起,您不能预充值'); if($ref->isSpaceCanPost() && false == $ref->isLastSpaceReply()) { $this->message("抱歉!现在不能购买。您已经提前购买了{$ref->space->name}医生的3次指导机会,为避免资源浪费,请在使用后再次够买。" , $response, array( 'buttons' => array( array('text' => '点击这里继续', 'url' => $ref->getUrl()), ), )); return ; } $cashAccount = $this->_newUser->getCashAccount(); if($cashAccount->amount < $ref->space->getValidFlowProduct()->getDefPrice()) { $this->message('您的余额不足,不能购买,请充值后重新购买', $response, array( 'buttons' => array( array('text' => '去充值', 'url' => 'http://'.URL_PREFIX.'passport.haodf.com/telpayment/showtelaccount'), ), )); return; } $serviceOrder = ServiceOrderClient::getInstance()->addWithOutIntention($ref->patient, $ref->space->getValidFlowProduct()); $url = $ref->payBackUrl($serviceOrder); if(false == $serviceOrder->isNull()) { ServiceOrderClient::getInstance()->pay($serviceOrder); } $response->setRedirect($url); }/*}}}*/
public function balancePay4rechargeableCase($userId, $caseId, $caseType, $os) {/*{{{*/ if ($caseType != 'flow' && $caseType != 'Flow') { $this->setErrorCode(335); return false; } $dpRef = DAL::get()->find('DoctorPatientRef', $caseId); if ($dpRef->isNull()) { $this->setErrorCode(335); return false; } $result = ""; if (!$dpRef->space->isChargeOpened()) { $this->setErrorCode(336); return false; } /* if ($dpRef->getAllowSpaceReply() >= DoctorPatientRef::LASTSPACEREPLY) { $this->setErrorCode(337); return false; } */ if (false == $dpRef->isNull() && $dpRef->canPatientCharge($userId)) { $product = ProductClient::getInstance()->getDoctorChargeFlowProduct($dpRef->space); $serviceOrder = ServiceOrderClient::getInstance()->create($dpRef, $product, $dpRef->user); if(false == $serviceOrder->isNull()) { ServiceOrderClient::getInstance()->pay($serviceOrder, $dpRef->user); $result = 'succ'; } } if ($result != 'succ') { $this->setErrorCode(334); return false; } else { $this->msg = '支付成功'; } }/*}}}*/
private function getFlowOrder($request, $response) {/*{{{*/ $flow = DAL::get()->find('DoctorPatientRef', $request->orderId); DBC::requireFalse($flow->isNull(), '无效订单'); $product = ProductClient::getInstance()->getDoctorChargeFlowProduct($flow->space); $serviceOrder = ServiceOrderClient::getInstance()->create($flow, $product, $this->user); DBC::requireFalse($serviceOrder->isNull(), '无效订单'); return $serviceOrder; }/*}}}*/
public function diffPricePay($request, $response) { /*{{{*/ $serviceOrder = DAL::get()->find('serviceOrder', $request->id); $this->checkCertification($serviceOrder); ServiceOrderClient::getInstance()->diffPricePay($serviceOrder, $this->curInspector); $response->setRedirect($response->router->urlfor('serviceorder/showdetail', array('id' => $serviceOrder->id, 'showContent' => true))); }
private function payOrder($orderIds, $userId) { /*{{{*/ DBC::requireNotEmpty($orderIds, '订单Id不可为空'); DBC::requireNotEmpty($userId, '用户Id不可为空'); $orders = DAL::get()->find('serviceOrder', $orderIds); $user = DAL::get()->mustFind('User', $userId); $accountTotal = 0; foreach ($orders as $orderItem) { $accountTotal += $orderItem->price; } if ($user->getCashAccount()->amount >= $accountTotal) { foreach ($orders as $order) { ServiceOrderClient::getInstance()->pay($order, $this->curInspector->user); } } else { die('余额不足,只认领不付款'); } }
public function alipayChannel4Zixun($request, $response) { /*{{{*/ $flow = DAL::get()->find('DoctorPatientRef', $request->refid); DBC::requireFalse($flow->isNull(), '无效订单'); $product = ProductClient::getInstance()->getDoctorChargeFlowProduct($flow->space); $needPay = XString::calculateBalancePrice($product->salePrice, $flow->user->getCashAccount()->amount); DBC::requireTrue($needPay > 0, '价格有错误 或 余额可够支付'); $serviceOrder = ServiceOrderClient::getInstance()->create($flow, $product, $flow->user); DBC::requireFalse($serviceOrder->isNull(), '无效订单'); $depositeOrder = OrderClient::getInstance()->createDepositeOrder($flow->user, $needPay, DepositeOrder::RECHARGE_TYPE_ALIPAYWAP, array($serviceOrder)); DBC::requireFalse($depositeOrder->isNull(), '无效订单!'); $userName = $flow->user->name; $returnUrl = WaperAlipay::getDefaultReturnUrl4TouchZixun(); $notifyUrl = WaperAlipay::getDefaultNotifyUrl(); $sellerUrl = WaperAlipay::getDefaultSellerUrl4TouchZixun($serviceOrder->id); $aliPayUrl = WaperAlipay::getAliWapPayUrl($depositeOrder->id, $this->getPayTypeByOrder($serviceOrder), $needPay, $notifyUrl, $returnUrl, $sellerUrl, ServiceDef::getServiceSpec(ServiceDef::TYPE_FLOW)->text, $this->getPayDescriptionByOrder($serviceOrder, $userName)); $response->setRedirect($aliPayUrl); }
public function showFlowOrderList($request, $response) {/*{{{*/ $options['startTime'] = $beginDate = $request->beginDate; $options['endTime'] = $endDate = $request->endDate; $nowPage = $request->page ? $request->page : 1; $pageSize = 20; $res = ServiceCardClient::getInstance()->queryUnFreeServiceCardBySpace($this->_newSpace, $nowPage, $pageSize, $options); $pagelink = PageNav::getNavLink(PageNav::getPageNavTemplate("showfloworderlist?beginDate=$beginDate&actionclass=$request->actionclass&endDate=$endDate&page="),$res['pageInfo']['nowpage'],$res['pageInfo']['pagesize'],$res['pageInfo']['total']); $response->flows = FlowClient::getInstance()->getFlowsByServiceCards($res['serviceCards']); $response->serviceCards = $res['serviceCards']; $response->wares = ServiceOrderClient::getInstance()->getWaresByServiceCards($res['serviceCards']); $response->space = $this->_newSpace; $response->pagelink = $pagelink; $response->beginDate = $beginDate; $response->actionClass = $request->actionclass; $response->endDate = $endDate; }/*}}}*/