error(50016,'','争霸赛报名尚未开始!'); // } $id=Auth::user()->id; $re=QJUser::where('user_id',$id)->first(); $user=User::find($id); if ($user->deleted_at){ return $this->error(50014,'','账号已删除'); } if (!$re){ if (Carbon::now()>'2024-11-16 00:00:00'){ return $this->error(50015,'','争霸赛报名已结束'); } return $this->error(50014,'','未开通快捷支付'); } $res=QJBankInfo::where('qj_user_id',$id)->where('trans_status','S')->first(); if (!$res){ if (Carbon::now()>'2024-11-16 00:00:00'){ return $this->error(50015,'','争霸赛报名已结束'); } return $this->error(50014,'','未开通快捷支付'); } if (!$res->token_no){ if (Carbon::now()>'2024-11-16 00:00:00'){ return $this->error(50015,'','争霸赛报名已结束'); } return $this->error(50014,'','未开通快捷支付'); } $status=QJEnroll::where('is_pay',1)->where('user_id',$id)->first(); if (!$status){ return $this->success(['id'=>$res->id]); } return $this->success(['status'=>1,'info'=>'报名成功','time'=>Carbon::parse($status->created_at)->toDateTimeString(), 'pay_number'=>$status->pay_number,'money'=>9.9]); } //申请快捷支付的绑卡 public function QuickBankApply(Request $request){ // if (Carbon::now()>'2023-12-02 16:00:00'){ // return $this->error(50014,'','争霸赛报名已结束'); // } $input=$request->all(); $id=Auth::user()->id; $huifuID=\config('HFConfig.huifu_id'); $publicKey=\config('HFConfig.rsa_huifu_public_key'); $CardID=BsPayTools::encrypt_with_rsa_pubkey($input['CardID'],$publicKey);//银行卡号 $CardName=BsPayTools::encrypt_with_rsa_pubkey($input['CardName'],$publicKey);//姓名 $CertID=BsPayTools::encrypt_with_rsa_pubkey($input['CertID'],$publicKey);//身份证号 $mobile=BsPayTools::encrypt_with_rsa_pubkey($input['mobile'],$publicKey); $startDate=Carbon::parse($input['startDate'])->format('Ymd'); $endDate=Carbon::parse($input['endDate'])->format('Ymd'); $OutCustId='6668'.str_pad($id, 8, '0', STR_PAD_LEFT); $ReqSeqId=date("YmdHis") . mt_rand(); $orderID=date('YmdHis').$id.random_int(100,999); $type=$input['type']; $data=[ 'ReqSeqId'=>$ReqSeqId, 'orderID'=>$orderID, 'startDate'=>$startDate, 'endDate'=>$endDate, 'huifuID'=>$huifuID, 'CardID'=>$CardID, 'CardName'=>$CardName, 'CertID'=>$CertID, 'mobile'=>$mobile, 'type'=>$type, 'OutCustId'=>$OutCustId, ]; $QJUser=QJUser::where('user_id',$id)->first(); if (!$QJUser){ $QJUser=new QJUser(); $QJUser->out_cust_id=$OutCustId; }else{ // $OutCustId='6668'.str_pad($id, 8, '0', STR_PAD_LEFT).random_int(11111,99999); // $QJUser->out_cust_id=$OutCustId; $data['OutCustId']=$QJUser->out_cust_id; // $data['OutCustId']=$QJUser->out_cust_id; // Log::error($data); } $QJUser->user_id=$id; $QJUser->cert_validity_type=$input['type']; $QJUser->cert_begin_date=$input['startDate']; $QJUser->cert_end_date=$input['endDate']; $QJUser->cert_id=Crypt::encryptString($input['CertID']); $QJUser->save(); $QJBank=new QJBankInfo(); $QJBank->req_seq_id=$ReqSeqId; $QJBank->order_id=$orderID; $QJBank->order_date=date('Y-m-d'); $QJBank->card_id=Crypt::encryptString($input['CardID']); $QJBank->card_mp=Crypt::encryptString($mobile); $QJBank->qj_user_id=$id; $bankInfo=$this->Bin($CardID); if (isset($bankInfo['err'])){ return $this->error(500214,'',$bankInfo['err']); } $mystring = $bankInfo['bank_name']; $findme = '招商银行'; $pos = strpos($mystring, $findme); $protocol_no=null; if (is_numeric($pos)){ $protocol_no='34463343'; $data['protocol_no']=$protocol_no; } $QJBank->card_bin=$bankInfo['card_bin']; $QJBank->bank_name=$bankInfo['bank_name']; $QJBank->issuer_id=$bankInfo['issuer_id']; $QJBank->dc_type=$bankInfo['card_type']; $QJBank->protocol_no=$protocol_no; $re=new QuickbuckleApply(); $result=$re->apply($data); if (!$result || $result->isError()) { //失败处理 return $this->error('400',$result -> getErrorInfo()); } $result=$this->object_to_array($result); $rspDatas = $result['rspDatas']; $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey); if($res){ if(isset($rspDatas['data']['trans_status']) ){ if ($rspDatas['data']['trans_status']=='S'){ $QJBank->trans_id=$rspDatas['data']['trans_id']; $QJBank->save(); //发起快捷绑卡成功,点击发送短信时触发 return $this->success(['order_id'=>$rspDatas['data']['order_id'],'trans_id'=>$rspDatas['data']['trans_id']]); } } } return $this->error(500214,'',$rspDatas['data']['resp_desc']); } //银行卡信息 public function Bin($data){ $ReqId=date("YmdHis") . mt_rand(); $data=[ 'req_seq_id'=>$ReqId, 'bank_card_no_crypt'=>$data ]; $re=new V2TradeCardbinQuery(); $result=$re->index($data); if (!$result || $result->isError()) { //失败处理 return ['err'=>$result -> getErrorInfo()]; } $res=$this->object_to_array($result); if (!isset($res['rspDatas']['data']['bank_name'])){ return ['err'=>$res['rspDatas']['data']['resp_desc']]; } try { $data = str_replace("\n", " ", trim($res['rspDatas']['data']["bank_name"])); $Datas=$res['rspDatas']['data']; $arr=explode(' ',$data); }catch (\Exception $exception){ $arr[]=$res['rspDatas']['data']["bank_name"]; } $arrs=[ 'issuer_id'=>$Datas['issuer_id'], 'bank_name'=>$arr[0], 'bank_code'=>$Datas['bank_code'], 'card_bin'=>$Datas['card_bin'], 'card_type'=>$Datas['card_type'], ]; return $arrs; } //申请绑卡确认 public function QuickBankConfirm(Request $request){ $input=$request->all(); $id=Auth::user()->id; $huifuID=\config('HFConfig.huifu_id'); $publicKey=\config('HFConfig.rsa_huifu_public_key'); $CardID=BsPayTools::encrypt_with_rsa_pubkey($input['CardID'],$publicKey);//银行卡号 $CardName=BsPayTools::encrypt_with_rsa_pubkey($input['CardName'],$publicKey);//姓名 $CertID=BsPayTools::encrypt_with_rsa_pubkey($input['CertID'],$publicKey);//身份证号 $mobile=BsPayTools::encrypt_with_rsa_pubkey($input['mobile'],$publicKey); $OutCustId='6668'.str_pad($id, 8, '0', STR_PAD_LEFT); $ReqSeqId=date("YmdHis") . mt_rand(); $sms_code=$input['sms_code']; $order_id=$input['order_id']; $trans_id=$input['trans_id']; $data=[ 'ReqId'=>$ReqSeqId, 'orderID'=>$order_id,//和申请接口的order_id一致 'huifuID'=>$huifuID, 'CardID'=>$CardID, 'CardName'=>$CardName, 'CertID'=>$CertID, 'trans_id'=>$trans_id,//和申请接口的trans_id一致 'mobile'=>$mobile, 'OutId'=>$OutCustId, 'sms_code'=>$sms_code, ]; $re=new QuickbuckleConfirm(); $result=$re->confirm($data); if (!$result || $result->isError()) { //失败处理 return $this->error('400',$result -> getErrorInfo()); } $result=$this->object_to_array($result); $rspDatas = $result['rspDatas']; $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey); if($res){ if(isset($rspDatas['data']['trans_status']) ){ if ($rspDatas['data']['trans_status']=='S'){ $QJBank=QJBankInfo::where('order_id',$order_id)->first(); if ($QJBank){ $QJBank->cust_id=$rspDatas['data']['cust_id']; $QJBank->token_no=$rspDatas['data']['token_no']; $QJBank->trans_status=$rspDatas['data']['trans_status']; $QJBank->save(); return $this->success(['id'=>$QJBank->id]); } } } $QJBank=QJBankInfo::where('order_id',$order_id)->first(); if ($QJBank){ $QJBank->err_info=json_encode($rspDatas['data'],true); $QJBank->save(); } return $this->error(500214,'',$rspDatas['data']['resp_desc']); } } //发起支付 public function QuickBankPay(Request $request){ $time='2024-11-13 10:00:00'; if (Carbon::now()<$time){ return $this->error(500214,'','暂未开始报名!'); } if (Carbon::now()>'2024-11-16 00:00:00'){ return $this->error(50014,'','争霸赛报名已结束'); } $ReqSeqId=date("YmdHis") . mt_rand(); $ids=Auth::user()->id; $QJEnroll=QJEnroll::where('user_id',$ids)->where('is_pay',1)->first(); if ($QJEnroll){ return $this->error(500214,'','已报名,请回到首页刷新'); } $publicKey=\config('HFConfig.rsa_huifu_public_key'); $orderID=date('YmdHis').$ids.random_int(100,999); $huifuID=\config('HFConfig.huifu_id'); $QJEnroll=new QJEnroll(); $QJEnroll->user_id=$ids; $QJEnroll->pay_number=$orderID; $QJEnroll->season=48; $QJEnroll->req_seq_id=$ReqSeqId; $QJEnroll->save(); $id=$request->input('id'); $QJBank=QJBankInfo::find($id); $data=[ 'trans_amt'=>"9.90", 'req_seq_id'=>$ReqSeqId, 'card_bind_id'=>$QJBank->token_no, 'notify_url'=>'http://api.app.cliu.cc/api/text_notify_url', 'user_huifu_id'=>$QJBank->cust_id, 'good_desc'=>'第48届争霸赛报名费用', 'huifu_id'=>$huifuID, ]; $re=new V2TradeOnlinepaymentQuickpayApply(); $result=$re->index($data); if (!$result || $result->isError()) { //失败处理 return $this->error('400',$result -> getErrorInfo()); } $result=$this->object_to_array($result); $rspDatas = $result['rspDatas']; $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey); if($res){ try { $QJEnroll->messsage=$rspDatas['data']['sub_resp_desc']; $QJEnroll->save(); }catch (\Exception $exception){ } if(isset($rspDatas['data']['resp_code']) && $rspDatas['data']['resp_code']=='00000000'){ return $this->success(['id'=>$QJEnroll->id]); } if(isset($rspDatas['data']['resp_code']) && $rspDatas['data']['resp_code']=='00000100'){ return $this->success(['id'=>$QJEnroll->id]); } } return $this->error(500214,'',$rspDatas['data']['resp_desc']); } //查询发起支付是否成功 //上传验证码 public function QuickBankSms(Request $request){ $id=$request->input('id'); $QJEnroll=QJEnroll::find($id); if (!$QJEnroll){ return $this->error(500214,'','请重新获取验证码'); } $huifuID=\config('HFConfig.huifu_id'); $publicKey=\config('HFConfig.rsa_huifu_public_key'); $sms_code=$request->input('sms_code'); $data=[ 'huifu_id'=>$huifuID, 'req_seq_id'=>$QJEnroll->req_seq_id, 'sms_code'=>$sms_code, 'goods_desc'=>'报名费用', 'notify_url'=>'http://api.app.cliu.cc/api/text_notify_url', ]; $re=new V2TradeOnlinepaymentQuickpayConfirm(); $result=$re->index($data); if (!$result || $result->isError()) { //失败处理 return $this->error('400',$result -> getErrorInfo()); } $result=$this->object_to_array($result); $rspDatas = $result['rspDatas']; $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey); if($res){ if(isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='P'){ return $this->success(['status'=>0]); } if (isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='S'){ $QJEnroll->is_pay=1; $QJEnroll->save(); return $this->success(['status'=>1]); } } return $this->error(50214,'',$rspDatas['data']['resp_desc']); } public function CheckStatus(Request $request){ $id=$request->input('id'); $QJEnroll=QJEnroll::find($id); $huifuID=\config('HFConfig.huifu_id'); $data=[ 'huifu_id'=>$huifuID, 'org_req_seq_id'=>$QJEnroll->req_seq_id, 'org_hf_req_id'=>'', 'org_req_date'=>Carbon::parse($QJEnroll->created_at)->format('Ymd') ]; $publicKey=\config('HFConfig.rsa_huifu_public_key'); $re=new V2TradeOnlinepaymentQuery(); $result=$re->index($data); if (!$result || $result->isError()) { //失败处理 return $this->error('400',$result -> getErrorInfo()); } $result=$this->object_to_array($result); $rspDatas = $result['rspDatas']; $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey); if($res){ if(isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='P'){ return $this->success(['status'=>0]); } if (isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='S'){ $QJEnroll->is_pay=1; $QJEnroll->save(); return $this->success(['status'=>1]); } } if (isset($rspDatas['data']['bank_desc'])){ return $this->error(400,'',$rspDatas['data']['bank_desc']); } return $this->error(400,'',$rspDatas['data']['resp_desc']); } public function UnbindBank(Request $request){ $id=$request->input('id'); $re=QJBankInfo::where('id',$id)->first(); $re->trans_status='P'; $re->is_unbind=1; $re->save(); $arr=QJUser::where('user_id',$re->qj_user_id)->first(); $ReqId=date("YmdHis") . mt_rand(); $OutId=$arr->out_cust_id; $token_no=$re->token_no; $huifuID=\config('HFConfig.huifu_id'); $data=[ 'req_seq_id'=>$ReqId, 'out_cust_id'=>$OutId, 'huifu_id'=>$huifuID, 'token_no'=>$token_no ]; try { $result=new V2QuickbuckleUnbind(); $result=$result->index($data); }catch (\Exception $exception){ } Log::error('解绑成功!'); return $this->success([]); } public function BankInfo(){ $id=Auth::user()->id; $re=QJBankInfo::where('qj_user_id',$id)->where('trans_status','S')->first(); if (!$re){ return $this->success([]); } return $this->success(['id'=>$re->id,'bank_name'=>$re->bank_name,'time'=>$re->created_at->toDateTimeString()]); } }