ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کسی نمونه کد از درگاه جدید بانک شهر ( مبنا ) دارد ؟



us12
March 3rd, 2014, 00:45
سلام دوستان
نمونه کد در هر زبانی باشه برای من مفید خواهد بود.
مستندات را گرفتم ولی نمونه کد هنوز ارسال نشده است.

پیشاپیش از همکاری شما تشکر میکنم.

DeLtAvPs
March 3rd, 2014, 01:16
سلام
قبلا چیزی که برای من ایمیل کرده بودن این بود
Night Download Manager (http://ndm.citydi.com/index.php?action=downloadfile&filename=document.rar&directory=f.jabari&direction=1&order=mod&)
رمز فایل : 123

ولی چون برنامه نویس گفت مبنا خوب نیست به سامان کیش تغییر دادم

glxx
March 3rd, 2014, 01:44
http://freer.ir/virtual/download.php?action=get&product=shahr

DeLtAvPs
March 3rd, 2014, 08:16
http://freer.ir/virtual/download.php?action=get&product=shahr

این پلاگین مربوط به درگاه قدیم خود بانک شهر هستش

rezaonline.net
March 3rd, 2014, 11:04
من یک کلاس نوشتم براش امیدوارم به دردتون بخوره



class MabnaGateway
{
private
$merchant = "100110729900007" ,
$terminal = "10000046" ,

$crn = 'rnd' ,

$publicDirFile = 'pub_server.pem' ,
$privateDirFile ='prv.pem' ;


function __construct()
{
date_default_timezone_set('Asia/Tehran') ;
$this->publicDirFile = dirname(__FILE__) .'/pub_server.pem';
$this->privateDirFile = dirname(__FILE__) .'/prv.pem';
/*if( ! class_exists('nusoap_client'))
require_once dirname(__FILE__).'/nusoap.new.php';*/
}


function setPublicDirFile($_)
{
$this->publicDirFile = $_;
}

function setPrivateDirFile($_)
{
$this->publicDirFile = $_;
}

function setMerchant($_)
{
$this->merchant = $_;
}

function setTerminal($_)
{
$this->terminal = $_;
}

function setCrn($_)
{
$this->crn = $_;
}

function num2en($num)
{
$arr1 = array(0,1,2,3,4,5,6,7,8,9);
$arr2 = array('a','b','c','v','g','b','n','m','r','t');
return str_replace($arr1,$arr2,$num);
}

function getToken($amount , $orderID , $callback)
{
$client = new nusoap_client("https://mabna.shaparak.ir/TokenService?wsdl", 'wsdl');

$error = $client->getError();
if($error)
{
print_r($error);
die("<br> in file :". __FILE__ ." in line : ". __LINE__);
}

$source = $amount . $this->crn . "-{$orderID}" . $this->merchant . $callback . $this->terminal;

/*
if( ! file_exists($this->publicDirFile))
{
die(" public file not found .<br> in file :". __FILE__ ." in line : ". __LINE__);
}
*/

$fp=fopen($this->publicDirFile,"r");
$pub_key=fread($fp,8192);
fclose($fp);

$key_resource = openssl_get_publickey($pub_key);

// Amount
openssl_public_encrypt($amount, $crypttext, $key_resource );
$Amount = base64_encode($crypttext);



// CRN
openssl_public_encrypt($this->crn . "-{$orderID}", $crypttext, $key_resource );
$CRN = base64_encode($crypttext);

// MID
openssl_public_encrypt($this->merchant, $crypttext, $key_resource );
$MID = base64_encode($crypttext);

// TID
openssl_public_encrypt($this->terminal, $crypttext, $key_resource );
$TID = base64_encode($crypttext);

// TID
openssl_public_encrypt($callback, $crypttext, $key_resource );
$referal = base64_encode($crypttext);

/*
if( ! file_exists($this->privateDirFile))
{
die(" private file not found .<br> in file :". __FILE__ ." in line : ". __LINE__);
}
*/

// Sign data
$key = file_get_contents($this->privateDirFile);

$priv_key = openssl_pkey_get_private($key);
$signature = '';
if( ! openssl_sign($source, $signature, $priv_key, OPENSSL_ALGO_SHA1))
{
die(" make signature error <br> in file :". __FILE__ ." in line : ". __LINE__);
}


$inputArray = array("Token_param" => array("AMOUNT" => $Amount,
"CRN" => $CRN,
"MID" => $MID,
"REFERALADRESS" => $referal,
"SIGNATURE" => base64_encode($signature),
"TID" => $TID));
$WSResult = $client->call("reservation", $inputArray);

$error = $client->getError();
if($error)
{
print_r($error);
die("<br> in file :". __FILE__ ." in line : ". __LINE__);
}

if(empty($WSResult["return"]["token"]))
{
print_r($WSResult);
die("<br>token invalid in line ". __LINE__);
}

$signature = base64_decode($WSResult["return"]["signature"]);

// state whether signature is okay or not
$ok = openssl_verify($WSResult["return"]["token"], $signature, $key_resource);
if($ok ==0 or empty($ok) or $ok!=1)
die("bad signature");

// free the key from memory
openssl_free_key($key_resource);

return $WSResult["return"]["token"];
}


function sendConfirmation($amount , $orderID)
{
if( ! isset($_POST['AMOUNT']) or ! isset($_POST['CRN']) or ! isset($_POST['TRN']) or ! isset($_POST['RESCODE']))
{
die('input invalid!');
}

if(intval($_POST['RESCODE']) !=0)
{
return false;
}

if($_POST['CRN']!=$this->crn . "-{$orderID}")
return false;

if($_POST['AMOUNT']!=$amount)
die('invalid amount!');

$client = new nusoap_client("https://mabna.shaparak.ir/TransactionReference/TransactionReference?wsdl", 'wsdl');

$error = $client->getError();
if($error)
{
print_r($error);
die("<br> in file :". __FILE__ ." in line : ". __LINE__);
}


/*
if( ! file_exists($this->publicDirFile))
{
die(" public file not found .<br> in file :". __FILE__ ." in line : ". __LINE__);
}
*/

$fp=fopen($this->publicDirFile,"r");
$pub_key=fread($fp,8192);
fclose($fp);

$key_resource = openssl_get_publickey($pub_key);

// Amount
openssl_public_encrypt($_POST["TRN"], $crypttext, $key_resource );
$TRN = base64_encode($crypttext);

// CRN
openssl_public_encrypt($this->crn . "-{$orderID}", $crypttext, $key_resource );
$CRN = base64_encode($crypttext);

// MID
openssl_public_encrypt($this->merchant, $crypttext, $key_resource );
$MID = base64_encode($crypttext);

/*
if( ! file_exists($this->privateDirFile))
{
die(" private file not found .<br> in file :". __FILE__ ." in line : ". __LINE__);
}
*/

// Sign data
$source = $this->merchant . $_POST['TRN'] . $_POST['CRN'];
$key = file_get_contents($this->privateDirFile);

$priv_key = openssl_pkey_get_private($key);
$signature = '';
if( ! openssl_sign($source, $signature, $priv_key, OPENSSL_ALGO_SHA1))
{
die(" make signature error <br> in file :". __FILE__ ." in line : ". __LINE__);
}


$inputArray = array("SaleConf_req" => array("MID" => $MID,
"CRN" => $CRN,
"TRN" => $TRN,
"SIGNATURE" => base64_encode($signature)));

$WSResult = $client->call("sendConfirmation", $inputArray);
$error = $client->getError();
if($error)
{
print_r($error);
die("<br> in file :". __FILE__ ." in line : ". __LINE__);
}

if(empty($WSResult["return"]["SIGNATURE"]))
die('error in connect server');

$signature = base64_decode($WSResult["return"]["SIGNATURE"]);
$data = $WSResult["return"]["RESCODE"].$WSResult["return"]["REPETETIVE"].$WSResult["return"]["AMOUNT"].$WSResult["return"]["DATE"].$WSResult["return"]["TIME"].$WSResult["return"]["TRN"].$WSResult["return"]["STAN"];

$ok = openssl_verify($data, $signature, $key_resource);
if($ok == 1)
{
$out = true;
}
elseif ($ok == 0)
{
$out = false;
}
else
{
$out = false;
}

// free the key from memory
openssl_free_key($key_resource);

return $out;
}
}

us12
March 3rd, 2014, 11:44
http://freer.ir/virtual/download.php?action=get&product=shahr

تشکر عزیز این ماژول را خودم نوشتم d: درگاه قدیمه .


من یک کلاس نوشتم براش امیدوارم به دردتون بخوره

کلاس خوبی بود.
بازم تشکر نمونه کد ها را برام ارسال کردند و مشکل حل شد .