示例#1
0
 /**
  * Основная функция для пополнения. В нее нужно передать POST данны, которые пришли от веб-кошелька
  * 
  * @param  array    массив с данным от webpay
  * @return успех
  */
 public function income($data)
 {
     global $DB;
     $this->_fields = array();
     $id = $DB->insert('webpay_log', array('request' => serialize($data)), 'id');
     if (empty($data['amount']) || empty($data['userid']) || empty($data['userid_extra']) || empty($data['paymentid']) || empty($data['key']) || empty($data['paymode'])) {
         $this->_error($id, self::ERR_DATA);
         return false;
     }
     $amount = floatval($data['amount']);
     $login = (string) $data['userid_extra'];
     $this->_fields['payment_id'] = $paymentid = (string) $data['paymentid'];
     if ($amount <= 0) {
         $this->_error($id, self::ERR_AMOUNT);
         return false;
     }
     $this->_fields['amount'] = $amount;
     if ($data['key'] != md5($data['amount'] . $data['userid'] . $data['paymentid'] . onlinedengi_cards::SECRET)) {
         $this->_error($id, self::ERR_SECRET);
         return false;
     }
     $user = new users();
     $user->GetUser($login);
     if (empty($user->uid)) {
         $this->_error($id, self::ERR_USER);
         return false;
     }
     $this->_fields['user_id'] = $user->uid;
     if ($DB->val("SELECT COUNT(*) FROM webpay_log WHERE payment_id = ?", $paymentid)) {
         $this->_success($id, true);
     } else {
         $account = new account();
         $account->GetInfo($user->uid);
         $comment = "Пополнение через Веб-кошелек";
         if ($account->deposit($op_id, $account->id, $amount, $comment, self::PAYMENT_SYS_CODE, $amount)) {
             $this->_error($id, self::ERR_DEPOSIT);
             return false;
         }
         $this->_fields['billing_id'] = $op_id;
         $this->_success($id);
     }
     return true;
 }
示例#2
0
 /**
  * Пополняет FM-счет.
  *
  * @param string $error   сюда пишет ошибку.
  * @param array $bill   qiwi-счет
  * @param float $sum   сумма попоплнения
  * @return boolean   успех?
  */
 function completeBill(&$error, $bill, $sum)
 {
     $account = new account();
     $descr = "Пополнение через систему QIWI.кошелек -- сумма: {$sum} руб., телефон: {$bill['phone']}, счет #{$bill['id']}";
     $error = $account->deposit($op_id, $bill['account_id'], $sum, $descr, self::PAYMENT_SYS, $sum, 12);
     if ($error) {
         return false;
     }
     return $this->deleteBill($error, $bill['id']);
 }
示例#3
0
}
if ($fsocket == true) {
    $header = 'POST /ipn-verify.html HTTP/1.0' . "\r\n" . 'Host: www.okpay.com' . "\r\n" . 'Content-Type: application/x-www-form-urlencoded' . "\r\n" . 'Content-Length: ' . strlen($request) . "\r\n" . 'Connection: close' . "\r\n\r\n";
    @fputs($fp, $header . $request);
    $string = '';
    while (!@feof($fp)) {
        $res = @fgets($fp, 1024);
        $string .= $res;
        if ($res == 'VERIFIED' || $res == 'INVALID' || $res == 'TEST') {
            $result = $res;
            break;
        }
    }
    @fclose($fp);
}
if ($result == 'VERIFIED') {
    if ($_POST['ok_txn_status'] == 'completed') {
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
        $account = new account();
        $account->GetInfo($_POST['ok_f_uid']);
        $descr = "OKPAY #" . $_POST['ok_txn_id'] . " на кошелек " . $_POST['ok_receiver_wallet'] . " OKPAYID: " . $_POST['ok_payer_id'] . " сумма - " . $_POST['ok_item_1_price'] . ",";
        $descr .= " обработан " . $_POST['ok_txn_datetime'] . ", счет - " . $_POST['ok_f_bill_id'];
        $account->deposit($op_id, $_POST['ok_f_bill_id'], $_POST['ok_item_1_price'], $descr, 14, $_POST['ok_item_1_price'], 12);
    }
} elseif ($result == 'INVALID') {
} elseif ($result == 'TEST') {
} else {
    header("HTTP/1.0 404 Not Found");
    exit;
}
示例#4
0
$customerNumber = 120824;
//$_GET['cn'];
$ammount = 569;
//$_GET['ammount'];
$invoiceId = 2000246796791.0;
//$_GET['invoiceId'];
$payments = 3;
$orderId = 367369;
$params['invoiceId'] = $invoiceId;
/*
3 => self::PAYMENT_YD,
6 => self::PAYMENT_AC,
10 => self::PAYMENT_WM,
16 => self::PAYMENT_AB,
17 => self::PAYMENT_SB
*/
$descr = "Платеж через Яндекс.Кассу. Сумма - {$ammount}, номер покупки - {$invoiceId}";
//------------------------------------------------------------------------------
//Заносим деньги на ЛС
$account = new account();
$error = $account->deposit($op_id, $customerNumber, $ammount, $descr, $payments, $ammount, 12);
if (!$error) {
    //Пробуем купить заказ за который занесли деньги выше
    if ($orderId > 0) {
        $billing = new billing($account->uid);
        $billing->buyOrder($orderId, 12, $params);
    }
    exit;
}
echo $error;
exit;
示例#5
0
 /**
  * Выполняет платеж
  */
 private function addOperation()
 {
     global $DB;
     $DB->error_output = false;
     $shopParams = $this->getShopParams();
     $payment = $DB->row('
         SELECT 
             aoy.id,            
             aoy.descr,
             ao.id AS acc_op_id 
         FROM account_operations_yd AS aoy 
         LEFT JOIN account_operations AS ao ON ao.id = aoy.acc_op_id AND ao.billing_id = aoy.billing_id
         WHERE invoice_id = ?', $this->params['invoiceId']);
     //Пополнение и покупка уже были отвечаем успехом
     if ($payment['acc_op_id'] > 0) {
         return 0;
     }
     $DB->start();
     $op_id = 0;
     $data = array();
     $billing = null;
     $account = new account();
     //Заносим деньги на ЛС
     $error = $account->deposit($op_id, $this->params['customerNumber'], $shopParams['ammount'], $payment['descr'], array_search($this->params['paymentType'], $this->payments), $this->params['orderSumAmount'], $shopParams['op_code']);
     //Если все без ошибок и ЛС зачислены то пробуем купить заказ
     if (!$error && $op_id > 0) {
         $success = true;
         $data['acc_op_id'] = $op_id;
         //Пробуем купить заказ за который занесли деньги выше
         //Если заказ уже куплен или отменен то ничего не делаем но получим успех
         if ($this->params['orderId']) {
             $billing = new billing($account->uid);
             if ($success = $billing->buyOrder($this->params['orderId'], $shopParams['op_code'], $this->params)) {
                 $data['bill_reserve_id'] = $this->params['orderId'];
             }
         }
         //Фиксируем ID операции пополнения ЛС и ID купленного заказа при наличии
         if ($success) {
             $DB->update('account_operations_yd', $data, 'id = ?i', $payment['id']);
             $DB->commit();
             return 0;
         } else {
             $this->message = sprintf('Failed to purchase order #%s', $this->params['orderId']);
         }
     } else {
         $this->message = 'Failed deposit to account';
     }
     //Не удалось приобрести заказ откатываем транзакцию
     //и возвращаем ошибку что приводит к возврату средств
     $DB->rollback();
     //Если отказ принять деньги то и отменяем заказ
     //чтобы не висел в истории
     if ($billing && $this->params['orderId'] > 0) {
         $billing->cancelReserveById($this->params['orderId']);
     }
     //Ошибка, возврат средств
     return 100;
 }
示例#6
0
 /**
  * Резервирование денег в текущей СБР для тестеров.
  * 
  * @param account $account инициализированный экземпляр класса account.
  *
  * @return bool успешно?
  */
 public function testReserve($account)
 {
     if ($this->getReserveSum()) {
         $err = $account->deposit($op_id, $account->id, 0, "Тестовое резервирвание на счет СБР, {$GLOBALS['EXRATE_CODES'][$this->cost_sys][2]}", $this->cost_sys - 1, $this->reserve_sum, self::OP_RESERVE, $this->id);
     }
     if ($err) {
         echo $err;
     }
     return !$err;
 }
示例#7
0
 /**
  * Выполняет покупку.
  */
 public function order()
 {
     //Запрещаем вывод ошибок
     $this->db()->error_output = false;
     $orderid = $_GET['orderid'];
     if (!$orderid) {
         exit;
     }
     $json_data = array('status' => '0', 'time' => time());
     $payment = $this->getPayment($orderid);
     if ($payment) {
         $data = isset($_REQUEST['data']) && is_array($_REQUEST['data']) ? $_REQUEST['data'] : array();
         $sig = $this->getSig($payment['price'], $orderid, $payment['billing_id'], $data);
         if ($sig == $_GET['sig']) {
             $json_data['status'] = '1';
             $op_id = 0;
             //Занесли деньги
             $account = new account();
             $error = $account->deposit($op_id, $payment['billing_id'], $payment['price'], "Платеж через \"Плати потом\". Сумма - {$payment['price']}, номер покупки - {$orderid}", self::PAYMENT_CODE, $payment['price']);
             if (!$error) {
                 //Пробуем купить
                 $billing = new billing($account->uid);
                 $billing->buyOrder($payment['bill_reserve_id'], 12, array());
                 $this->db()->query("DELETE FROM {$this->TABLE} WHERE id = ?", $orderid);
                 $memBuff = new memBuff();
                 $memBuff->delete('platipotom_max_price_' . $account->uid);
             }
         }
     }
     return $json_data;
 }
示例#8
0
 public static function acknowledgement($msg, $account)
 {
     $m = GsonCrypt::verify($msg, $account);
     if (!$m) {
         return array(0, "Acknowledgement message to destination bank is not authentic");
     }
     $m = Gmsg::extract($m);
     if (!$m || !is_array($m)) {
         return array(0, "Destination bank did not extract the acknowledgement message correctly");
     }
     $acc = Tools::address($m['merchant']);
     if ($m['acknowledgement']['status'] == 0) {
         $r = account::deposit($m['coins'], $acc['account']);
         $msg = $r ? "Payment was successful" : "Deposit to merchant's account failed";
         $m['acknowledgement']['message'] = $msg;
         $status = $r ? 1 : 0;
     } else {
         $status = 0;
         $msg = $m['acknowledgement']['message'];
     }
     self::log($m);
     return array($status, "{$msg}");
 }
示例#9
0
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
$account = new account();
if (isset($_POST['cancel'])) {
    $back_url = $_SESSION['referer'];
    unset($_SESSION['referer']);
    header("Location: {$back_url}");
    exit;
} elseif (isset($_POST['success'])) {
    $sum = $_SESSION['post_payment']['sum'];
    $account = new account();
    $account->GetInfo($_SESSION['post_payment']['ok_f_uid']);
    //$descr = "OKPAY #".$_SESSION['post_payment']['ok_txn_id']." на кошелек ".$_SESSION['post_payment']['ok_receiver_wallet']." OKPAYID: ".$_SESSION['post_payment']['ok_payer_id']." сумма - ".$_SESSION['post_payment']['ok_item_1_price'].",";
    //$descr .= " обработан ".$_SESSION['post_payment']['ok_txn_datetime'].", счет - ".$_SESSION['post_payment']['ok_f_bill_id'];
    $descr = "OKPAY #11 на кошелек OK460571733 OKPAYID: 1111 сумма - " . $_SESSION['post_payment']['ok_item_1_price'] . ",";
    $descr .= " обработан " . date("Y-m-d H:i:s") . ", счет - " . $_SESSION['post_payment']['ok_f_bill_id'];
    $account->deposit($op_id, $_SESSION['post_payment']['ok_f_bill_id'], $_SESSION['post_payment']['ok_item_1_price'], $descr, 14, $_SESSION['post_payment']['ok_item_1_price'], 12);
    header("Location: /bill/");
    exit;
}
$_SESSION['post_payment'] = $_POST;
$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
?>

<h2>Тестовая оплата OKPAY</h2>
<p>
Оплата услуг аккаунт #<?php 
echo get_uid(false);
?>
, сумма оплаты <?php 
echo to_money($_POST['ok_item_1_price'], 2);
?>
示例#10
0
$ok = $account->GetInfo($uid, true);
$results['GetInfo'] = (int) $ok;
if ($ok) {
    $sum = 14320;
    $scomment = 'Пополнение счета';
    $ucomment = 'Пополнение счета';
    $trs_sum = $sum;
    $op_date = date('c');
    //, strtotime($_POST['date']));
    //$results['depositEx'] = $account->depositEx($account->id, $sum, $scomment, $ucomment, 135, $trs_sum, NULL, $op_date);
    $op_id = 0;
    //$account->Buy(&$id, $transaction_id, $op_code, $uid, $ucomment, $scomment, $ammount, $commit, $payment_sys);
    $fromcode = '"TEST"';
    $ammount = $sum;
    $paymentDateTime = $op_date;
    $orderNumber = 134;
    $descr = "ЯД с кошелька {$fromcode} сумма - {$ammount}, обработан {$paymentDateTime}, номер покупки - {$orderNumber}";
    $results['deposit'] = $account->deposit($op_id, $account->id, $sum, $descr, 3, $sum, 12);
}
//------------------------------------------------------------------------------
//$profiler->start('fill_frl_mem');
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//$profiler->stop('fill_frl_mem');
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
array_walk($results, function (&$value, $key) {
    $value = sprintf('%s = %s' . PHP_EOL, $key, $value);
});
print_r(implode('', $results));
exit;
示例#11
0
            } else {
                $redirect_part = "?verror=1&vuse=card";
            }
            ?>
            <html><body><script>window.close();</script></body></html>
            <?php 
            exit;
        } elseif ($_SESSION['quickpro_card_orderid'] == $_GET['orderId']) {
            // Быстрая покупка pro
            $walletAlpha->api->getAccessData('bind');
            $status = $walletAlpha->api->getOrderStatus($_SESSION['quickpro_card_orderid']);
            if ($status['OrderStatus'] == API_AlphaBank::STATUS_SUCCESS_PAYMENT) {
                require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
                $account = new account();
                $descr = "Карта " . $status['Pan'] . " сумма - " . $_SESSION['quickpro_card_sum'] . ", номер покупки - " . $_GET['orderId'];
                $account->deposit($op_id, $_SESSION['quickpro_card_billing'], $_SESSION['quickpro_card_sum'], $descr, 20, $_SESSION['quickpro_card_sum']);
                $_SESSION['quickpro_card_orderid'] = 'done';
            }
            ?>
            <html><body><script>window.close();</script></body></html>
            <?php 
            exit;
        } else {
            header("Location: /404.php");
            exit;
        }
    }
} else {
    header("Location: /404.php");
    exit;
}
示例#12
0
             case 0:
                 $account->depositEx($account->id, $sum, $scomment, $ucomment, 13, $trs_sum, NULL, $op_date);
                 break;
             case 1:
                 if ($for && $fort) {
                     $account->depositEx($account->id, $sum, $scomment, $ucomment, 12, $for, $fort, $op_date);
                 } else {
                     $error = "Укажите исходные валюты! Валюту в FM указывать не обязательно!";
                 }
                 break;
             case 2:
                 $account->depositBonusEx($account->id, $sum, $scomment, $ucomment, 13, $op_date);
                 break;
             case 3:
                 if ($for && $fort && $nrid) {
                     $account->deposit($op_id, $account->id, $sum, $ucomment, $fort, $for, 36, $nrid, $op_date);
                 } else {
                     $error = "Укажите исходные валюты и номер СбР!";
                 }
         }
         header('Location: /siteadmin/bill/?login='******'num_operation'] = trim($_POST['num_operation']);
     $filter['date_from'] = $_POST['date_from'] != "" ? $_POST['date_from'] : false;
     $filter['date_to'] = $_POST['date_to'] != "" ? $_POST['date_to'] : false;
     $filter['sort'] = intval($_POST['sort']);
     $filter['sum_from'] = $_POST['sum_from'] != "" ? intval($_POST['sum_from']) : false;
示例#13
0
 /**
  * Модератор отвергает рассылку, деньги возращаются юзеру.
  *
  * @param integer  $id             ИД Рассылки
  * @param string   $denied_reason  Причина отказа
  * @param string   $error          Возвращает сообщение об ошибке
  * @return integer 1 - все сработало как надо, 0 - ошибка
  */
 public function Deny($id, $reason)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/messages.php";
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php";
     $this->error = '';
     global $DB;
     $sql = 'SELECT * FROM mass_sending WHERE id = ? AND is_accepted IS NULL';
     if (!($row = $DB->row($sql, $id))) {
         $this->error = 'Рассылка выбрана неправильно';
         return FALSE;
     }
     // если рассылка не оплачена, значит она была создана после введения нового счета
     // в будущем, когда все старые (сразу оплаченные) рассылки уйдут, то можно логику этой функции заменить на логику из Deny_new
     if (!$row['account_op_id']) {
         return $this->Deny_new($id, $reason, $row);
     }
     $account = new account();
     $account->GetInfo($row['user_id']);
     if (!$account->id) {
         $this->error = 'Ошибка. Не опеределен счет пользователя.';
         return FALSE;
     }
     $users = new users();
     $user = $users->GetName($row['user_id'], $e);
     $login = $user['login'];
     $users->GetUser($login);
     $admin_id = users::GetUid($err, 'admin');
     if (!($error = $account->deposit($acc_op_id, $account->id, $row['pre_sum'], 'Рассылка по разделам. Возврат денег.', 0, 0, self::OPER_CODE_RETURN, 0))) {
         $text = "Здравствуйте!\n\nАдминистрацией нашего ресурса было принято решение отказать Вам в рассылке по каталогу по причине:\n\n\"\n" . stripslashes($reason) . "\n\"\n\nПотраченные деньги на рассылку возвращены на Ваш личный счет.\n\nЭто сообщение было выслано автоматически и ответ на него не будет рассматриваться.\n\nНадеемся на понимание, Команда Free-lance.ru.\n\nИсходный текст Вашей рассылки:\n\n---\n" . html_entity_decode($row['msgtext'], ENT_QUOTES) . "\n--- ";
         // уведомляем автора о разрешении рассылки
         $smail = new smail();
         $smail->subject = "Ваша заявка на рассылку не прошла модерацию";
         $smail->recipient = $users->uname . " " . $users->usurname . " [" . $users->login . "] <" . $users->email . ">";
         $reason = $smail->ToHtml($reason);
         $body = "Ваша заявка на рассылку была отклонена модераторами сайта Free-lance.ru.<br/>\n              Причина:<br/>\n              ---<br/>\n              {$reason}<br/>\n              ---<br/>\n          ";
         $smail->message = $smail->GetHtml($users->uname, $body, array('header' => 'default', 'footer' => 'simple'));
         $smail->send('text/html');
         messages::Add($admin_id, $login, $text, '', 1);
         if (!$DB->query("UPDATE mass_sending SET denied_reason = ?, is_accepted=false, decided_time=now() WHERE id=?", $reason, $id)) {
             $this->error = 'Произошла ошибка при установлении статуса "Отказано". Но деньги возвращены.';
             return FALSE;
         }
     } else {
         $this->error = 'Какой-то сбой. Деньги не возвращены.';
         return FALSE;
     }
     return TRUE;
 }
示例#14
0
文件: pskb.php 项目: uadev/fl-ru-damp
 /**
  * Проверяет обновления аккредитивов в статусах form|new.
  * Если статус изменился на cover, отмечает резерв в соответствующей сделке
  * 
  * @param type $cntIn       
  * @param type $cntOut
  * @return boolean
  */
 public static function checkStatus($ids = array(), &$cntIn = 0, &$cntOut = 0)
 {
     $db = new DB('master');
     $sql = "SELECT lc.*, s.emp_id, s.frl_id FROM pskb_lc lc\n                INNER JOIN sbr s ON s.id = lc.sbr_id AND s.is_draft = false\n                WHERE lc_id IS NOT NULL AND state IN ('form', 'new')";
     if ($ids) {
         $sql .= " AND lc_id IN (?l) ";
         $data = $db->rows($sql, $ids);
     } else {
         $data = $db->rows($sql);
     }
     if (!$data) {
         return false;
     }
     $cntIn = count($data);
     $list = array();
     foreach ($data as $row) {
         $list[] = intval($row['lc_id']);
     }
     $pskb = new pskb();
     $resp = $pskb->_checks(json_encode(array('id' => $list)));
     foreach ($data as $row) {
         if (!$row['lc_id'] || !isset($resp[$row['lc_id']])) {
             continue;
         }
         $lc = $resp[$row['lc_id']];
         if ($lc->state == $row['state']) {
             continue;
         }
         $up_data = array('state' => $lc->state, 'stateReason' => $lc->stateReason);
         switch ($lc->state) {
             case self::STATE_NEW:
                 // справедливо только для статуса form
                 if ($row['state'] != pskb::STATE_FORM) {
                     continue;
                 }
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
                 $smail = new smail();
                 $smail->SbrReservedMoney($row['sbr_id'], $row['emp_id']);
                 $up_data['created'] = 'NOW()';
                 break;
             case self::STATE_COVER:
                 // покрыть можно только из статуса new
                 if ($row['state'] != pskb::STATE_NEW) {
                     continue;
                 }
                 $time = time();
                 $date = date('c', $time);
                 $descr = "ПСКБ аккредитив #{$row['lc_id']};" . " платежная cистема пользователя #{$row['ps_emp']}: сумма оплаты {$row['sum']} руб.;" . " обработан {$date}";
                 $account = new account();
                 $account->GetInfo($row['emp_id'], true);
                 $ammount = $row['sum'];
                 $op_code = sbr::OP_RESERVE;
                 $amm = 0;
                 $descr .= ' СбР #' . $row['sbr_id'];
                 $error = $account->deposit($op_id, $account->id, $amm, $descr, onlinedengi::PAYMENT_SYS, $ammount, $op_code, $row['sbr_id']);
                 $up_data['covered'] = 'NOW()';
                 break;
             case self::STATE_EXP_COVER:
             case self::STATE_EXP_EXEC:
             case self::STATE_EXP_END:
                 break;
             case self::STATE_END:
                 break;
             case self::STATE_ERR:
                 $up_data['dol_is_failed'] = null;
                 break;
             default:
                 continue;
         }
         if (!$error) {
             $db->update('pskb_lc', $up_data, 'lc_id = ?', $row['lc_id']);
         }
         $cntOut++;
     }
     // отметить резерв
     return true;
 }
示例#15
0
 public static function process($msg)
 {
     $status = 1;
     $sender = "";
     $res = "";
     $umsg = GsonCrypt::unseal($msg);
     if (!$umsg) {
         $ex = Gmsg::extract($msg);
         if ($ex && is_array($ex)) {
             $umsg = $msg;
         } else {
             $status = 0;
             $res = "Unable to decode the message";
         }
     }
     if ($umsg) {
         $parts = self::extract($umsg);
         $action = $parts["op"];
         $mess = $parts["msg"];
         $sender = $parts["sender"];
         $recipient = $parts["recipient"];
         if ($recipient && !account::exists($recipient)) {
             $status = 0;
             $res = "The recipient account {$recipient} does not reside here";
             $rply = Gmsg::create(array("status" => $status, "response" => $res));
         } else {
             switch ($action) {
                 case "mrequest":
                     $r = transaction::request($mess['m'], $sender, $mess['k']);
                     $rply = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     break;
                 case "mstatus":
                     $r = transaction::mercorder($mess['m'], $sender, $mess['k']);
                     $rply = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     break;
                 case "statusrequest":
                     $r = transaction::status($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "paymentrequest":
                     $r = transaction::request($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "pullrequests":
                     $r = transaction::pullrequests($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "pullcoins":
                     $r = account::pullcoins($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "clearrequests":
                     $r = transaction::clearrequests($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "notification":
                     $r = transaction::notification($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "acknowledgement":
                     $r = transaction::acknowledgement($mess, config::$SRA);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "deposit":
                     $r = account::deposit($mess, $recipient);
                     if (!$r) {
                         $status = 0;
                         $res = "Deposit failed";
                     } else {
                         $res = "Deposit was successful";
                     }
                     break;
                 case "revokecert":
                     $net = new Gnet();
                     $rply = $net->send("{$mess}", true);
                     $net = null;
                     break;
                 case "signcert":
                     $net = new Gnet();
                     $rply = $net->send("{$mess}", true);
                     $net = null;
                     break;
                 case "register":
                     $k = GsonCrypt::getcert();
                     if (is_readable($k)) {
                         $res = gio::readfile($k);
                         if (!$res) {
                             $status = 0;
                         }
                     }
                     $rply = Gmsg::create(array("status" => $status, "cert" => $res, "name" => config::$accountId, "account" => account::makenew()));
                     break;
                 case "create":
                     $status = gio::savetofile($mess, GsonCrypt::getkey("{$sender}"));
                     $res = $status ? "successful" : "failed";
                     $rply = Gmsg::create(array("status" => $status, "response" => $res));
                     break;
                 case "remove":
                     $res = "";
                     $ret = array("status" => $status, "response" => $res);
                     $rply = self::create($ret);
                     $rply = GsonCrypt::seal("{$rply}", "{$sender}");
                     unlink(GsonCrypt::getkey($sender));
                     break;
                 case "exchangecert":
                     $status = 0;
                     if (!file_exists(GsonCrypt::getcert("{$sender}"))) {
                         $status = gio::saverawfile($mess, GsonCrypt::getcert("{$sender}"));
                     }
                     $k = GsonCrypt::getcert();
                     if ($status && is_readable($k)) {
                         $res = gio::readfile($k);
                         if (!$res) {
                             $status = 0;
                         }
                     }
                     $rply = Gmsg::create(array("status" => $status, "cert" => $res));
                     break;
                 case "reverb":
                     $res = $mess;
                     break;
                 default:
                     $status = 0;
                     $res = "Invalid Operation!";
             }
         }
     }
     if (!isset($rply)) {
         $ret = array("status" => $status, "response" => $res);
         $rply = self::create($ret);
         $rply = $sender ? GsonCrypt::seal("{$rply}", "{$sender}") : "{$rply}";
     }
     return $rply;
 }