tripay pg and list channels
This commit is contained in:
parent
41aa9f74ea
commit
8b7001b5ef
@ -47,6 +47,13 @@ function _get($param, $defvalue = '')
|
||||
}
|
||||
}
|
||||
|
||||
class Lang {
|
||||
public static function T($var) {
|
||||
return Lang($var);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
require('system/orm.php');
|
||||
|
||||
ORM::configure("mysql:host=$db_host;dbname=$db_name");
|
||||
@ -175,6 +182,29 @@ function _log($description, $type = '', $userid = '0')
|
||||
$d->save();
|
||||
}
|
||||
|
||||
function Lang($key){
|
||||
global $_L,$lan_file;
|
||||
if(!empty($_L[$key])){
|
||||
return $_L[$key];
|
||||
}
|
||||
$val = $key;
|
||||
$key = alphanumeric($key," ");
|
||||
if(!empty($_L[$key])){
|
||||
return $_L[$key];
|
||||
}else if(!empty($_L[str_replace(' ','_',$key)])){
|
||||
return $_L[str_replace(' ','_',$key)];
|
||||
}else{
|
||||
$key = str_replace(' ','_',$key);
|
||||
file_put_contents($lan_file, "$"."_L['$key'] = '".addslashes($val)."';\n", FILE_APPEND);
|
||||
return $val;
|
||||
}
|
||||
}
|
||||
|
||||
function alphanumeric($str, $tambahan = "")
|
||||
{
|
||||
return preg_replace("/[^a-zA-Z0-9" . $tambahan . "]+/", "", $str);
|
||||
}
|
||||
|
||||
|
||||
function sendTelegram($txt)
|
||||
{
|
||||
@ -195,6 +225,16 @@ function sendSMS($phone, $txt)
|
||||
}
|
||||
}
|
||||
|
||||
function sendWhatsapp($phone, $txt)
|
||||
{
|
||||
global $_c;
|
||||
if(!empty($_c['wa_url'])){
|
||||
$waurl = str_replace('[number]',urlencode($phone),$_c['wa_url']);
|
||||
$waurl = str_replace('[text]',urlencode($txt),$waurl);
|
||||
file_get_contents($waurl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function time_elapsed_string($datetime, $full = false)
|
||||
{
|
||||
|
13
system/controllers/community.php
Normal file
13
system/controllers/community.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/)
|
||||
**/
|
||||
_auth();
|
||||
$ui->assign('_title', 'Community - '. $config['CompanyName']);
|
||||
$ui->assign('_system_menu', 'community');
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
$ui->display('community.tpl');
|
39
system/controllers/order.php
Normal file
39
system/controllers/order.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/)
|
||||
**/
|
||||
_auth();
|
||||
$ui->assign('_system_menu', 'order');
|
||||
$action = $routes['1'];
|
||||
$user = User::_info();
|
||||
$ui->assign('_user', $user);
|
||||
|
||||
//Client Page
|
||||
$bill = User::_billing();
|
||||
$ui->assign('_bill', $bill);
|
||||
|
||||
|
||||
switch ($action) {
|
||||
case 'voucher':
|
||||
$ui->assign('_title', $_L['Order_Voucher'].' - '. $config['CompanyName']);
|
||||
$ui->display('user-order.tpl');
|
||||
break;
|
||||
case 'ppoe':
|
||||
$ui->assign('_title', 'Order PPOE Internet- '. $config['CompanyName']);$routers = ORM::for_table('tbl_routers')->find_many();
|
||||
$plans = ORM::for_table('tbl_plans')->where('type', 'PPPOE')->find_many();
|
||||
$ui->assign('routers',$routers);
|
||||
$ui->assign('plans', $plans);
|
||||
$ui->display('user-orderPPOE.tpl');
|
||||
break;
|
||||
case 'hotspot':
|
||||
$ui->assign('_title', 'Order Hotspot Internet- '. $config['CompanyName']);
|
||||
$routers = ORM::for_table('tbl_routers')->find_many();
|
||||
$plans = ORM::for_table('tbl_plans')->where('type', 'Hotspot')->find_many();
|
||||
$ui->assign('routers',$routers);
|
||||
$ui->assign('plans', $plans);
|
||||
$ui->display('user-orderHotspot.tpl');
|
||||
break;
|
||||
default:
|
||||
$ui->display('404.tpl');
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ $ui->assign('_admin', $admin);
|
||||
switch ($action) {
|
||||
case 'xendit':
|
||||
$ui->assign('_title', 'Xendit - Payment Gateway - '. $config['CompanyName']);
|
||||
$ui->assign('channels', json_decode(file_get_contents('system/paymentgateway/channel_xendit.json'), true));
|
||||
$ui->display('app-xendit.tpl');
|
||||
break;
|
||||
case 'xendit-post':
|
||||
@ -37,6 +38,16 @@ switch ($action) {
|
||||
$d->value = $xendit_verification_token;
|
||||
$d->save();
|
||||
}
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'xendit_channel')->find_one();
|
||||
if($d){
|
||||
$d->value = implode(',',$_POST['xendit_channel']);
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'xendit_channel';
|
||||
$d->value = implode(',',$_POST['xendit_channel']);
|
||||
$d->save();
|
||||
}
|
||||
|
||||
_log('[' . $admin['username'] . ']: Xendit ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']);
|
||||
|
||||
@ -44,7 +55,7 @@ switch ($action) {
|
||||
break;
|
||||
case 'midtrans':
|
||||
$ui->assign('_title', 'Midtrans - Payment Gateway - '. $config['CompanyName']);
|
||||
|
||||
$ui->assign('channels', json_decode(file_get_contents('system/paymentgateway/channel_midtrans.json'), true));
|
||||
$ui->display('app-midtrans.tpl');
|
||||
break;
|
||||
case 'midtrans-post':
|
||||
@ -81,9 +92,73 @@ switch ($action) {
|
||||
$d->value = $midtrans_server_key;
|
||||
$d->save();
|
||||
}
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'midtrans_channel')->find_one();
|
||||
if($d){
|
||||
$d->value = implode(',',$_POST['midtrans_channel']);
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'midtrans_channel';
|
||||
$d->value = implode(',',$_POST['midtrans_channel']);
|
||||
$d->save();
|
||||
}
|
||||
|
||||
_log('[' . $admin['username'] . ']: Midtrans ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']);
|
||||
|
||||
r2(U . 'paymentgateway/midtrans', 's', $_L['Settings_Saved_Successfully']);
|
||||
break;
|
||||
case 'tripay':
|
||||
$ui->assign('_title', 'Tripay - Payment Gateway - '. $config['CompanyName']);
|
||||
$ui->assign('channels', json_decode(file_get_contents('system/paymentgateway/channel_tripay.json'), true));
|
||||
$ui->display('app-tripay.tpl');
|
||||
break;
|
||||
case 'tripay-post':
|
||||
$tripay_merchant = _post('tripay_merchant');
|
||||
$tripay_api_key = _post('tripay_api_key');
|
||||
$tripay_secret_key = _post('tripay_secret_key');
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_merchant')->find_one();
|
||||
if($d){
|
||||
$d->value = $tripay_merchant;
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'tripay_merchant';
|
||||
$d->value = $tripay_merchant;
|
||||
$d->save();
|
||||
}
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_api_key')->find_one();
|
||||
if($d){
|
||||
$d->value = $tripay_api_key;
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'tripay_api_key';
|
||||
$d->value = $tripay_api_key;
|
||||
$d->save();
|
||||
}
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_secret_key')->find_one();
|
||||
if($d){
|
||||
$d->value = $tripay_secret_key;
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'tripay_secret_key';
|
||||
$d->value = $tripay_secret_key;
|
||||
$d->save();
|
||||
}
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_channel')->find_one();
|
||||
if($d){
|
||||
$d->value = implode(',',$_POST['tripay_channel']);
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'tripay_channel';
|
||||
$d->value = implode(',',$_POST['tripay_channel']);
|
||||
$d->save();
|
||||
}
|
||||
|
||||
_log('[' . $admin['username'] . ']: Tripay ' . $_L['Settings_Saved_Successfully'].json_encode($_POST['tripay_channel']), 'Admin', $admin['id']);
|
||||
|
||||
r2(U . 'paymentgateway/tripay', 's', $_L['Settings_Saved_Successfully']);
|
||||
break;
|
||||
}
|
||||
|
@ -406,7 +406,7 @@ switch ($action) {
|
||||
$in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
|
||||
$ui->assign('in', $in);
|
||||
|
||||
sendSMS($c['username'], "*$_c[CompanyName]*\n".
|
||||
sendWhatsapp($c['username'], "*$_c[CompanyName]*\n".
|
||||
"$_c[address]\n".
|
||||
"$_c[phone]\n".
|
||||
"\n\n".
|
||||
@ -1050,7 +1050,7 @@ switch ($action) {
|
||||
$ui->assign('in', $in);
|
||||
|
||||
|
||||
sendSMS($c['username'], "*$_c[CompanyName]*\n".
|
||||
sendWhatsapp($c['username'], "*$_c[CompanyName]*\n".
|
||||
"$_c[address]\n".
|
||||
"$_c[phone]\n".
|
||||
"\n\n".
|
||||
|
@ -18,9 +18,11 @@ use PEAR2\Net\RouterOS;
|
||||
|
||||
require_once 'system/autoload/PEAR2/Autoload.php';
|
||||
|
||||
$otpPath = 'system/uploads/sms/';
|
||||
|
||||
switch ($do) {
|
||||
case 'post':
|
||||
|
||||
$otp_code = _post('otp_code');
|
||||
$username = _post('username');
|
||||
$fullname = _post('fullname');
|
||||
$password = _post('password');
|
||||
@ -41,6 +43,32 @@ switch ($do) {
|
||||
$msg .= $_L['PasswordsNotMatch'] . '<br>';
|
||||
}
|
||||
|
||||
if(!empty($_c['sms_url'])){
|
||||
$otpPath .= sha1($username.$db_password).".txt";
|
||||
if(file_exists($otpPath) && time()-filemtime($otpPath)>300){
|
||||
unlink($otpPath);
|
||||
r2(U . 'register', 's', 'Verification code expired');
|
||||
}else if(file_exists($otpPath)){
|
||||
$code = file_get_contents($otpPath);
|
||||
if($code!=$otp_code){
|
||||
$ui->assign('username', $username);
|
||||
$ui->assign('fullname', $fullname);
|
||||
$ui->assign('address', $address);
|
||||
$ui->assign('phonenumber', $phonenumber);
|
||||
$ui->assign('notify', '<div class="alert alert-success">
|
||||
<button type="button" class="close" data-dismiss="alert">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<div>Verification code is Wrong</div></div>');
|
||||
$ui->display('register-otp.tpl');
|
||||
exit();
|
||||
}else{
|
||||
unlink($otpPath);
|
||||
}
|
||||
}else{
|
||||
r2(U . 'register', 's', 'No Verification code');
|
||||
}
|
||||
}
|
||||
$d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['account_already_exist'] . '<br>';
|
||||
@ -65,9 +93,8 @@ switch ($do) {
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<div>Failed to register</div></div>');
|
||||
$ui->display('register.tpl');
|
||||
r2(U . 'register', 's', 'Failed to register');
|
||||
}
|
||||
//r2(U . 'register', 's', $_L['account_created_successfully']);
|
||||
} else {
|
||||
$ui->assign('username', $username);
|
||||
$ui->assign('fullname', $fullname);
|
||||
@ -83,10 +110,47 @@ switch ($do) {
|
||||
break;
|
||||
|
||||
default:
|
||||
$ui->assign('username', "");
|
||||
$ui->assign('fullname', "");
|
||||
$ui->assign('address', "");
|
||||
$ui->assign('phonenumber', "");
|
||||
$ui->display('register.tpl');
|
||||
if(!empty($_c['sms_url'])){
|
||||
$username = _post('username');
|
||||
if(!empty($username)){
|
||||
$d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
r2(U . 'register', 's', $_L['account_already_exist']);
|
||||
}
|
||||
if(!file_exists($otpPath)){
|
||||
mkdir($otpPath);
|
||||
touch($otpPath.'index.html');
|
||||
}
|
||||
$otpPath .= sha1($username.$db_password).".txt";
|
||||
if(file_exists($otpPath) && time()-filemtime($otpPath)<120){
|
||||
$ui->assign('username', $username);
|
||||
$ui->assign('notify', '<div class="alert alert-success">
|
||||
<button type="button" class="close" data-dismiss="alert">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<div>Please wait '.(120-(time()-filemtime($otpPath))).' seconds before sending another SMS</div></div>');
|
||||
$ui->display('register-otp.tpl');
|
||||
}else{
|
||||
$otp = rand(100000,999999);
|
||||
file_put_contents($otpPath, $otp);
|
||||
sendSMS($username,$_c['CompanyName']."\nYour Verification code are: $otp");
|
||||
$ui->assign('username', $username);
|
||||
$ui->assign('notify', '<div class="alert alert-success">
|
||||
<button type="button" class="close" data-dismiss="alert">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<div>Verification code has been sent to your phone</div></div>');
|
||||
$ui->display('register-otp.tpl');
|
||||
}
|
||||
}else{
|
||||
$ui->display('register-rotp.tpl');
|
||||
}
|
||||
}else{
|
||||
$ui->assign('username', "");
|
||||
$ui->assign('fullname', "");
|
||||
$ui->assign('address', "");
|
||||
$ui->assign('otp', false);
|
||||
$ui->display('register.tpl');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -130,9 +130,17 @@ switch ($action) {
|
||||
}
|
||||
|
||||
if($d['name'] != $name){
|
||||
$c = ORM::for_table('tbl_routers')->where('ip_address',$ip_address)->find_one();
|
||||
$c = ORM::for_table('tbl_routers')->where('name',$name)->where_not_equal('id',$id)->find_one();
|
||||
if($c){
|
||||
$msg .= $_L['Router_already_exist']. '<br>';
|
||||
$msg .= 'Name Already Exists<br>';
|
||||
}
|
||||
}
|
||||
$oldname = $d['name'];
|
||||
|
||||
if($d['ip_address'] != $ip_address){
|
||||
$c = ORM::for_table('tbl_routers')->where('ip_address',$ip_address)->where_not_equal('id',$id)->find_one();
|
||||
if($c){
|
||||
$msg .= 'IP Already Exists<br>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -152,6 +160,24 @@ switch ($action) {
|
||||
$d->password = $password;
|
||||
$d->description = $description;
|
||||
$d->save();
|
||||
$p = ORM::for_table('tbl_plans')->where('routers',$oldname)->find_result_set();
|
||||
$p->set('routers',$name);
|
||||
$p->save();
|
||||
$p = ORM::for_table('tbl_payment_gateway')->where('routers',$oldname)->find_result_set();
|
||||
$p->set('routers',$name);
|
||||
$p->save();
|
||||
$p = ORM::for_table('tbl_pool')->where('routers',$oldname)->find_result_set();
|
||||
$p->set('routers',$name);
|
||||
$p->save();
|
||||
$p = ORM::for_table('tbl_transactions')->where('routers',$oldname)->find_result_set();
|
||||
$p->set('routers',$name);
|
||||
$p->save();
|
||||
$p = ORM::for_table('tbl_user_recharges')->where('routers',$oldname)->find_result_set();
|
||||
$p->set('routers',$name);
|
||||
$p->save();
|
||||
$p = ORM::for_table('tbl_voucher')->where('routers',$oldname)->find_result_set();
|
||||
$p->set('routers',$name);
|
||||
$p->save();
|
||||
r2(U . 'routers/list', 's', $_L['Updated_Successfully']);
|
||||
}else{
|
||||
r2(U . 'routers/edit/'.$id, 'e', $msg);
|
||||
|
@ -203,6 +203,7 @@ switch ($action) {
|
||||
$telegram_bot = _post('telegram_bot');
|
||||
$telegram_target_id = _post('telegram_target_id');
|
||||
$sms_url = _post('sms_url');
|
||||
$wa_url = _post('wa_url');
|
||||
$address = _post('address');
|
||||
$payment_gateway = _post('payment_gateway');
|
||||
if ($company == '') {
|
||||
@ -254,6 +255,17 @@ switch ($action) {
|
||||
$d->save();
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'wa_url')->find_one();
|
||||
if($d){
|
||||
$d->value = $wa_url;
|
||||
$d->save();
|
||||
}else{
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'wa_url';
|
||||
$d->value = $wa_url;
|
||||
$d->save();
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'payment_gateway')->find_one();
|
||||
if($d){
|
||||
$d->value = $payment_gateway;
|
||||
|
@ -244,3 +244,13 @@ $_L['Name_Lang'] = 'Nama Bahasa';
|
||||
$_L['Folder_Lang'] = 'Nama Folder';
|
||||
$_L['Translator'] = 'Translator';
|
||||
$_L['Lang_already_exist'] = 'Nama bahasa sudah ada';
|
||||
$_L['Payment_Gateway'] = 'Payment Gateway';
|
||||
$_L['Community'] = 'Community';
|
||||
$_L['Cannot_be_change_after_saved'] = 'Cannot be change after saved';
|
||||
$_L['1_user_can_be_used_for_many_devices'] = '1 user can be used for many devices?';
|
||||
$_L['Cannot_be_change_after_saved'] = 'Cannot be change after saved';
|
||||
|
||||
$_L['Explain_Coverage_of_router'] = 'Jelaskan Cakupan wilayah hotspot';
|
||||
$_L['Name_of_Area_that_router_operated'] = 'Nama Lokasi/Wilayah Router beroperasi';
|
||||
$_L['Payment_Notification_URL_Recurring_Notification_URL_Pay_Account_Notification_URL'] = 'Payment Notification URL, Recurring Notification URL, Pay Account Notification URL';
|
||||
$_L['Finish_Redirect_URL_Unfinish_Redirect_URL_Error_Redirect_URL'] = 'Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL';
|
||||
|
82
system/paymentgateway/channel_midtrans.json
Normal file
82
system/paymentgateway/channel_midtrans.json
Normal file
@ -0,0 +1,82 @@
|
||||
[
|
||||
{
|
||||
"id": "credit_card",
|
||||
"name": "Credit Card",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "bca_va",
|
||||
"name": "BCA",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "permata_va",
|
||||
"name": "Permata",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "bni_va",
|
||||
"name": "BNI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "bri_va",
|
||||
"name": "BRI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "echannel",
|
||||
"name": "Mandiri Bill",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "gopay",
|
||||
"name": "Gopay",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "bca_klikbca",
|
||||
"name": "KLIKBCA",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "bca_klikpay",
|
||||
"name": "BCA KLIKPAY",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "cimb_clicks",
|
||||
"name": "CIMB Clicks",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "danamon_online",
|
||||
"name": "Danamon",
|
||||
"min": 5000
|
||||
},
|
||||
{
|
||||
"id": "bri_epay",
|
||||
"name": "BRImo",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "indomaret",
|
||||
"name": "Indomaret",
|
||||
"min": 5000
|
||||
},
|
||||
{
|
||||
"id": "alfamart",
|
||||
"name": "Alfamart",
|
||||
"min": 5000
|
||||
},
|
||||
{
|
||||
"id": "ShopeePay",
|
||||
"name": "ShopeePay",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "uob_ezpay",
|
||||
"name": "UOB EZ Pay",
|
||||
"min": 1000
|
||||
}
|
||||
]
|
92
system/paymentgateway/channel_tripay.json
Normal file
92
system/paymentgateway/channel_tripay.json
Normal file
@ -0,0 +1,92 @@
|
||||
[
|
||||
{
|
||||
"id": "PERMATAVA",
|
||||
"name": "Permata Bank",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "MYBVA",
|
||||
"name": "Maybank",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BNIVA",
|
||||
"name": "BNI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BRIVA",
|
||||
"name": "BRI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "MANDIRIVA",
|
||||
"name": "Mandiri",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BCAVA",
|
||||
"name": "BCA",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "SMSVA",
|
||||
"name": "Sinarmas",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "MUAMALATVA",
|
||||
"name": "Muamalat",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "SAMPOERNAVA",
|
||||
"name": "Sahabat Sampoerna",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BSIVA",
|
||||
"name": "BSI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "ALFAMART",
|
||||
"name": "Alfamart ",
|
||||
"min": 5000
|
||||
},
|
||||
{
|
||||
"id": "INDOMARET",
|
||||
"name": "Indomaret ",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "ALFAMIDI",
|
||||
"name": "Alfamidi ",
|
||||
"min": 5000
|
||||
},
|
||||
{
|
||||
"id": "OVO",
|
||||
"name": "OVO",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "QRIS",
|
||||
"name": "QRIS by ShopeePay",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "QRISC",
|
||||
"name": "QRIS (Customizable)",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "QRIS2",
|
||||
"name": "QRIS",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "SHOPEEPAY",
|
||||
"name": "ShopeePay ",
|
||||
"min": 1000
|
||||
}
|
||||
]
|
82
system/paymentgateway/channel_xendit.json
Normal file
82
system/paymentgateway/channel_xendit.json
Normal file
@ -0,0 +1,82 @@
|
||||
[
|
||||
{
|
||||
"id": "CREDIT_CARD",
|
||||
"name": "CREDIT CARD",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "PERMATA",
|
||||
"name": "Permata Bank",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BNI",
|
||||
"name": "BNI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BRI",
|
||||
"name": "BRI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "MANDIRI",
|
||||
"name": "Mandiri",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BCA",
|
||||
"name": "BCA",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "BSI",
|
||||
"name": "BSI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "DD_BRI",
|
||||
"name": "Direct Debit BRI",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "DD_BCA_KLIKPAY",
|
||||
"name": "Direct Debit BCA KLIKPAY",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "ALFAMART",
|
||||
"name": "Alfamart ",
|
||||
"min": 5000
|
||||
},
|
||||
{
|
||||
"id": "INDOMARET",
|
||||
"name": "Indomaret ",
|
||||
"min": 10000
|
||||
},
|
||||
{
|
||||
"id": "OVO",
|
||||
"name": "OVO",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "DANA",
|
||||
"name": "DANA",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "LINKAJA",
|
||||
"name": "LinkAja",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "SHOPEEPAY",
|
||||
"name": "ShopeePay ",
|
||||
"min": 1000
|
||||
},
|
||||
{
|
||||
"id": "QRIS",
|
||||
"name": "QRIS",
|
||||
"min": 1000
|
||||
}
|
||||
]
|
@ -28,8 +28,8 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Payment Notification URL</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" readonly class="form-control" value="{$_url}callback/midtrans">
|
||||
<p class="help-block">Payment Notification URL, Recurring Notification URL, Pay Account Notification URL</p>
|
||||
<input type="text" readonly class="form-control" onclick="this.select()" value="{$_url}callback/midtrans">
|
||||
<p class="help-block">{Lang::T('Payment Notification URL, Recurring Notification URL, Pay Account Notification URL')}</p>
|
||||
<a href="https://dashboard.midtrans.com/settings/vtweb_configuration" target="_blank" class="help-block">https://dashboard.midtrans.com/settings/vtweb_configuration</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -37,11 +37,19 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Finish Redirect URL</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" readonly class="form-control" value="{$_url}accounts/transaction">
|
||||
<p class="help-block">Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL</p>
|
||||
<input type="text" readonly class="form-control" onclick="this.select()" value="{$_url}accounts/transaction">
|
||||
<p class="help-block">{Lang::T('Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL')}</p>
|
||||
<a href="https://dashboard.midtrans.com/settings/vtweb_configuration" target="_blank" class="help-block">https://dashboard.midtrans.com/settings/vtweb_configuration</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Channels</label>
|
||||
<div class="col-md-6">
|
||||
{foreach $channels as $channel}
|
||||
<label class="checkbox-inline"><input type="checkbox" {if strpos($_c['midtrans_channel'], $channel['id']) !== false}checked="true"{/if} id="midtrans_channel" name="midtrans_channel[]" value="{$channel['id']}"> {$channel['name']}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
|
@ -52,12 +52,22 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-heading">SMS OTP Registration</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">SMS Server URL</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="sms_url" name="sms_url" value="{$_c['sms_url']}" placeholder="https://domain/?param_number=[number]¶m_text=[text]&secret=">
|
||||
<p class="help-block">Must include <b>[text]</b> & <b>[number]</b>, it will be replaced.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-heading">Whatsapp Notification</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Server URL</label>
|
||||
<label class="col-md-2 control-label">Whatsapp Server URL</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="sms_url" name="sms_url" value="{$_c['sms_url']}" placeholder="https://domain/?param_number=[number]¶m_text=[text]&secret=">
|
||||
<input type="text" class="form-control" id="wa_url" name="wa_url" value="{$_c['wa_url']}" placeholder="https://domain/?param_number=[number]¶m_text=[text]&secret=">
|
||||
<p class="help-block">Must include <b>[text]</b> & <b>[number]</b>, it will be replaced.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
53
ui/ui/app-tripay.tpl
Normal file
53
ui/ui/app-tripay.tpl
Normal file
@ -0,0 +1,53 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}paymentgateway/tripay-post" >
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-default panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">Tripay</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Kode Merchant</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="tripay_merchant" name="tripay_merchant" placeholder="T" value="{$_c['tripay_merchant']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">API Key</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="tripay_api_key" name="tripay_api_key" value="{$_c['tripay_api_key']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Secret Key</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="tripay_secret_key" name="tripay_secret_key" value="{$_c['tripay_secret_key']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Callback URL</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" readonly class="form-control" onclick="this.select()" value="{$_url}callback/tripay">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Channels</label>
|
||||
<div class="col-md-6">
|
||||
{foreach $channels as $channel}
|
||||
<label class="checkbox-inline"><input type="checkbox" {if strpos($_c['tripay_channel'], $channel['id']) !== false}checked="true"{/if} id="tripay_channel" name="tripay_channel[]" value="{$channel['id']}"> {$channel['name']}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
<a class="btn btn-info waves-effect waves-light" href="https://tripay.co.id/?ref=TP19304" target="_blank">Daftar Tripay</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{include file="sections/footer.tpl"}
|
@ -28,6 +28,14 @@
|
||||
<a href="https://dashboard.xendit.co/settings/developers#callbacks" target="_blank" class="help-block">https://dashboard.xendit.co/settings/developers#callbacks</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Channels</label>
|
||||
<div class="col-md-6">
|
||||
{foreach $channels as $channel}
|
||||
<label class="checkbox-inline"><input type="checkbox" {if strpos($_c['xendit_channel'], $channel['id']) !== false}checked="true"{/if} id="xendit_channel" name="xendit_channel[]" value="{$channel['id']}"> {$channel['name']}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
|
112
ui/ui/community.tpl
Normal file
112
ui/ui/community.tpl
Normal file
@ -0,0 +1,112 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-hovered mb20 panel-default">
|
||||
<div class="panel-heading">Discussions</div>
|
||||
<div class="panel-body">Get help from community</div>
|
||||
<div class="panel-footer">
|
||||
<a href="https://github.com/ibnux/phpmixbill/discussions" target="_blank" class="btn btn-primary btn-lg btn-block"><i class="ion ion-chatboxes"></i> Chat Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-hovered mb20 panel-default">
|
||||
<div class="panel-heading">Feedback</div>
|
||||
<div class="panel-body">
|
||||
Feedback and Bug Report
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<a href="https://github.com/ibnux/phpmixbill/issues" target="_blank" class="btn btn-primary btn-lg btn-block"><i class="ion ion-chatboxes"></i> Give Feedback</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-hovered mb20 panel-default">
|
||||
<div class="panel-heading">Donasi</div>
|
||||
<div class="panel-body">Untuk pengembangan lebih baik, donasi ke iBNuX, donasi akan membantu terus pengembangan aplikasi</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>BCA</td>
|
||||
<td>5410-454-825</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mandiri</td>
|
||||
<td>163-000-1855-793</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Atas nama</td>
|
||||
<td>Ibnu Maksum</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<a href="https://trakteer.id/ibnux" target="_blank" class="btn btn-primary btn-lg btn-block">Trakteer</a>
|
||||
<a href="https://karyakarsa.com/ibnux/support" target="_blank" class="btn btn-primary btn-lg btn-block">karyakarsa</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-hovered mb20 panel-default">
|
||||
<div class="panel-heading">Donations</div>
|
||||
<div class="panel-body">
|
||||
Donations will help to continue phpmixbill development
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Bank Central Asia</td>
|
||||
<td>5410-454-825</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SWIFT/BIC</td>
|
||||
<td>CENAIDJA</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jakarta</td>
|
||||
<td>Indonesia</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Account Name</td>
|
||||
<td>Ibnu Maksum</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<a href="https://paypal.me/ibnux" target="_blank" class="btn btn-primary btn-lg btn-block">Paypal</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-hovered mb20 panel-default">
|
||||
<div class="panel-heading">Chat with me</div>
|
||||
<div class="panel-body">Paid Support?<br>donation confirmation?<br>Or ask any Donation Alternative</div>
|
||||
<div class="panel-footer">
|
||||
<a href="https://t.me/ibnux" target="_blank" class="btn btn-primary btn-lg btn-block">Telegram</a>
|
||||
<a href="https://twitter.com/messages/compose?recipient_id=20653807&text=Hello+i+am+phpmixbill+user" target="_blank" class="btn btn-primary btn-lg btn-block">Twitter</a>
|
||||
<a href="https://m.me/ibnumaksum" target="_blank" class="btn btn-primary btn-lg btn-block">Facebook Messenger</a>
|
||||
<a href="https://keybase.io/ibnux" target="_blank" class="btn btn-primary btn-lg btn-block">Keybase</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-default panel-hovered mb20 activities">
|
||||
<div class="panel-heading">PHPMIXBILL</div>
|
||||
<div class="panel-body">
|
||||
{$_L['Welcome_Text_Admin']}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="sections/footer.tpl"}
|
@ -84,7 +84,7 @@
|
||||
<div class="col-md-7">
|
||||
<div class="panel panel-default mb20 panel-hovered project-stats table-responsive">
|
||||
<div class="panel-heading">Vouchers Stock</div>
|
||||
<div class="panel-body">
|
||||
<div class="panel-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -137,7 +137,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-5">
|
||||
<div class="panel panel-default panel-hovered mb20 activities">
|
||||
<div class="panel-heading">{$_L['Activity_Log']}</div>
|
||||
@ -153,14 +153,8 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default panel-hovered mb20 activities">
|
||||
<div class="panel-heading">PHPMIXBILL</div>
|
||||
<div class="panel-body">
|
||||
{$_L['Welcome_Text_Admin']}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
{else}
|
||||
<div class="row">
|
||||
@ -204,7 +198,7 @@
|
||||
<p class="small mb15">{date($_c['date_format'], strtotime($_bill['expiration']))} {$_bill['time']}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -11,6 +11,7 @@
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name">
|
||||
<p class="help-block">{Lang::T('Cannot be change after saved')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -79,6 +80,7 @@
|
||||
<label class="col-md-2 control-label">{$_L['Shared_Users']}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="sharedusers" name="sharedusers" value="1">
|
||||
<p class="help-block">{Lang::T('1 user can be used for many devices?')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -103,6 +105,7 @@
|
||||
<option value="{$rs['name']}">{$rs['name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<p class="help-block">{Lang::T('Cannot be change after saved')}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
<link rel="stylesheet" href="{$_theme}/styles/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="{$_theme}/styles/main.min.css">
|
||||
|
||||
<link href='http://fonts.googleapis.com/css?family=Roboto:400,500,700,300' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- Match Media polyfill for IE9 -->
|
||||
<!--[if IE 9]> <script src="{$_theme}/scripts/ie/matchMedia.js"></script> <![endif]-->
|
||||
@ -53,7 +52,7 @@
|
||||
<li>
|
||||
<div class="site-logo visible-xs">
|
||||
<a href="{$_url}dashboard" class="text-uppercase h3">
|
||||
<span class="text">{$_L['Logo']}</span>
|
||||
<span class="text">{Lang::T('Logo')}</span>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
@ -265,19 +264,20 @@
|
||||
<li {if $_system_menu eq 'paymentgateway'}class="open"{/if}>
|
||||
<a href="#" onClick="toggleDropdownMobile(this)">
|
||||
<i class="ion ion-cash"></i>
|
||||
<span class="text">Payment Gateway</span>
|
||||
<span class="text">{Lang::T('Payment Gateway')}</span>
|
||||
<i class="arrow ion-chevron-left"></i>
|
||||
</a>
|
||||
<ul class="inner-drop list-unstyled">
|
||||
<li {if $_system_menu eq 'paymentgateway'}class="active"{/if}><a href="{$_url}paymentgateway/xendit">Xendit</a></li>
|
||||
<li {if $_system_menu eq 'paymentgateway'}class="active"{/if}><a href="{$_url}paymentgateway/midtrans">Midtrans</a></li>
|
||||
<li {if $_system_menu eq 'paymentgateway'}class="active"{/if}><a href="{$_url}paymentgateway/tripay">Tripay</a></li>
|
||||
<li> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li {if $_system_menu eq 'disquss'}class="active"{/if}>
|
||||
<a href="https://github.com/ibnux/phpmixbill/discussions" target="_blank">
|
||||
<i class="ion ion-chatbubbles"></i>
|
||||
<span class="text">Discussions</span>
|
||||
<li {if $_system_menu eq 'community'}class="active"{/if}>
|
||||
<a href="{$_url}community">
|
||||
<i class="ion ion-chatboxes"></i>
|
||||
<span class="text">{Lang::T('Community')}</span>
|
||||
</a>
|
||||
</li>
|
||||
{/if}
|
||||
|
Loading…
x
Reference in New Issue
Block a user