123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- <?php
- namespace App\Http\Controllers\HuiFu;
- use App\Http\Controllers\Controller;
- use App\Models\EnrollOnline;
- use App\Models\HuiFu\QJBankInfo;
- use App\Models\HuiFu\QJEnrollSZOnline;
- use App\Models\HuiFu\QJUser;
- use App\Models\Smslog;
- use App\Models\User;
- use BsPayClassify\V2TradeOnlinepaymentQuery;
- use BsPayClassify\V2TradeOnlinepaymentQuickpayApply;
- use BsPayClassify\V2TradeOnlinepaymentQuickpayConfirm;
- use BsPaySdk\core\BsPayTools;
- use Carbon\Carbon;
- use EasyWeChatComposer\EasyWeChat;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\Crypt;
- use Illuminate\Support\Facades\Log;
- use Overtrue\EasySms\EasySms;
- use Overtrue\EasySms\PhoneNumber;
- class HuiFuSZOnlineController extends Controller{
- //检查是否开通
- public function check(){
- $id=Auth::user()->id;
- $re=QJUser::where('user_id',$id)->first();
- if (!$re){
- if (Carbon::now()>'2023-12-22 23:59:00'){
- return $this->error(50014,'','报名已结束');
- }
- return $this->error(50014,'','未开通快捷支付');
- }
- $res=QJBankInfo::where('qj_user_id',$id)->where('trans_status','S')->first();
- if (!$res){
- if (Carbon::now()>'2023-12-22 23:59:00'){
- return $this->error(50014,'','实战营报名已结束');
- }
- return $this->error(50014,'','未开通快捷支付');
- }
- if (!$res->token_no){
- if (Carbon::now()>'2023-12-22 23:59:00'){
- return $this->error(50014,'','实战营报名已结束');
- }
- return $this->error(50014,'','未开通快捷支付');
- }
- $status=QJEnrollSZOnline::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'=>199]);
- }
- public function QuickBankPay(Request $request){
- $time='2023-12-20 08:00:00';
- if (Carbon::now()<$time){
- return $this->error(500214,'','暂未开始报名!');
- }
- if (Carbon::now()>'2023-12-22 23:59:00'){
- return $this->error(50014,'','实战营报名已结束');
- }
- $ReqSeqId=date("YmdHis") . mt_rand();
- $ids=Auth::user()->id;
- $online=EnrollOnline::where('user_id',$ids)->first();
- if (!$online){
- $online=new EnrollOnline();
- $online->user_id=$ids;
- $online->is_pay=0;
- $online->season=64;
- $online->type=0;
- $online->enroll_no=$ReqSeqId;
- $online->cost=199;
- $online->save();
- }
- if ($online->is_pay==1){
- 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 QJEnrollSZOnline();
- $QJEnroll->user_id=$ids;
- $QJEnroll->pay_number=$orderID;
- $QJEnroll->season=64;
- $QJEnroll->req_seq_id=$ReqSeqId;
- $QJEnroll->save();
- $id=$request->input('id');
- $QJBank=QJBankInfo::find($id);
- $data=[
- 'trans_amt'=>"199.00",
- 'req_seq_id'=>$ReqSeqId,
- 'card_bind_id'=>$QJBank->token_no,
- 'notify_url'=>'http://ppp.woaidakele.cn/api/text_notify_url',
- 'user_huifu_id'=>$QJBank->cust_id,
- 'good_desc'=>'第64届创业实战营线上报名费用',
- '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){
- 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]);
- }
- }
- $QJEnroll->message.=$rspDatas['data']['resp_desc'];
- $QJEnroll->save();
- return $this->error(500214,'',$rspDatas['data']['resp_desc']);
- }
- //上传验证码
- public function QuickBankSms(Request $request){
- $id=$request->input('id');
- $QJEnroll=QJEnrollSZOnline::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://ppp.woaidakele.cn/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();
- EnrollOnline::where('user_id',$QJEnroll->user_id)->update(['is_pay'=>1]);
- return $this->success(['status'=>1]);
- }
- }
- $QJEnroll->message.=$rspDatas['data']['resp_desc'];
- $QJEnroll->save();
- return $this->error(50214,'',$rspDatas['data']['resp_desc']);
- }
- public function CheckStatus(Request $request){
- $id=$request->input('id');
- $QJEnroll=QJEnrollSZOnline::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->number=$rspDatas['data']['org_hf_seq_id'];
- $QJEnroll->save();
- EnrollOnline::where('user_id',$QJEnroll->user_id)->update(['is_pay'=>1]);
- try {
- $user=User::find($QJEnroll->user_id);
- $mobile=Crypt::decryptString($user->uuid);
- $this->send_code($mobile,64,'线上实战营','199');
- }catch (\Exception $exception){
- Log::error('发送短信失败!'.$exception->getMessage());
- }
- return $this->success(['status'=>1]);
- }
- }
- if (isset($rspDatas['data']['bank_desc'])){
- $QJEnroll->message=$rspDatas['data']['bank_desc'];
- $QJEnroll->save();
- return $this->error(400,'',$rspDatas['data']['bank_desc']);
- }
- $QJEnroll->message.=$rspDatas['data']['resp_desc'];
- $QJEnroll->save();
- return $this->error(400,'',$rspDatas['data']['resp_desc']);
- }
- public function send_code($number,$season,$str,$cost)
- {
- $sms = new EasySms(config('easysms'));
- try {
- $result = $sms->send($number, [
- 'content' => "【大卫博士】你已成功报名“第{$season}届大卫博士{$str}”,支付金额为{$cost}元。请及时关注群内通知,准时参加。"
- ]);
- } catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
- $message = $exception->getException('qcloud')->getMessage();
- Log::error('{短信发送错误------------}' . $message . '{---------------短信发送错误}');
- }
- }
- public function GetEnrollInfo(){
- $enroll_start_time='2023-12-20 08:00:00';
- $enroll_end_time='2023-12-22 23:59:00';
- $live_start_time='2023-12-27 08:00:00';
- $live_end_time='2023-12-28 18:00:00';
- $re=EnrollOnline::where('user_id',Auth::user()->id)->first();
- $path='';
- if ($re){
- $pay_status=0;
- $status=1;
- if ($re->is_pay==1){
- $pay_status=1;
- $path=$re->message;
- }
- }else{
- $status=0;
- $pay_status=0;
- }
- $season=64;
- $limit_num=40000;
- $cost=599;
- $data=['start_time'=>$live_start_time,
- 'end_time'=>$live_end_time,
- 'enroll_start_time'=>$enroll_start_time,
- 'enroll_end_time'=>$enroll_end_time,
- 'season'=>$season,'cost'=>$cost,
- 'limit_num'=>$limit_num,'num'=>0,
- 'status'=>$status,'pay_status'=>$pay_status,'path'=>$path
- ];
- return $this->success($data);
- }
- public function GetAddress(){
- try {
- $id=Auth::user()->id;
- $address=EnrollOnline::where('user_id',$id)->where('is_pay',1)->first();
- if ($address){
- if ($address->address_info){
- $re=Crypt::decryptString($address->address_info);
- $arr=json_decode($re,true);
- $arr['mobile']=mb_substr($arr['mobile'],0,3).'****'.mb_substr($arr['mobile'],'-4');
- // $arr['address']='*******';
- return $this->success($arr);
- }
- }else{
- return $this->error(500214,'','当前用户未报名');
- }
- $data=[
- 'username'=>'',
- 'mobile'=>'',
- 'province'=>'',
- 'city'=>'',
- 'area'=>'',
- 'address'=>'',
- ];
- return $this->success($data);
- }catch (\Exception $exception){
- $data=[
- 'username'=>'',
- 'mobile'=>'',
- 'province'=>'',
- 'city'=>'',
- 'area'=>'',
- 'address'=>'',
- ];
- return $this->success($data);
- }
- }
- public function UpdateAddAddress(Request $request){
- $address=EnrollOnline::where('user_id',Auth::user()->id)->first();
- if (!$address){
- return $this->error(50021,'','当前用户没有报名!');
- }
- $data=[
- 'username'=>$request->input('username'),
- 'mobile'=>$request->input('mobile'),
- 'province'=>$request->input('province'),
- 'city'=>$request->input('city'),
- 'area'=>$request->input('area'),
- 'address'=>$request->input('address'),
- ];
- $str=Crypt::encryptString(json_encode($data));
- $address->address_info=$str;
- $address->save();
- return $this->success($data);
- }
- }
|