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: درگاه قدیمه .
من یک کلاس نوشتم براش امیدوارم به دردتون بخوره
کلاس خوبی بود.
بازم تشکر نمونه کد ها را برام ارسال کردند و مشکل حل شد .
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.