示例#1
0
 private function viewRobokassa()
 {
     if (!extension::getInstance()->getConfig('balance_use_rk', 'user', extension::TYPE_COMPONENT, 'boolean')) {
         exit("Robokassa API disabled");
     }
     require_once root . '/resource/payments/robokassa/robokassa.class.php';
     $init_rk = new Robokassa(extension::getInstance()->getConfig('balance_rk_id', 'user', extension::TYPE_COMPONENT, 'str'), extension::getInstance()->getConfig('balance_rk_key_1', 'user', extension::TYPE_COMPONENT, 'str'), extension::getInstance()->getConfig('balance_rk_key_2', 'user', extension::TYPE_COMPONENT, 'str'), extension::getInstance()->getConfig('balance_rk_test', 'user', extension::TYPE_COMPONENT, 'boolean'));
     $init_rk->OutSum = $amount = (double) system::getInstance()->post('OutSum');
     $init_rk->InvId = $transid = (int) system::getInstance()->post('InvId');
     $user_id = (int) system::getInstance()->post('shp_userid');
     $init_rk->addCustomValues(array('shp_userid' => $user_id));
     if (!$init_rk->checkHash($_POST['SignatureValue'])) {
         exit("Hash sum was wrong!");
     }
     $mul = $params['config']['balance_rk_mul'] = extension::getInstance()->getConfig('balance_rk_mul', 'user', extension::TYPE_COMPONENT, 'float');
     $amount *= $mul;
     user::getInstance()->addBalance($user_id, $amount);
     $payparam = array('amount' => $amount, 'sys_trans_id' => $transid);
     user::getInstance()->putLog($user_id, 'balance.rkadd', $payparam, 'Recharge balance via robokassa');
     echo "Success payment";
 }
 /**
  * Тест метода checkSuccessAndFailSignature
  */
 public function testCheckSuccessAndFailSignature()
 {
     $config = $this->_getConfig();
     $this->_setConfig();
     $invId = 1;
     $outSum = 2;
     $term = 3;
     $hash = md5($outSum . ':' . $invId . ':' . $config['pass1'] . ':' . 'shpa=' . $term);
     $testResult = Robokassa::checkSuccessAndFailSignature($invId, $outSum, $term, $hash);
     $this->assertEquals($testResult, true);
     $testResult = Robokassa::checkSuccessAndFailSignature($invId, $outSum, $term, 'wrong hash');
     $this->assertEquals($testResult, false);
 }
示例#3
0
}
if (isset($_REQUEST['Desc'])) {
    $order['Desc'] = filter_var($_REQUEST['Desc'], FILTER_SANITIZE_STRING);
}
if (isset($_REQUEST['name'])) {
    $order['name'] = filter_var($_REQUEST['name'], FILTER_SANITIZE_STRING);
}
if (isset($_REQUEST['email'])) {
    $order['email'] = filter_var($_REQUEST['email'], FILTER_SANITIZE_EMAIL);
}
if (isset($_REQUEST['phone'])) {
    $order['email'] = filter_var($_REQUEST['phone'], FILTER_SANITIZE_STRING);
}
// Database save row, and get this row ID
require_once API_ROOT_PATH . '/core/class/database/database.class.php';
require_once API_ROOT_PATH . '/core/config/pdo.config.php';
$db = new Database($pdoconfig_lander);
$id = $db->putOne('payments', $order);
// Подготовка запроса в Робокассу
$robokassa_data = array('InvId' => $id, 'Desc' => $order['Desc'], 'IncCurrLabel' => "", 'Culture' => "ru", 'Encoding' => "utf-8");
$robokassa_data = array_merge($robokassa_data, $order);
$robokassa = new Robokassa($robokassa_data, $payments_config['robokassa']);
$order['SignatureValue'] = $robokassa->genCRC2();
$db->updateOne('payments', $id, $order);
if (DEBUG) {
    print "payURL: " . $robokassa->payURL() . "\n";
    print_r($order);
    print_r($robokassa->resultArray());
} else {
    header('Location: ' . $robokassa->payURL());
}
示例#4
0
define('MODX_API_MODE', true);
require dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/index.php';
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');
/* @var miniShop2 $miniShop2 */
$miniShop2 = $modx->getService('minishop2');
$miniShop2->loadCustomClasses('payment');
if (!class_exists('Robokassa')) {
    exit('Error: could not load payment class "Robokassa".');
}
$context = '';
$params = array();
/* @var msPaymentInterface|Robokassa $handler */
$handler = new Robokassa($modx->newObject('msOrder'));
if (!empty($_REQUEST['SignatureValue']) && !empty($_REQUEST['InvId']) && empty($_REQUEST['action'])) {
    if ($order = $modx->getObject('msOrder', $_REQUEST['InvId'])) {
        $handler->receive($order, $_REQUEST);
    } else {
        $modx->log(modX::LOG_LEVEL_ERROR, '[miniShop2:Robokassa] Could not retrieve order with id ' . $_REQUEST['LMI_PAYMENT_NO']);
    }
}
if (!empty($_REQUEST['InvId'])) {
    $params['msorder'] = $_REQUEST['InvId'];
}
$success = $failure = $modx->getOption('site_url');
if ($id = $modx->getOption('ms2_payment_rbks_success_id', null, 0)) {
    $success = $modx->makeUrl($id, $context, $params, 'full');
}
if ($id = $modx->getOption('ms2_payment_rbks_failure_id', null, 0)) {
 /**
  * Проверка для success и fail одинаковая, так что, выносим в отдельный метод
  *
  * @param sfWebRequest $request
  * @return BillingTransaction
  */
 private function checkSuccessAndFailParams(sfWebRequest $request)
 {
     $userId = $this->getUser()->getUserRecord()->getId();
     // Получаем POST параметры
     $transactionId = (int) $request->getPostParameter("InvId", 0);
     $price = $request->getPostParameter("OutSum", 0);
     $signature = $request->getPostParameter("SignatureValue", "");
     $term = (int) $request->getPostParameter("shpa", 0);
     // Получаем транзакцию
     $transaction = Doctrine::getTable('BillingTransaction')->find($transactionId);
     $this->forward404Unless($transaction);
     // Проверяем ID пользователя
     $this->forward404Unless((int) $transaction->getUserId() == $userId);
     // Проверяем совпадение суммы
     $this->forward404Unless(floatval($transaction->getTotal()) == floatval($price));
     // Проверяем подпись
     $this->forward404Unless(Robokassa::checkSuccessAndFailSignature($transactionId, $price, $term, $signature));
     return $transaction;
 }
示例#6
0
 public function before()
 {
     parent::before();
     $config = Kohana::$config->load('payments.robokassa');
     $this->robokassa = Robokassa::factory($config['login'], $config['password1'], $config['password2']);
 }
示例#7
0
 private function viewUserBalance($target, $viewer)
 {
     if ($target != $viewer || !extension::getInstance()->getConfig('balance_view', 'user', extension::TYPE_COMPONENT, 'bol')) {
         return null;
     }
     $params = array();
     $params['config']['balance_use_webmoney'] = extension::getInstance()->getConfig('balance_use_webmoney', 'user', extension::TYPE_COMPONENT, 'int');
     $params['config']['balance_wm_purse'] = extension::getInstance()->getConfig('balance_wm_purse', 'user', extension::TYPE_COMPONENT, 'str');
     $params['config']['balance_wm_mul'] = extension::getInstance()->getConfig('balance_wm_mul', 'user', extension::TYPE_COMPONENT, 'float');
     $params['config']['balance_wm_test'] = extension::getInstance()->getConfig('balance_wm_test', 'user', extension::TYPE_COMPONENT, 'int');
     $params['config']['balance_valut_name'] = extension::getInstance()->getConfig('balance_valut_name', 'user', extension::TYPE_COMPONENT, 'str');
     $params['config']['balance_wm_type'] = "WM" . system::getInstance()->altsubstr($params['config']['balance_wm_purse'], 0, 1);
     $params['config']['balance_use_ik'] = extension::getInstance()->getConfig('balance_use_ik', 'user', extension::TYPE_COMPONENT, 'int');
     $params['config']['balance_ik_id'] = extension::getInstance()->getConfig('balance_ik_id', 'user', extension::TYPE_COMPONENT, 'str');
     $params['config']['balance_ik_mul'] = extension::getInstance()->getConfig('balance_ik_mul', 'user', extension::TYPE_COMPONENT, 'float');
     $params['config']['balance_ik_valute'] = extension::getInstance()->getConfig('balance_ik_valute', 'user', extension::TYPE_COMPONENT, 'str');
     $params['config']['balance_use_rk'] = extension::getInstance()->getConfig('balance_use_rk', 'user', extension::TYPE_COMPONENT, 'int');
     $params['config']['balance_rk_id'] = extension::getInstance()->getConfig('balance_rk_id', 'user', extension::TYPE_COMPONENT, 'str');
     $params['config']['balance_rk_mul'] = extension::getInstance()->getConfig('balance_rk_mul', 'user', extension::TYPE_COMPONENT, 'float');
     $params['config']['balance_rk_valute'] = extension::getInstance()->getConfig('balance_rk_valute', 'user', extension::TYPE_COMPONENT, 'str');
     if (system::getInstance()->post('rk_submit')) {
         $topay = (double) system::getInstance()->post('topay');
         require_once root . '/resource/payments/robokassa/robokassa.class.php';
         $init_rk = new Robokassa($params['config']['balance_rk_id'], extension::getInstance()->getConfig('balance_rk_key_1', 'user', extension::TYPE_COMPONENT, 'str'), extension::getInstance()->getConfig('balance_rk_key_2', 'user', extension::TYPE_COMPONENT, 'str'), extension::getInstance()->getConfig('balance_rk_test', 'user', extension::TYPE_COMPONENT, 'boolean'));
         $init_rk->OutSum = $topay;
         $init_rk->Desc = 'Recharge balance on ' . property::getInstance()->get('url') . '. Userid: ' . $target;
         $init_rk->Culture = language::getInstance()->getUseLanguage();
         $init_rk->addCustomValues(array('shp_userid' => $target));
         header('Location: ' . $init_rk->getRedirectURL());
         exit("Browser not support header accept. Payment: <a href='" . $init_rk->getRedirectURL() . "'>Start pay</a>");
     }
     $stmt = database::getInstance()->con()->prepare("SELECT * FROM " . property::getInstance()->get('db_prefix') . "_user_log WHERE `owner` = ? and `type` like 'balance.%' ORDER BY `time` DESC LIMIT 0,50");
     $stmt->bindParam(1, $target, \PDO::PARAM_INT);
     $stmt->execute();
     $resultAll = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt = null;
     foreach ($resultAll as $row) {
         $data_array = unserialize($row['params']);
         $params['balancelogs'][] = array('id' => $row['id'], 'type' => $row['type'], 'message' => $row['message'], 'date' => system::getInstance()->toDate($row['time'], 'h'), 'amount' => $data_array['amount']);
     }
     return $this->viewUserProfileHeader($target, $viewer, $params);
 }