- Код: Выделить всё
<?php
class Robokassa
{
//>Public Section
public $login;
function __construct($login = null, $password1 = null, $password2 = null)
{
$this->init($login, $password1, $password2);
}
function init($login, $password1, $password2)
{
$this->login = $login;
$this->password1 = $password1;
$this->password2 = $password2;
}
function getJsForm($summa, $idOrder, $idItem, $itemDesc, $encoding = 'utf-8', $currency = 'PCR', $language = 'ru')
{
return
'<script language=JavaScript '.
'src="https://www.roboxchange.com/mrh_summpreview.asp?'.
'MrchLogin='.$this->login.
'&OutSum='.$summa.
'&InvId='.$idOrder.
'&IncCurrLabel='.$currency.
'&Desc='.$itemDesc.
'&SignatureValue='.$this->createCrc($summa, $idOrder, $idItem).
'&Shp_item='.$idItem.
'&Culture='.$language.
'&Encoding='.$encoding.
'"></script>';
}
function createCrc($summa, $idOrder, $idItem)
{
$crc =
$this->login.':'.
$summa.':'.
$idOrder.':'.
$this->password1.
':Shp_item='.$idItem;
return md5($crc);
}
// get status
function is_payed()
{
return $this->_check_crc($this->password1);
}
function is_ordered()
{
return $this->_check_crc($this->password2);
}
// get params
function getSumma()
{
return @$_REQUEST["OutSum"];
}
function getIdOrder()
{
return @$_REQUEST["InvId"];
}
function getIdItem()
{
return @$_REQUEST["Shp_item"];
}
function getCrc()
{
return @$_REQUEST["SignatureValue"];
}
//>Private Section
private $password1;
private $password2;
private function _check_crc($password)
{
$summa = $this->getSumma();
$idOrder = $this->getIdOrder();
$idItem = $this->getIdItem();
$crc = $this->getCrc();
$crc = strtoupper($crc);
$my_crc = $summa.':'.$idOrder.':'.$password.':Shp_item='.$idItem;
$my_crc = strtoupper(md5($my_crc));
return ($my_crc == $crc)?true:false;
}
}
?>
Пример:
- Код: Выделить всё
<?php
class Paying extends Controller
{
function Paying()
{
parent::Controller();
$this->load->library('Robokassa');
$this->robokassa->init('login', 'password1', 'password2');
}
function index()
{
$idItem = '19889'; // уникальный номер товарa
$summa = '5.96'; // стоимость товара
$itemDesc = 'Описание товара';
// уникальный номер заказа
$idOrder = $this->PayModel->createOrder($summa, $idItem);
echo $this->robokassa->getJsForm($summa, $idOrder, $idItem, $itemDesc);
}
function order()
{
if (!$this->robokassa->is_ordered())
{
die("bad sign\n");
}
$idOrder = $this->robokassa->getIdOrder();
echo "Заказ №: $idOrder оплачивается...\n";
}
function success()
{
if (!$this->robokassa->is_payed())
{
die("bad sign\n");
}
$idOrder = $this->robokassa->getIdOrder();
$summa = $this->robokassa->getSumma();
echo "Заказ №: $idOrder на сумму $summa успешно оплачен.\n";
}
function fail()
{
$idOrder = $this->robokassa->getIdOrder();
echo "Вы отказались от оплаты. Заказ №: $idOrder\n";
}
}
?>
