tripay pg and list channels

This commit is contained in:
Ibnu Maksum 2022-09-07 14:44:04 +07:00
parent 41aa9f74ea
commit 8b7001b5ef
No known key found for this signature in database
GPG Key ID: 7FC82848810579E5
20 changed files with 759 additions and 36 deletions

View File

@ -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)
{

View 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');

View 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');
}

View File

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

View File

@ -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".

View File

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

View File

@ -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);

View File

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

View File

@ -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';

View 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
}
]

View 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
}
]

View 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
}
]

View File

@ -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>

View File

@ -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]&param_text=[text]&secret=">
<p class="help-block">Must include <b>[text]</b> &amp; <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]&param_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]&param_text=[text]&secret=">
<p class="help-block">Must include <b>[text]</b> &amp; <b>[number]</b>, it will be replaced.</p>
</div>
</div>

53
ui/ui/app-tripay.tpl Normal file
View 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"}

View File

@ -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
View 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"}

View File

@ -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>

View File

@ -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>

View File

@ -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>&nbsp;</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}