mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 01:08:56 +00:00
Add BtcPaymentController
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
2018-04-07 DariusIII
|
||||
* Chg: Add BtcPaymentController
|
||||
* Chg: Update libraries to their latest versions
|
||||
2018-04-06 DariusIII
|
||||
* Fix: Fix pager on browse pages
|
||||
|
||||
@@ -92,7 +92,7 @@ class BasePageController extends Controller
|
||||
*/
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->middleware('auth')->except('api', 'rss', 'contact', 'showContactForm');
|
||||
$this->middleware('auth')->except('api', 'rss', 'contact', 'showContactForm', 'callback');
|
||||
// Buffer settings/DB connection.
|
||||
$this->settings = new Settings();
|
||||
$this->pdo = new DB();
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\UserRole;
|
||||
use Blacklight\libraries\Geary;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BtcPaymentController extends BasePageController
|
||||
{
|
||||
/**
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function show(Request $request)
|
||||
{
|
||||
$this->setPrefs();
|
||||
$gateway_id = env('MYCELIUM_GATEWAY_ID');
|
||||
$gateway_secret = env('MYCELIUM_GATEWAY_SECRET');
|
||||
|
||||
$userId = Auth::id();
|
||||
$user = User::find($userId);
|
||||
$action = $request->input('action') ?? 'view';
|
||||
$donation = UserRole::query()->where('donation', '>', 0)->get(['id', 'name', 'donation', 'addyears']);
|
||||
$this->smarty->assign('donation', $donation);
|
||||
|
||||
switch ($action) {
|
||||
case 'submit':
|
||||
$price = $request->input('price');
|
||||
$role = $request->input('role');
|
||||
$roleName = $request->input('rolename');
|
||||
$addYears = $request->input('addyears');
|
||||
$data = ['user_id' => $userId, 'username' => $user->username, 'price' => $price, 'role' => $role, 'rolename' => $roleName, 'addyears' => $addYears];
|
||||
$keychain_id = random_int(0, 19);
|
||||
$callback_data = json_encode($data);
|
||||
|
||||
$geary = new Geary($gateway_id, $gateway_secret);
|
||||
$order = $geary->create_order($price, $keychain_id, $callback_data);
|
||||
|
||||
if ($order->payment_id) {
|
||||
// Redirect to a payment gateway
|
||||
$url = 'https://gateway.gear.mycelium.com/pay/'.$order->payment_id;
|
||||
header('Location: '.$url);
|
||||
die();
|
||||
}
|
||||
break;
|
||||
case 'view':
|
||||
default:
|
||||
$userId = Auth::id();
|
||||
break;
|
||||
}
|
||||
|
||||
$title = 'Become a supporter';
|
||||
$meta_title = 'Become a supporter';
|
||||
$meta_description = 'Become a supporter';
|
||||
|
||||
$content = $this->smarty->fetch('btc_payment.tpl');
|
||||
|
||||
$this->smarty->assign(
|
||||
[
|
||||
'content' => $content,
|
||||
'meta_title' => $meta_title,
|
||||
'title' => $title,
|
||||
'meta_description' => $meta_description,
|
||||
]
|
||||
);
|
||||
$this->pagerender();
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback data from Mycelium Gear
|
||||
*/
|
||||
public function callback()
|
||||
{
|
||||
$gateway_id = env('MYCELIUM_GATEWAY_ID');
|
||||
$gateway_secret = env('MYCELIUM_GATEWAY_SECRET');
|
||||
|
||||
$geary = new Geary($gateway_id, $gateway_secret);
|
||||
$order = $geary->check_order_callback();
|
||||
|
||||
// Order status was received
|
||||
if ($order !== false) {
|
||||
$callback_data = json_decode($order['callback_data'], true);
|
||||
$newRole = $callback_data['role'];
|
||||
$amount = $callback_data['price'];
|
||||
$addYear = $callback_data['addyears'];
|
||||
// If order was paid in full (2) or overpaid (4)
|
||||
if ((int) $order['status'] === 2 || (int) $order['status'] === 4) {
|
||||
User::updateUserRole($callback_data['user_id'], $newRole);
|
||||
User::updateUserRoleChangeDate($callback_data['user_id'], Carbon::now()->addYears($addYear));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\UserRole;
|
||||
use Blacklight\http\Page;
|
||||
use Blacklight\libraries\Geary;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
if (! Auth::check()) {
|
||||
$page->show403();
|
||||
}
|
||||
|
||||
$page = new Page();
|
||||
|
||||
$gateway_id = env('MYCELIUM_GATEWAY_ID');
|
||||
$gateway_secret = env('MYCELIUM_GATEWAY_SECRET');
|
||||
|
||||
$userId = Auth::id();
|
||||
$user = User::find($userId);
|
||||
$action = request()->input('action') ?? 'view';
|
||||
$donation = UserRole::query()->where('donation', '>', 0)->get(['id', 'name', 'donation', 'addyears']);
|
||||
$page->smarty->assign('donation', $donation);
|
||||
|
||||
switch ($action) {
|
||||
case 'submit':
|
||||
$price = request()->input('price');
|
||||
$role = request()->input('role');
|
||||
$roleName = request()->input('rolename');
|
||||
$addYears = request()->input('addyears');
|
||||
$data = ['user_id' => $userId, 'username' => $user->username, 'price' => $price, 'role' => $role, 'rolename' => $roleName, 'addyears' => $addYears];
|
||||
$keychain_id = random_int(0, 19);
|
||||
$callback_data = json_encode($data);
|
||||
|
||||
$geary = new Geary($gateway_id, $gateway_secret);
|
||||
$order = $geary->create_order($price, $keychain_id, $callback_data);
|
||||
|
||||
if ($order->payment_id) {
|
||||
// Redirect to a payment gateway
|
||||
$url = 'https://gateway.gear.mycelium.com/pay/'.$order->payment_id;
|
||||
header('Location: '.$url);
|
||||
die();
|
||||
}
|
||||
break;
|
||||
case 'view':
|
||||
default:
|
||||
$userId = Auth::id();
|
||||
break;
|
||||
}
|
||||
|
||||
$page->title = 'Become a supporter';
|
||||
$page->meta_title = 'Become a supporter';
|
||||
$page->meta_description = 'Become a supporter';
|
||||
|
||||
$page->content = $page->smarty->fetch('btc_payment.tpl');
|
||||
$page->pagerender();
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User;
|
||||
use Blacklight\libraries\Geary;
|
||||
|
||||
$gateway_id = env('MYCELIUM_GATEWAY_ID');
|
||||
$gateway_secret = env('MYCELIUM_GATEWAY_SECRET');
|
||||
|
||||
$geary = new Geary($gateway_id, $gateway_secret);
|
||||
$order = $geary->check_order_callback();
|
||||
|
||||
// Order status was received
|
||||
if ($order !== false) {
|
||||
$callback_data = json_decode($order['callback_data'], true);
|
||||
$newRole = $callback_data['role'];
|
||||
$amount = $callback_data['price'];
|
||||
$addYear = $callback_data['addyears'];
|
||||
// If order was paid in full (2) or overpaid (4)
|
||||
if ((int) $order['status'] === 2 || (int) $order['status'] === 4) {
|
||||
User::updateUserRole($callback_data['user_id'], $newRole);
|
||||
User::updateUserRoleChangeDate($callback_data['user_id'], \Carbon\Carbon::now()->addYears($addYear));
|
||||
}
|
||||
}
|
||||
+4
-12
@@ -139,18 +139,10 @@ Route::get('/filelist/{id}', function () {
|
||||
redirect('/filelist');
|
||||
})->middleware('auth');
|
||||
|
||||
Route::get('/btc_payment', function () {
|
||||
redirect('/btc_payment');
|
||||
})->middleware('auth');
|
||||
Route::get('btc_payment', 'BtcPaymentController@show');
|
||||
|
||||
Route::post('/btc_payment', function () {
|
||||
redirect('/btc_payment');
|
||||
})->middleware('auth');
|
||||
Route::post('btc_payment', 'BtcPaymentController@show');
|
||||
|
||||
Route::get('/btc_payment_callback', function () {
|
||||
redirect('/btc_payment_callback');
|
||||
});
|
||||
Route::get('btc_payment_callback', 'BtcPaymentController@callback');
|
||||
|
||||
Route::post('/btc_payment_callback', function () {
|
||||
redirect('/btc_payment_callback');
|
||||
});
|
||||
Route::post('btc_payment_callback', 'BtcPaymentController@callback');
|
||||
|
||||
Reference in New Issue
Block a user