HuiFuSZOnlineController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <?php
  2. namespace App\Http\Controllers\HuiFu;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\EnrollOnline;
  5. use App\Models\HuiFu\QJBankInfo;
  6. use App\Models\HuiFu\QJEnrollSZOnline;
  7. use App\Models\HuiFu\QJUser;
  8. use App\Models\Smslog;
  9. use App\Models\User;
  10. use BsPayClassify\V2TradeOnlinepaymentQuery;
  11. use BsPayClassify\V2TradeOnlinepaymentQuickpayApply;
  12. use BsPayClassify\V2TradeOnlinepaymentQuickpayConfirm;
  13. use BsPaySdk\core\BsPayTools;
  14. use Carbon\Carbon;
  15. use EasyWeChatComposer\EasyWeChat;
  16. use Illuminate\Http\Request;
  17. use Illuminate\Support\Facades\Auth;
  18. use Illuminate\Support\Facades\Cache;
  19. use Illuminate\Support\Facades\Crypt;
  20. use Illuminate\Support\Facades\Log;
  21. use Overtrue\EasySms\EasySms;
  22. use Overtrue\EasySms\PhoneNumber;
  23. class HuiFuSZOnlineController extends Controller{
  24. //检查是否开通
  25. public function check(){
  26. $id=Auth::user()->id;
  27. $re=QJUser::where('user_id',$id)->first();
  28. if (!$re){
  29. if (Carbon::now()>'2023-12-22 23:59:00'){
  30. return $this->error(50014,'','报名已结束');
  31. }
  32. return $this->error(50014,'','未开通快捷支付');
  33. }
  34. $res=QJBankInfo::where('qj_user_id',$id)->where('trans_status','S')->first();
  35. if (!$res){
  36. if (Carbon::now()>'2023-12-22 23:59:00'){
  37. return $this->error(50014,'','实战营报名已结束');
  38. }
  39. return $this->error(50014,'','未开通快捷支付');
  40. }
  41. if (!$res->token_no){
  42. if (Carbon::now()>'2023-12-22 23:59:00'){
  43. return $this->error(50014,'','实战营报名已结束');
  44. }
  45. return $this->error(50014,'','未开通快捷支付');
  46. }
  47. $status=QJEnrollSZOnline::where('is_pay',1)->where('user_id',$id)->first();
  48. if (!$status){
  49. return $this->success(['id'=>$res->id]);
  50. }
  51. return $this->success(['status'=>1,'info'=>'报名成功','time'=>Carbon::parse($status->created_at)->toDateTimeString(),
  52. 'pay_number'=>$status->pay_number,'money'=>199]);
  53. }
  54. public function QuickBankPay(Request $request){
  55. $time='2023-12-20 08:00:00';
  56. if (Carbon::now()<$time){
  57. return $this->error(500214,'','暂未开始报名!');
  58. }
  59. if (Carbon::now()>'2023-12-22 23:59:00'){
  60. return $this->error(50014,'','实战营报名已结束');
  61. }
  62. $ReqSeqId=date("YmdHis") . mt_rand();
  63. $ids=Auth::user()->id;
  64. $online=EnrollOnline::where('user_id',$ids)->first();
  65. if (!$online){
  66. $online=new EnrollOnline();
  67. $online->user_id=$ids;
  68. $online->is_pay=0;
  69. $online->season=64;
  70. $online->type=0;
  71. $online->enroll_no=$ReqSeqId;
  72. $online->cost=199;
  73. $online->save();
  74. }
  75. if ($online->is_pay==1){
  76. return $this->error(500214,'','已报名,请回到首页刷新');
  77. }
  78. $publicKey=\config('HFConfig.rsa_huifu_public_key');
  79. $orderID=date('YmdHis').$ids.random_int(100,999);
  80. $huifuID=\config('HFConfig.huifu_id');
  81. $QJEnroll=new QJEnrollSZOnline();
  82. $QJEnroll->user_id=$ids;
  83. $QJEnroll->pay_number=$orderID;
  84. $QJEnroll->season=64;
  85. $QJEnroll->req_seq_id=$ReqSeqId;
  86. $QJEnroll->save();
  87. $id=$request->input('id');
  88. $QJBank=QJBankInfo::find($id);
  89. $data=[
  90. 'trans_amt'=>"199.00",
  91. 'req_seq_id'=>$ReqSeqId,
  92. 'card_bind_id'=>$QJBank->token_no,
  93. 'notify_url'=>'http://ppp.woaidakele.cn/api/text_notify_url',
  94. 'user_huifu_id'=>$QJBank->cust_id,
  95. 'good_desc'=>'第64届创业实战营线上报名费用',
  96. 'huifu_id'=>$huifuID,
  97. ];
  98. $re=new V2TradeOnlinepaymentQuickpayApply();
  99. $result=$re->index($data);
  100. if (!$result || $result->isError()) { //失败处理
  101. return $this->error('400',$result -> getErrorInfo());
  102. }
  103. $result=$this->object_to_array($result);
  104. $rspDatas = $result['rspDatas'];
  105. $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey);
  106. if($res){
  107. if(isset($rspDatas['data']['resp_code']) && $rspDatas['data']['resp_code']=='00000000'){
  108. return $this->success(['id'=>$QJEnroll->id]);
  109. }
  110. if(isset($rspDatas['data']['resp_code']) && $rspDatas['data']['resp_code']=='00000100'){
  111. return $this->success(['id'=>$QJEnroll->id]);
  112. }
  113. }
  114. $QJEnroll->message.=$rspDatas['data']['resp_desc'];
  115. $QJEnroll->save();
  116. return $this->error(500214,'',$rspDatas['data']['resp_desc']);
  117. }
  118. //上传验证码
  119. public function QuickBankSms(Request $request){
  120. $id=$request->input('id');
  121. $QJEnroll=QJEnrollSZOnline::find($id);
  122. if (!$QJEnroll){
  123. return $this->error(500214,'','请重新获取验证码');
  124. }
  125. $huifuID=\config('HFConfig.huifu_id');
  126. $publicKey=\config('HFConfig.rsa_huifu_public_key');
  127. $sms_code=$request->input('sms_code');
  128. $data=[
  129. 'huifu_id'=>$huifuID,
  130. 'req_seq_id'=>$QJEnroll->req_seq_id,
  131. 'sms_code'=>$sms_code,
  132. 'goods_desc'=>'报名费用',
  133. 'notify_url'=>'http://ppp.woaidakele.cn/api/text_notify_url',
  134. ];
  135. $re=new V2TradeOnlinepaymentQuickpayConfirm();
  136. $result=$re->index($data);
  137. if (!$result || $result->isError()) { //失败处理
  138. return $this->error('400',$result -> getErrorInfo());
  139. }
  140. $result=$this->object_to_array($result);
  141. $rspDatas = $result['rspDatas'];
  142. $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey);
  143. if($res){
  144. if(isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='P'){
  145. return $this->success(['status'=>0]);
  146. }
  147. if (isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='S'){
  148. $QJEnroll->is_pay=1;
  149. $QJEnroll->save();
  150. EnrollOnline::where('user_id',$QJEnroll->user_id)->update(['is_pay'=>1]);
  151. return $this->success(['status'=>1]);
  152. }
  153. }
  154. $QJEnroll->message.=$rspDatas['data']['resp_desc'];
  155. $QJEnroll->save();
  156. return $this->error(50214,'',$rspDatas['data']['resp_desc']);
  157. }
  158. public function CheckStatus(Request $request){
  159. $id=$request->input('id');
  160. $QJEnroll=QJEnrollSZOnline::find($id);
  161. $huifuID=\config('HFConfig.huifu_id');
  162. $data=[
  163. 'huifu_id'=>$huifuID,
  164. 'org_req_seq_id'=>$QJEnroll->req_seq_id,
  165. 'org_hf_req_id'=>'',
  166. 'org_req_date'=>Carbon::parse($QJEnroll->created_at)->format('Ymd')
  167. ];
  168. $publicKey=\config('HFConfig.rsa_huifu_public_key');
  169. $re=new V2TradeOnlinepaymentQuery();
  170. $result=$re->index($data);
  171. if (!$result || $result->isError()) { //失败处理
  172. return $this->error('400',$result -> getErrorInfo());
  173. }
  174. $result=$this->object_to_array($result);
  175. $rspDatas = $result['rspDatas'];
  176. $res = BsPayTools::verifySign_sort($rspDatas['sign'],$rspDatas['data'],$publicKey);
  177. if($res){
  178. if(isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='P'){
  179. return $this->success(['status'=>0]);
  180. }
  181. if (isset($rspDatas['data']['trans_stat']) && $rspDatas['data']['trans_stat']=='S'){
  182. $QJEnroll->is_pay=1;
  183. $QJEnroll->number=$rspDatas['data']['org_hf_seq_id'];
  184. $QJEnroll->save();
  185. EnrollOnline::where('user_id',$QJEnroll->user_id)->update(['is_pay'=>1]);
  186. try {
  187. $user=User::find($QJEnroll->user_id);
  188. $mobile=Crypt::decryptString($user->uuid);
  189. $this->send_code($mobile,64,'线上实战营','199');
  190. }catch (\Exception $exception){
  191. Log::error('发送短信失败!'.$exception->getMessage());
  192. }
  193. return $this->success(['status'=>1]);
  194. }
  195. }
  196. if (isset($rspDatas['data']['bank_desc'])){
  197. $QJEnroll->message=$rspDatas['data']['bank_desc'];
  198. $QJEnroll->save();
  199. return $this->error(400,'',$rspDatas['data']['bank_desc']);
  200. }
  201. $QJEnroll->message.=$rspDatas['data']['resp_desc'];
  202. $QJEnroll->save();
  203. return $this->error(400,'',$rspDatas['data']['resp_desc']);
  204. }
  205. public function send_code($number,$season,$str,$cost)
  206. {
  207. $sms = new EasySms(config('easysms'));
  208. try {
  209. $result = $sms->send($number, [
  210. 'content' => "【大卫博士】你已成功报名“第{$season}届大卫博士{$str}”,支付金额为{$cost}元。请及时关注群内通知,准时参加。"
  211. ]);
  212. } catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
  213. $message = $exception->getException('qcloud')->getMessage();
  214. Log::error('{短信发送错误------------}' . $message . '{---------------短信发送错误}');
  215. }
  216. }
  217. public function GetEnrollInfo(){
  218. $enroll_start_time='2023-12-20 08:00:00';
  219. $enroll_end_time='2023-12-22 23:59:00';
  220. $live_start_time='2023-12-27 08:00:00';
  221. $live_end_time='2023-12-28 18:00:00';
  222. $re=EnrollOnline::where('user_id',Auth::user()->id)->first();
  223. $path='';
  224. if ($re){
  225. $pay_status=0;
  226. $status=1;
  227. if ($re->is_pay==1){
  228. $pay_status=1;
  229. $path=$re->message;
  230. }
  231. }else{
  232. $status=0;
  233. $pay_status=0;
  234. }
  235. $season=64;
  236. $limit_num=40000;
  237. $cost=599;
  238. $data=['start_time'=>$live_start_time,
  239. 'end_time'=>$live_end_time,
  240. 'enroll_start_time'=>$enroll_start_time,
  241. 'enroll_end_time'=>$enroll_end_time,
  242. 'season'=>$season,'cost'=>$cost,
  243. 'limit_num'=>$limit_num,'num'=>0,
  244. 'status'=>$status,'pay_status'=>$pay_status,'path'=>$path
  245. ];
  246. return $this->success($data);
  247. }
  248. public function GetAddress(){
  249. try {
  250. $id=Auth::user()->id;
  251. $address=EnrollOnline::where('user_id',$id)->where('is_pay',1)->first();
  252. if ($address){
  253. if ($address->address_info){
  254. $re=Crypt::decryptString($address->address_info);
  255. $arr=json_decode($re,true);
  256. $arr['mobile']=mb_substr($arr['mobile'],0,3).'****'.mb_substr($arr['mobile'],'-4');
  257. // $arr['address']='*******';
  258. return $this->success($arr);
  259. }
  260. }else{
  261. return $this->error(500214,'','当前用户未报名');
  262. }
  263. $data=[
  264. 'username'=>'',
  265. 'mobile'=>'',
  266. 'province'=>'',
  267. 'city'=>'',
  268. 'area'=>'',
  269. 'address'=>'',
  270. ];
  271. return $this->success($data);
  272. }catch (\Exception $exception){
  273. $data=[
  274. 'username'=>'',
  275. 'mobile'=>'',
  276. 'province'=>'',
  277. 'city'=>'',
  278. 'area'=>'',
  279. 'address'=>'',
  280. ];
  281. return $this->success($data);
  282. }
  283. }
  284. public function UpdateAddAddress(Request $request){
  285. $address=EnrollOnline::where('user_id',Auth::user()->id)->first();
  286. if (!$address){
  287. return $this->error(50021,'','当前用户没有报名!');
  288. }
  289. $data=[
  290. 'username'=>$request->input('username'),
  291. 'mobile'=>$request->input('mobile'),
  292. 'province'=>$request->input('province'),
  293. 'city'=>$request->input('city'),
  294. 'area'=>$request->input('area'),
  295. 'address'=>$request->input('address'),
  296. ];
  297. $str=Crypt::encryptString(json_encode($data));
  298. $address->address_info=$str;
  299. $address->save();
  300. return $this->success($data);
  301. }
  302. }