AssignJson(3001,'系统维护!'); $user_id = request()->get('user_id'); $userInfo=DB::name('user')->where('uid|user_name', $user_id)->field('uid,nick_name')->order('uid desc')->find(); if(!isset($userInfo['uid'])){ $this->AssignJson(3001,'充值对象不存在,请确认!'); } $userInfo['nickname']=urldecode($userInfo['nick_name']); $this->AssignJson(200, '请求成功', $userInfo); } public function wxjsapi() { $user_id = request()->post('user_id', 0); if($user_id<>6012){ //exit('升级中'); } $map[] = ['is_delete', '=', 1]; $item = Db::name('can_recharge')->field('crid,money,integral')->where($map)->select(); // $_item=DB::name('goods')->where('id', ">", 0)->order("price asc")->select(); // $item=[]; // foreach($_item as $val){ // $item[$val['price']]=$val['mizuan']; // } if(request()->isPost()){ // $this->AssignJson(3001,'系统维护!'); $pay_type = request()->post('pay_type', 10); //10微信公众号-11支付宝H5 $user_id = request()->post('user_id'); $user_id_has = request()->post('user_id_has'); if($user_id_has>0){ $user_id=$user_id_has; } if(empty($user_id)){ exit('充值对象不存在,请确认!'); $this->AssignJson(3001,'充值对象不存在,请确认!'); } $userInfo=DB::name('user')->where('uid|user_name', $user_id)->field('uid,nick_name,is_real,card_id')->order('uid desc')->find(); if(!isset($userInfo['uid'])){ exit('充值对象不存在,请确认!'); $this->AssignJson(3001,'充值对象不存在,请确认!'); } if($userInfo['is_real'] != 1){ exit('请先实名认证!'); $this->AssignJson(3001,'请先实名认证!'); } $age = getAgeId($userInfo['card_id']); if(!$age){ exit('该身份证号未满18岁!'); $this->AssignJson(3001,'该身份证号未满18岁!'); } $money = request()->post('money'); if($money < 1){ exit('充值金额必须大于1!'); $this->AssignJson(3001,'充值金额必须大于1!'); } if($money != ceil($money)){ exit('充值金额必须为整数!'); $this->AssignJson(3001,'充值金额必须为整数!'); } // $money = (int)$money; $map = []; $map[] = ['money','=',$money]; $map[] = ['is_delete', '=', 1]; $money_info = db::name('can_recharge')->where($map)->find(); // dump($money_info);exit; if(!isset($money_info)){ $money = (int)$money; $money_info['integral'] = $money * 10; // exit('充值金额不存在,请确认!'); // $this->AssignJson(3002,'充值金额不存在,请确认!'); } // if($pay_type == 10){ // exit('暂未开放!'); // $this->AssignJson(3003, '暂未开放!'); } $pre='wx'; if($pay_type==11){ $pre='alipay'; } $data = []; $data['order_sn'] = $pre.$user_id.date("YmdHis") . rand(1000, 9999); $data['money'] = $money; $data['integral'] = $money_info['integral']; $data['pay_type'] = 6; $data['uid'] = $user_id; $data['pay_status'] = 1; $data['pay_time'] = 0; $data['remarke'] = ''; $data['add_time'] = time(); $data['update_time'] = time(); $status = Db::name('user_recharge')->insertGetId($data); // $data = []; // if ($status) { // if ($pay_type == 1) { // $data = $this->alipayHand($order_sn, $pay_money); // } else { // $data = $this->wxpayHand($order_sn, $pay_money); // } // } // $mizuan= $money_info['integral']; // /*$money=0.01; // $mizuan=1;*/ // $arr['order_no'] = // $arr['user_id'] = $user_id; // $arr['price'] = $money; // $arr['mizuan'] = $mizuan; // $arr['pay_type'] = $pay_type; // $arr['remark'] = ''; // $arr['addtime'] = time(); // $res = DB::name('order')->insertGetId($arr); if ($status) { if($pay_type==11){ header('location:/api/Payapp/alipayh5?user_id='.$user_id.'&id='.$status); exit; } header('location:/api/Payapp/jsapi?user_id='.$user_id.'&id='.$status); exit; } exit('请求失败!'); $this->AssignJson(3003, '请求失败!'); } $this -> assign('item', $item); return $this -> fetch(); } public function alipayh5(){ $id = request()->get('id'); $user_id = request()->get('user_id'); $order=DB::name('user_recharge')->where("uid", $user_id)->where("rid", $id)->find(); if(!isset($order['rid'])){ exit("传参异常"); } $order_sn=$order['order_sn']; $money=$order['money']; /*$order_sn=time(); $money=0.01;*/ model('UserRecharge')->payh5alipay($order_sn, $money); } public function jsapi(){ $id = request()->get('id'); $user_id = request()->get('user_id'); $order=DB::name('user_recharge')->where("uid", $user_id)->where("rid", $id)->find(); if(!isset($order['rid'])){ exit("传参异常"); } $order_sn=$order['order_sn']; $money=$order['money']; $notify_url='http://'.$_SERVER['HTTP_HOST']."/api/Notifyapp/wxnotify";// /api/wxnotify /api/pay_notify/wx_pay_notify $title='订单支付'; try{ $tools = new JsApiPay(); $openId = $tools->GetOpenid(); /* print_r($openId); exit;*/ //②、统一下单 $input = new WxPayUnifiedOrder(); $input->SetBody($title); $input->SetAttach($title); $input->SetOut_trade_no($order_sn); $input->SetTotal_fee($money*100); $input->SetTime_start(date("YmdHis")); //$input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag($title); $input->SetNotify_url($notify_url); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $config = new WxPayConfig(); $order = WxPayApi::unifiedOrder($config, $input); //echo '统一下单支付单信息
'; //$this->printf_info($order); /*echo '
';
			print_r($order);*/
		
			$PayConf['jsApiParameters'] = $tools->GetJsApiParameters($order);
		
			//获取共享收货地址js函数参数
			$PayConf['editAddress'] = $tools->GetEditAddressParameters();

			$this -> assign('PayConf', $PayConf);
    	    
    		return $this -> fetch();
		} catch(Exception $e) {
			echo $e->getMessage();
		}
		

	}
    
    protected function paywxapp($order_sn, $money, $notify_url='', $title='订单支付'){
    	//②、统一下单
    	$input = new WxPayUnifiedOrder();
    	$input->SetBody($title);
    	$input->SetOut_trade_no($order_sn);
    	$input->SetTotal_fee($money*100);
    	$input->SetNotify_url($notify_url);
    	$input->SetTrade_type("APP");
    	$config = new WxPayConfig();
    	$order = WxPayApi::unifiedOrder($config, $input);
    	//echo '统一下单支付单信息
'; //echo json_encode($order); if($order['return_code'] =='SUCCESS'){ $arr =array( 'appid' => $config->GetAppId(), 'partnerid' => $config->GetMerchantId(), 'prepayid' =>$order['prepay_id'], 'package' => 'Sign=WXPay', 'noncestr' => $order['nonce_str'],//WxPayApi::getNonceStr(), 'timestamp' =>time(), ); //第二次生成签名 $sign = $this->getSign($arr, $config); $arr['sign'] = $sign; return json_encode($arr); } return false; } private function getSign($params, $config) { ksort($params); //将参数数组按照参数名ASCII码从小到大排序 foreach ($params as $key => $item) { if (!empty($item)) { //剔除参数值为空的参数 $newArr[] = $key.'='.$item; // 整合新的参数数组 } } $stringA = implode("&", $newArr); //使用 & 符号连接参数 $stringSignTemp = $stringA."&key=".$config->GetKey(); //拼接key if($config->GetSignType() == "MD5"){ $stringSignTemp = md5($stringSignTemp); } else if($config->GetSignType() == "HMAC-SHA256") { $stringSignTemp = hash_hmac("sha256",$stringSignTemp ,$config->GetKey()); } else { throw new WxPayException("签名类型不支持!"); } $sign = strtoupper($stringSignTemp); //将所有字符转换为大写 return $sign; } public function AssignJson($code='',$value='成功!',$result=[]) { $reqs['code']=$code; if(is_string($value)){ $reqs['message']=$value; }else if(is_array($value)){ if(isset($value['message'])){ $reqs['message']=$value['message']; unset($value['message']); }else{ $reqs['message']='请求成功!'; } $reqs=array_merge($reqs,$value); } if(!isset($value['result'])){ $reqs['result']=$result; } echo json_encode($reqs); exit; } }