where('is_show',1)->order('weigh desc')->autopage()->select(); $list = list_domain_image($list,['image']); $list = $this->list_lang($list,['name','content']); $this->success(1,$list); } public function info(){ $id = input('id'); $info = Db::name('trylesson')->where('id',$id)->find(); $info = info_domain_image($info,['image']); $info = $this->info_lang($info,['name','content']); $info['map_image'] = localpath_to_netpath(config('site.index_bottom_image')); $info['public_store_address'] = config('site.public_store_address'); $trylesson_cancel_text = config('site.trylesson_cancel_text'); if($this->lang == 'en'){ $trylesson_cancel_text = config('site.trylesson_cancel_text_en'); } $info['trylesson_cancel_text'] = $trylesson_cancel_text; $this->success(1,$info); } public function apply(){ $id = input('id',0); $info = Db::name('trylesson')->where('id',$id)->where('is_show',1)->find(); if(empty($info)){ $this->error('该试课已下架'); } //试课数据 $field = ['firstname','lastname','mobile','email','height','age','weight','address','health','emergency','comefrom','is_first']; $data = request_post_hub($field); $sysdata = [ 'order_no' => createUniqueNo('T',$this->auth->id), 'user_id' => $this->auth->id, 'trylesson_id' => $id, 'order_amount' => $info['price'], 'order_status' => 0, 'createtime' => time(), ]; $data = array_merge($data,$sysdata); //支付订单数据 $pay_order = []; $pay_order['user_id'] = $sysdata['user_id']; $pay_order['out_trade_no'] = $sysdata['order_no']; $pay_order['order_amount'] = $sysdata['order_amount']; $pay_order['createtime'] = $sysdata['createtime']; $pay_order['pay_type'] = 'hitpay'; $pay_order['platform'] = 'app'; $pay_order['order_status'] = 0; $pay_order['table_name'] = 'trylesson_order'; $pay_order['table_id'] = 0; $pay_order['args'] = ''; //拉起支付 $notify_url = config('notify_cdnurl'); $hitpay_return = $this->hitpay_payment($pay_order['out_trade_no'],$pay_order['order_amount'],$notify_url); if($hitpay_return['status'] !== true){ $this->error($hitpay_return['msg']); } //支付请求id $pay_order['payment_request_id'] = $hitpay_return['id']; //入库试课订单 Db::startTrans(); $id = Db::name('trylesson_order')->insertGetId($data); if(!$id){ Db::rollback(); $this->error('预约失败'); } //支付订单下单 $pay_order['table_id'] = $id; $pay_order_id = Db::name('pay_order')->insertGetId($pay_order); if(!$pay_order_id){ Db::rollback(); $this->error('下单失败'); } Db::commit(); $return = [ 'url' => $hitpay_return['url'], 'id' => $hitpay_return['id'], ]; $this->success(1,$return); } //拉起支付 private function hitpay_payment($out_trade_no,$money,$notifyurl) { $return = [ 'status' => false, 'msg' => '', 'url' => '', 'id' => 0, ]; $apiKey = config('hitpay.apikey'); try { $hitPayClient = new \HitPay\Client($apiKey, true); $request = new \HitPay\Request\CreatePayment(); $request->setAmount($money) ->setCurrency('SGD') ->setPaymentMethods(['paynow_online','card']) ->setPurpose('Elin Dance Studio') ->setWebhook($notifyurl) ->setReferenceNumber($out_trade_no); $result = $hitPayClient->createPayment($request); $return['status'] = true; $return['url'] = $result->getUrl(); $return['id'] = $result->getId(); //print_r($result); /*$data = $hitPayClient->getPaymentStatus($result->getId()); dump($data); dump($data->status);*/ /*$data = $hitPayClient->deletePaymentRequest($data->getId()); print_r($data);*/ } catch (\Exception $e) { $return['msg'] = $e->getMessage(); } return $return; } }