123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436 |
- <?php
- namespace App\Http\Controllers\HuiFu;
- use App\Models\User;
- use BsPayClassify\QuickbuckleApply;
- use BsPayClassify\QuickbuckleConfirm;
- use BsPayClassify\V2QuickbuckleUnbind;
- use BsPayClassify\V2TradeCardbinQuery;
- use BsPayClassify\V2TradeOnlinepaymentQuery;
- use BsPayClassify\V2TradeOnlinepaymentQuickpayApply;
- use BsPayClassify\V2TradeOnlinepaymentQuickpayConfirm;
- use App\Http\Controllers\Controller;
- use App\Models\HuiFu\QJBankInfo;
- use App\Models\HuiFu\QJEnroll;
- use App\Models\HuiFu\QJUser;
- use BsPaySdk\core\BsPayTools;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Crypt;
- use Illuminate\Support\Facades\Log;
- class HuiFuController extends Controller{
- //检查是否开通
- public function check(){
- // if (Carbon::now()<'2024-11-13 09:00:00'){
- // return $this->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()]);
- }
- }
|