107 lines
2.9 KiB
PHP
107 lines
2.9 KiB
PHP
<?php
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\UpgradePayment;
|
|
use App\User;
|
|
use Auth;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\View;
|
|
use RuLong\Order\Models\Order;
|
|
|
|
/**
|
|
* 用户升级
|
|
*/
|
|
class UpgradeController extends Controller
|
|
{
|
|
public function __construct(Request $request)
|
|
{
|
|
$this->middleware('auth');
|
|
View::share('nav', 4);
|
|
}
|
|
|
|
// 升级vip
|
|
public function vip(Request $request)
|
|
{
|
|
if (Auth::user()->identity->identity_id > 0) {
|
|
// return redirect()->route('user.index');
|
|
}
|
|
return view('upgrade.vip');
|
|
}
|
|
|
|
//升级代理商
|
|
public function agent(Request $request)
|
|
{
|
|
if (!Auth::user()->username) {
|
|
return redirect()->route('login');
|
|
}
|
|
if (Auth::user()->identity->identity_id > 1) {
|
|
return redirect()->route('Agent.login');
|
|
}
|
|
|
|
return view('upgrade.agent');
|
|
}
|
|
|
|
public function wechat(Request $request)
|
|
{
|
|
$user = Auth::user();
|
|
$type = $request->type ?? 'vip';
|
|
$upgradeOrder = UpgradePayment::where(['user_id' => $user->id, 'type' => $type, 'state' => 'SUCCESS'])->first();
|
|
if ($upgradeOrder) {
|
|
$url = route('user.index');
|
|
if ($type == 'agent') {
|
|
$url = route('Agent.login');
|
|
}
|
|
return $this->error('您已经升级成功', $url);
|
|
}
|
|
|
|
$upgradeOrder = $this->getpayOrder($type);
|
|
$app = app('wechat.payment');
|
|
$amount = $upgradeOrder->amount;
|
|
if (config('pick.DEBUG')) {
|
|
$amount = 0.01;
|
|
}
|
|
$result = $app->order->unify([
|
|
'body' => $type == 'vip' ? '开通会员' : '开通代理商',
|
|
'out_trade_no' => $upgradeOrder->trade_no,
|
|
'total_fee' => $amount * 100,
|
|
'notify_url' => route('notify.upgrade'),
|
|
'trade_type' => 'JSAPI',
|
|
'openid' => $user->openid,
|
|
]);
|
|
if ($result['return_code'] == 'SUCCESS' && isset($result['prepay_id'])) {
|
|
$json = $app->jssdk->bridgeConfig($result['prepay_id']);
|
|
return $this->success($json);
|
|
} else {
|
|
return $this->error($result['return_msg'] . ($result['err_code_des'] ?? ''));
|
|
}
|
|
}
|
|
|
|
private function getpayOrder($type)
|
|
{
|
|
$amount = 399;
|
|
if ($type == 'vip') {
|
|
$amount = config('vip_price');
|
|
}
|
|
|
|
if ($type == 'agent') {
|
|
$amount = config('agent_price');
|
|
}
|
|
|
|
$upgradeOrder = UpgradePayment::create([
|
|
'user_id' => Auth::id(),
|
|
'type' => $type,
|
|
'pay_type' => 'WECHAT',
|
|
'amount' => $amount,
|
|
'total' => $amount,
|
|
]);
|
|
|
|
return $upgradeOrder;
|
|
}
|
|
|
|
public function hasAgent()
|
|
{
|
|
return view('upgrade.hasagent');
|
|
}
|
|
|
|
}
|