order('weigh asc,id asc')->select(); $data['vipconfig'] = $list; $data['vip_endtime'] = model('wallet')->getWallet($this->auth->id, 'vip_endtime'); $data['is_vip'] = $data['vip_endtime'] > time() ? 1 : 0; $data['avatar'] = localpath_to_netpath($this->auth->avatar); $this->success('success', $data); } //vip用的,创建订单 public function vip_recharge() { $rc_id = input('rc_id', 0); $pay_type = input('pay_type', 'wechat'); $platform = 'app'; $uid = $this->auth->id; if (!$rc_id) { $this->error('请选择会员套餐'); } if (!$this->user_auth_limit()) { $this->error('请先完成实名认证'); } //赋值money $recharge_config = Db::name('payvip_config')->where('id', $rc_id)->find(); $money = $recharge_config['money']; if ($money <= 0) { $this->error('支付金额必须大于0'); } if ($money > 10000) { $this->error('支付金额太大'); } //创建订单 $data = []; $data['user_id'] = $uid; $data['out_trade_no'] = createUniqueNo('P', $uid); // 数据库订单号加密 $data['order_amount'] = $money; $data['createtime'] = time(); $data['pay_type'] = $pay_type; $data['platform'] = $platform; $data['order_status'] = 0; $data['table_name'] = 'vip_recharge'; $data['table_id'] = 0; $data['args'] = json_encode(['days' => $recharge_config['days']]); $orderid = Db::name('pay_order')->insertGetId($data); // $openid = $this->auth->mini_openid; //下单 $params = [ 'type' => $pay_type, 'orderid' => $data['out_trade_no'], 'title' => '支付订单', 'amount' => $data['order_amount'], 'method' => $platform, // 'openid' => $openid, 'notifyurl' => config('pay_notify_url') . '/api/notify/vip_notify_base/paytype/' . $pay_type, 'returnurl' => '', ]; $res = Service::submitOrder($params); if ($pay_type == 'wechat') { $this->success('success', json_decode($res, true)); } else { $this->success('success', $res); } } //人民币充值 public function money_config() { $wallet = (new Wallet())->getWallet($this->auth->id); $data['wallet'] = $wallet; $list = Db::name('paymoney_config')->order('weigh asc,id asc')->where('is_show', 1)->select(); $data['config'] = $list; $this->success('success', $data); } //人民币充值 创建订单 public function money_recharge() { $rc_id = input('rc_id', 0); $pay_type = input('pay_type', 'wechat'); $platform = input('platform', 'app'); $free_money = input('free_money', 0); $user_id = $this->auth->id; if (!$rc_id && !$free_money) { $this->error('请选择或填写充值金额'); } if ($rc_id) { //赋值money $recharge_config = Db::name('paymoney_config')->where('id', $rc_id)->find(); $money = $recharge_config['money'] ?: 0; } else { //自由输入覆盖 $money = floatval($free_money); } if ($money <= 0) { $this->error('支付金额必须大于0'); } if ($money > 10000) { $this->error('支付金额太大'); } // 创建支付订单 $remark = '充值订单'; $orderData = [ 'user_id' => $user_id, 'out_trade_no' => createUniqueNo('M', $user_id), 'order_amount' => $money, 'pay_type' => $pay_type, 'platform' => $platform, 'table_name' => 'money_recharge', 'table_id' => 0, 'createtime' => time(), 'args' => json_encode([ 'table_id' => 0, 'money' => $money, 'remark' => $remark ], JSON_UNESCAPED_UNICODE), ]; if (!Db::name('pay_order')->insert($orderData)) { return $this->error('订单创建失败'); } // 第三方支付下单 $params = [ 'type' => $orderData['pay_type'], 'orderid' => $orderData['out_trade_no'], 'title' => $remark, 'amount' => $orderData['order_amount'], 'method' => $orderData['platform'], 'notifyurl' => CurlUtil::getHttp("/api/notify/recharge/pay_type/{$pay_type}"), 'returnurl' => '', ]; // 如果是小程序则需要添加 openid if ($pay_type == 'wechat' && $platform == 'miniapp') { $params['openid'] = $this->auth->mini_openid; } $res = Service::submitOrder($params); if ($pay_type == 'wechat') { $this->success('success', json_decode($res, true)); } else { $this->success('success', $res); } } }