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;
}
}