PDA

View Full Version : حرفه ای: آموزش کامل راه اندازی و پیاده سازی درگاه پرداخت بانک سامان با زبان PHP



ghiravani
چهارشنبه 29 تیر 1390, 01:10 صبح
با سلام.دوستان خسته نباشید.با توجه به اینکه خیلی از دوستان برای پیاده سازی درگاه بانک سامان مشکل داشتن.تصمیم گرفتم آموزش کامل رو در یه مبحث قرار بدم.
ابتدا از جناب saidshp (http://forum.majidonline.com/member.php?u=80322) ممنونم بخاطر اینکه یک کلاس برای پرداخت بانک سامان نوشته بودن و در سایت مجید آنلاین قرار دادن.البته قسمتی از این کلاس مشکل داشت که باعث نمایش پیام های اشتباه بعد از ارجاع خریدار به سایت فروشنده توسط بانک سامان میشد.
تمام فایل های مورد نیاز شما در ضمیمه همین پست قرار داره.حتی همین آموزشی که اینجا نوشتم در فایل PDF در ضمیمه وجود داره.
خب من همه چی رو تقریبا از اول کار خدمتتون عرض میکنم:
برای راه اندازی درگاه اینترنتی بانک سامان ابتدا به سایت پرداخت الکترونیک بانک سامان به آدرس www.sep.ir (http://www.sep.ir/) مراجعه کنید.از قسمت "سفارش محصولات" به قسمت "درخواست درگاه اینترنتی (http://sep.ir/PortalTerms.aspx)" مراجعه کرده و مدارک مورد نیاز برای ثبت نام را تکمیل نمایید.
دقت کنید که هنگام تکمیل فرم ، به آدرس IP سرور سایتتان نیاز خواهد بود.این آدرس برای انجام عملیات پرداخت بسیار مهم است.از درست بودن آن اطمینان حاصل کنید.
پس از تکمیل ثبت نام و انجام مراحل اداری ، ایمیلی شامل فایل PDF راهنما ، "sample code" ، لوگوی بانک ، کد فروشنده (Merchant ID) ، رمز پذیرنده و اطلاعات حساب شما ، برایتان ایمیل خواهد شد.
برای انجام ادامه مراحل ، ابتدا باید جدولی با مشخصات زیر در پایگاه داده هاست خود بسازید (می توانید با کمک phpMyAdmin هاست خود ، این کار را انجام دهید.برای این کار ، قبل از ورود به phpMyAdmin ، یک تیبل بسازید و سپس در برنامه phpMyAdmin ، این تیبل را انتخاب کرده و در قسمت SQL ، دستورات زیر را قرار دهید.در دستورات تغییری انجام ندهید.)


CREATE TABLE sbpayment (id INT(10) NOT NULL AUTO_INCREMENT,
res_num CHAR(20) NOT NULL,
ref_num CHAR(20) NOT NULL,
total_amont INT NOT NULL,
payment INT NOT NULL DEFAULT 0,
date_start INT(12) NOT NULL,
primary key(id),
unique(res_num),
index(ref_num));

دستورات بالا در فایل ضمیمه به نام "Table.txt" نیز وجود دارد.
حال در فایل های ضمیمه ، فایل "sbpayment.php" را باز کنید.
در خط 31 ، داریم:

public $redirectURL = 'http//www.yourdomain.com/example.php';


مسیری از هاستتان که فایل " example.php" را آپلود کردید ، در فایل "sbpayment.php" ، خط 31 ، ویرایش کنید.




حال فایل "example.php" را ویرایش کنید:
در خط 9 و 10 اطلاعات کانکشن و نام کاربری و رمز کانکشن خود را وارد نمایید.
در خط 11 داریم:

$sb = new SBPayment("merchantID","password");



با توجه به اطلاعاتی که بانک برایتان ارسال کرده است ، بجای "merchantID" ، کد پذیرنده و بجای "password" ، رمز پذیرنده را قرار دهید.



حال پوشه "PHP" و فایل های "example.php" و "sbpayment.php" را به هاستی که به بانک معرفی کردید انتقال دهید.


همین دیگه.
موفق باشید

هادی2020
سه شنبه 29 شهریور 1390, 20:52 عصر
امکان داره در مورد پرداخت کارت به کارت و بدست آوردن میزان موجودی حساب با مثال توضیح بدید.
کدام بانکها در پرداخت اینترنتی کارمزد دریافت میکنند؟
آیا امکان داره به این شیوه با ارسال تاریخ و شماره فیش پرداختی مشتری(پرداخت در بانک) از صحت پرداخت آگاه شویم؟

parsidev
سه شنبه 29 شهریور 1390, 22:56 عصر
امکان داره در مورد پرداخت کارت به کارت و بدست آوردن میزان موجودی حساب با مثال توضیح بدید.
کدام بانکها در پرداخت اینترنتی کارمزد دریافت میکنند؟
آیا امکان داره به این شیوه با ارسال تاریخ و شماره فیش پرداختی مشتری(پرداخت در بانک) از صحت پرداخت آگاه شویم؟

در حال حاضر هیچ بانکی اجازه نمیده شما از طریق وب سرویس چنین کاری کنید!

parsidev
سه شنبه 29 شهریور 1390, 22:57 عصر
سلام دوست خوب
مگه راهنمایی که خود بانک ارائه می کنه چه مشکلی داره؟

هادی2020
شنبه 02 مهر 1390, 16:48 عصر
در حال حاضر هیچ بانکی اجازه نمیده شما از طریق وب سرویس چنین کاری کنید!
چقدر بد:ناراحت:
در مورد کارمزد نظرتون چیه؟

mamali-mohammad
شنبه 02 مهر 1390, 18:38 عصر
داداش میتونی بانک پارسیان هم آموزش بدی؟
ممنونت میشم
به شدت نیاز دارم

mamali-mohammad
یک شنبه 03 مهر 1390, 17:16 عصر
کسی نیست آموزش بده ؟
ممنون

هادی2020
شنبه 09 مهر 1390, 18:56 عصر
کسی نظری راجع به سوالات مطرح شده نداره ما مشتاق دانش مفید هستیم:لبخندساده:

parsidev
دوشنبه 11 مهر 1390, 12:39 عصر
چقدر بد:ناراحت:
در مورد کارمزد نظرتون چیه؟
کارمزد چی؟!

parsidev
دوشنبه 11 مهر 1390, 12:41 عصر
داداش میتونی بانک پارسیان هم آموزش بدی؟
ممنونت میشم
به شدت نیاز دارم
یه تماس بگیرین شرکت پرداخت الکترونیک بانک پارسیان , از آقای حمید درزی بخواین فایلهای نمونه پرداخت رو براتون بفرسته...

shahinshyd
پنج شنبه 14 مهر 1390, 20:30 عصر
برای راه اندازی این سیستم دوستان کدوم مورد رو پیشنهاد میدند
قرارداد با بانک که باید چک و ضمانت هم بدیم و یا از سیستم های واسط استفاده کنیم
راه دیگه ای هم واسه راه اندازی پرداخت اینترنتی هست؟ مثلا ما شماره فیش رو از کاربر میگیریم حالا مشتری یا با خود پرداز و یا اینترنتی پول پرداخت کرده و درسایت شماره فیش بررسی شده که سایت هم باید به حساب فروشنده متصل بشه و در صورت صحت شماره پیگیری بده
در این روش هم باید قرار داد ببندیم؟:افسرده:

shahinshyd
جمعه 15 مهر 1390, 23:01 عصر
از اساتید کسی تاحالا این سیستم رو راه اندازی نکرده؟

parsidev
یک شنبه 17 مهر 1390, 15:02 عصر
سلام
در قرارداد با بانک نیازی به چک و سفته ندارین... فقط باید مجوز کسب داشته باشین یا (شخص حقوقی) باشین
معمولا از همه جا از هر دو مورد استفاده می کنند

ayub_coder
یک شنبه 24 مهر 1390, 15:51 عصر
دوستان برای بانک پارسیان لازم دارم. آیا اینو میشه واسه پارسیان هم استفاده کرد؟ کسی می تونه راهنمایی کنه؟

parsidev
سه شنبه 10 آبان 1390, 20:34 عصر
نه نمیشه. نشانی وب سرویس بانک ها متفاته و احتمالا پارامتر ها هم متفاوت باشه

all pachino
سه شنبه 17 آبان 1390, 12:45 عصر
با سلام
من سایتی با dreamweaver درست کردم یعنی بدون برنامه نویسی که خودم انجام داده باشم. بعد اقدام کردم واسه درگاه الکترونیک سامان
الان کد پذیرنده و رمز پذیرنده و ... را از بانک سامان تحویل گرفتم. 2 تا فایلم دادن (reverse , verify) راستش هیچی از برنامه نویسی نمیدونم ولی php my admin رو نصب کردم و داخل database یک فایل به نام table درست کردم. نمیدونم این همون table که شما گفتید یا نه.
راهی هست که کد php که شما دادید را در کنار script های سایت قرار بدم؟
چطوری example / sbpayament را از داخل چه برنامه ای اصلاح و از طریق چه برنامه ای داخل سایت بذارم؟
ممنون میشم ساده تر توضیح بدید و راهنمایی کنید تا بتونم این درگاه را داخل سایت قرار بدم
با تشکر

alireza.stack
یک شنبه 20 آذر 1390, 06:22 صبح
با سلام
من سایتی با dreamweaver درست کردم یعنی بدون برنامه نویسی که خودم انجام داده باشم. بعد اقدام کردم واسه درگاه الکترونیک سامان
الان کد پذیرنده و رمز پذیرنده و ... را از بانک سامان تحویل گرفتم. 2 تا فایلم دادن (reverse , verify) راستش هیچی از برنامه نویسی نمیدونم ولی php my admin رو نصب کردم و داخل database یک فایل به نام table درست کردم. نمیدونم این همون table که شما گفتید یا نه.
راهی هست که کد php که شما دادید را در کنار script های سایت قرار بدم؟
چطوری example / sbpayament را از داخل چه برنامه ای اصلاح و از طریق چه برنامه ای داخل سایت بذارم؟
ممنون میشم ساده تر توضیح بدید و راهنمایی کنید تا بتونم این درگاه را داخل سایت قرار بدم
با تشکر

دوست عزیز بدون یادگیری برنامه نویسی در میانه ی کار حتما به مشکل می خورید:
1- چگونه می خواهید از طریق کدنویسی با درگاه ارتباط برقرار کنید؟
2-چگونه جداول رو میخواهید طراحی کنید؟
3-چگونه در کدنویسی می خواهید با بانک ارتباط برقرار کنید؟
و بسیاری سوال دیگر که در یک پست نمی شود همه را گفت...

ebi_alex_juve
دوشنبه 05 دی 1390, 14:40 عصر
سلام
میتونی این آموزش واسه asp.net هم بزاری ؟ ممنون می شم

irGeek
دوشنبه 05 دی 1390, 17:11 عصر
میتونی این آموزش واسه asp.net هم بزاری ؟ ممنون می شم مهندس اینجا تالار php هستش شما در تالار asp.net چنین سوالی بپرسی زودتر به جواب می رسی تا اینجا!

deamondisk
یک شنبه 23 بهمن 1390, 05:42 صبح
سلام
از كدي كه قرار داديد متشكرم .من از اين كد استفاده كردم .پرداخت انجام ميشه و اطلاعات هم در ديتابيس ذخيره ميشه . اما بعد از پرداخت هيچ پيغامي مبني بر اينكه پرداخت موفقيت آميز بوده نشون دادن نميشه و جايي هم براي تاييد فروشنده براي ارسال به بانك نداره . بايد چيكار كنم ؟ اگه محبت كنيد و راهنمايي كنيد ممنون ميشم.

deamondisk
دوشنبه 24 بهمن 1390, 12:14 عصر
این کلاس مشکلش چیه که ؟
من تا جایی که تونستم بررسی و دست کاریش کردم
اگه تراکنش رو کنسل کنی ارورر درست میده وگرنه هیچ پیغامی نمیده
این قسمت فراخوانیش که درست عمل میکنه

<?php
ob_start();
header("content-type: text/html; charset=utf-8");

include './PHP/nusoap.php';
include './sbpayment.php';


$conn = mysql_connect('localhost','amircloo_sana','Sana198 6');
mysql_select_db('amircloo_sana',$conn);

$sb = new SBPayment("02137708-133526","449082");

if( isset($_POST['State']) ){
$State = $_POST['State'];
$RefNum = $_POST['RefNum'];
$ResNum = $_POST['ResNum'];

$sb->receiverParams($ResNum,$RefNum,$State);
$sb->getMsg('display');
} elseif( isset( $_POST['submit'] ) ) {

if( $sb->saveStoreInfo( $_POST['totalAmont'],$_POST['name'],$_POST['phone'],$_POST['email'],$_POST['tozih'] ) ) {
$sb->sendParams();
} else {
$sb->getMsg('display');
}
} else { ?>

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" />
name<input name="name" type="text"><br/>
email<input name="email" type="text"><br/>
phone<input name="phone" type="text"><br/>
desc<input name="tozih" type="text"><br/>
مبلغ سفارش<input type="text" name="totalAmont" /><br/>
<input type="submit" name="submit" value="payment" />
</form>
<?php } ?>

توی خط 14 تا 20 که میشه اینم کدها

if( isset($_POST['State']) ){
$State = $_POST['State'];
$RefNum = $_POST['RefNum'];
$ResNum = $_POST['ResNum'];

$sb->receiverParams($ResNum,$RefNum,$State);


توی کلاس هم ارورها کامل تعریف شده

اینم کلاسش



<?php

/*
CREATE TABLE sbpayment (id INT(10) NOT NULL AUTO_INCREMENT,
res_num CHAR(20) NOT NULL,
ref_num CHAR(20) NOT NULL,
total_amont INT NOT NULL,
payment INT NOT NULL DEFAULT 0,
date_start INT(12) NOT NULL,
primary key(id),
unique(res_num),
index(ref_num));
*/

class SBPayment
{

public $action = 'https://acquirer.sb24.com/CardServices/controller';

public $webMethodURL = 'https://Acquirer.sb24.com/ref-payment/ws/ReferencePayment?WSDL';

public $redirectURL = 'http://www.sanarayan.ir/test.php';

public $totalAmont;
public $name;
public $phone;
public $email;
public $tozih;

public $refNum;

public $resNum;

protected $payment;

protected $merchantID;

protected $password;

protected $msg = array();

protected $errorState = array(
'Canceled By User' => 'تراکنش بوسیله خریدار کنسل شده',
'Invalid Amount' => 'مبلغ سند برگشتی از مبلغ تراکنش اصلی بیشتر است',
'Invalid Transaction' => 'درخواست برگشت تراکنش رسیده است در حالی که تراکنش اصلی پیدا نمی شود',
'Invalid Card Number' => 'شماره کارت اشتباه است',
'No Such Issuer' => 'چنین صادر کننده کارتی وجود ندارد',
'Expired Card Pick Up' => 'از تاریخ انقضای کارت گذشته است',
'Incorrect PIN' => 'رمز کارت اشتباه است pin',
'No Sufficient Funds' => 'موجودی به اندازه کافی در حساب شما نیست',
'Issuer Down Slm' => 'سیستم کارت بنک صادر کننده فعال نیست',
'TME Error' => 'خطا در شبکه بانکی',
'Exceeds Withdrawal Amount Limit' => 'مبلغ بیش از سقف برداشت است',
'Transaction Cannot Be Completed' => 'امکان سند خوردن وجود ندارد',
'Allowable PIN Tries Exceeded Pick Up' => 'رمز کارت 3 مرتبه اشتباه وارد شده کارت شما غیر فعال اخواهد شد',
'Response Received Too Late' => 'تراکنش در شبکه بانکی تایم اوت خورده',
'Suspected Fraud Pick Up' => 'اشتباه وارد شده cvv2 ویا ExpDate فیلدهای'
);

protected $errorVerify = array(
'-1' => 'خطای داخلی شبکه',
'-2' => 'سپرده ها برابر نیستند',
'-3' => 'ورودی ها حاوی کاراکترهای غیر مجاز میباشد',
'-4' => 'کلمه عبور یا کد فروشنده اشتباه است',
'-5' => 'خطای بانک اطلاعاتی',
'-6' => 'سند قبلا برگشت کامل خورده',
'-7' => 'رسید دیجیتالی تهی است',
'-8' => 'طول ورودی ها بیشتر از حد مجاز است',
'-9' => 'وجود کارکترهای غیر مجاز در مبلغ برگشتی',
'-10' => 'رسید دیجیتالی حاوی کارکترهای غیر مجاز است',
'-11' => 'طول ورودی ها کمتر از حد مجاز است',
'-12' => 'مبلغ برگشتی منفی است',
'-13' => 'مبلغ برگشتی برای برگشت جزیی بیش از مبلغ برگشت نخورده رسید دیجیتالی است',
'-14' => 'چنین تراکنشی تعریف نشده است',
'-15' => 'مبلغ برگشتی به صورت اعشاری داده شده',
'-16' => 'خطای داخلی سیستم',
'-17' => 'برگشت زدن تراکنشی که با کارت بانکی غیر از بانک سامان انجام شده',
'-18' => 'فروشنده نامعتبر است ip address'
);

public $style = array('TableBorderColor' => '',
'TableBGColor' => '',
'PageBGColor' => '',
'PageBorderColor' => '',
'TitleFont' => '',
'TitleColor' => '',
'TitleSize' => '',
'TextFont' => '',
'TextColor' => '',
'TextSize' => '',
'TypeTextColor' => '',
'TypeTextColor' => '',
'TypeTextSize' => '',
'LogoURI' => ''
);

function __construct($mID = '',$pass = '')
{
$this->merchantID = $mID;
$this->password = $pass;

}

protected function createResNum()
{
do{
$m = md5(microtime());
$resNum = substr($m,0,20);
$search = mysql_query("SELECT res_num FROM sbpayment WHERE res_num = '$resNum'");
if( mysql_num_rows($search) < 1 ) {
break;
}
}while( true );
$this->resNum = $resNum;
}

protected function searchResNum( $resNum )
{
$search = mysql_query( "select * FROM sbpayment WHERE res_num='$resNum'");
if ( mysql_num_rows( $search ) < 1 ) {
return false;
}
return mysql_fetch_assoc( $search );
}

protected function searchRefNum( $refNum )
{
$search = mysql_query( "select * FROM sbpayment WHERE ref_num = '$refNum'" );
if ( mysql_num_rows( $search ) < 1 ) {
return false;
}
return mysql_fetch_assoc( $search );
}

protected function saveBankInfo( $payment )
{
$this->payment = $payment;
return mysql_query( "UPDATE sbpayment SET ref_num = '$this->refNum' ,payment = '$payment' WHERE res_num = '$this->resNum'" ) or $this->setMsg(mysql_error());
}

public function saveStoreInfo( $totalAmont,$name,$phone,$email )
{
if( $totalAmont == '' ) {
$this->setMsg( "Error: TotalAmont" );
return false;
}
$time = time();
$this->totalAmont = $totalAmont;
$this->name = $name;
$this->phone = $phone;
$this->email = $email;
$this->tozih = $tozih;
$this->createResNum();
return mysql_query( "INSERT INTO sbpayment SET res_num = '$this->resNum', total_amont = '$this->totalAmont',name = '$this->name' , phone = '$this->phone ' , email = '$this->email',tozih = '$this->tozih',date_start = $time" ) or $this->setMsg(mysql_error());
}

public function receiverParams( $resNum = '' , $refNum = '' ,$state = '' )
{
if( ( empty($state) or empty($resNum) or strlen($refNum) != 20 ) or $state != 'OK' ) {
if(isset($this->errorState[$state])) {
$this->setMsg( 'state',$state );
} else {
$this->setMsg("error state");
}
return false;
}

$searchResNum = $this->searchResNum( $resNum );

if( is_array( $searchResNum ) ) {
if( $searchResNum['payment'] > 0) {
$this->setMsg( "لطفا به قسمت رهگیری سفارش مراجعه کنید" );
return false;
}
} else {
$this->setMsg("همچین تراکنشی در سمت فروشنده تعریف نشده");
return false;
}

$this->refNum = $refNum;
$this->resNum = $resNum;
$this->totalAmont = $searchResNum['total_amont'];

return $this->lastCheck();
}


protected function lastCheck()
{
if( empty($this->resNum) or strlen($this->refNum) != 20 ) {
$this->setMsg( "Error: resNum or refNum is empty" );
return false;
}
//web method verify transaction
$verify = $this->verifyTrans();

if( $verify > 0 ) {
if( $verify == $this->totalAmont ) {

$this->saveBankInfo( $verify );
$this->setMsg("پرداخت با موفقیت انجام شد لطفا کد رهگیری را یادداشت کنید");
$this->setMsg( "$this->resNum"." : کد رهگیری " );
return true;


} elseif( $verify > $this->totalAmont ) {

//web method partial reverse transaction
$revAmont = $verify - $this->totalAmont;
$reverse = $this->reverseTrans( $revAmont );

$this->setMsg("کاربر گرامی مبلغ پرداختی بیش از مبلغ درخواستی است");
if( $reverse == 1 ) {
$this->setMsg("مابقی مبلغ پرداخت شده به حساب شما برگشت خورده");
$this->saveBankInfo( $this->totalAmont );
} else {
$this->setMsg( 'verify',$reverse );
$this->setMsg( "ما بقی مبلغ پرداختی شما در اینده ای نزدیک به حساب شما برگشت خواهد خورد " );
$this->saveBankInfo( $verify );
}
$this->setMsg("پرداخت با موفقیت انجام شد لطفا کد رهگیری را یادداشت کنید");
$this->setMsg( "$this->resNum"." : کد رهگیری " );
return true;


} elseif( $verify < $this->totalAmont ) {

//web method full reverse transaction
$rev = $this->reverseTrans( $verify );
$this->setMsg("مبلغ پرداختی شما کمتر از مباغ سفارش است ");
if( $rev == 1 ) {
$this->setMsg("کل مبلغ پرداختی به حساب شما برگشت خورده");
$this->saveBankInfo( 0 );
} else {
$this->setMsg("در اینده ای نزدیک کل مبلغ پرداختی به حساب شما برگشت خواهد خورد لطفا برای پی گیری کد رهگیری را یادداشت کنید");
$this->setMsg( "$this->resNum"." : کد رهگیری " );
$this->setMsg( 'verify',$rev );
$this->saveBankInfo( $verify );
}
return false;
}
//Error transaction
} elseif ( $verify < 0 or $verify == false ) {
$this->setMsg( "کاربر گرامی مشکلی در تایید پرداخت پیش امده" );
$this->setMsg( 'verify',$verify );
$this->saveBankInfo( 0 );
return false;
}
}
protected function verifyTrans()
{
if(empty($this->refNum) or empty($this->merchantID) ) {
return false;
}
$soapClient2 = new soapclient2( $this->webMethodURL,'wsdl' );
$soapProxy = $soapClient2->getProxy();
$result = false;

for( $a=1;$a<6;++$a ) {
$result = $soapProxy->verifyTransaction( $this->refNum,$this->merchantID );
if( $result != false ) {
break;
}
}
return $result;
}

protected function reverseTrans( $revNumber )
{
if( $revNumber <= 0 or empty($this->refNum) or empty($this->merchantID) or empty($this->password) ) {
return false;
}
$soapClient2 = new soapclient2( $this->webMethodURL,'wsdl' );
$soapProxy = $soapClient2->getProxy();
$result = false;

for( $a=1;$a<6;++$a ) {
$result = $soapProxy->reverseTransaction( $this->refNum,$this->merchantID,$this->password,$revNumber );
if( $result != false )
break;
}
return $result;
}

public function sendParams()
{

if ( $this->totalAmont <= 0 or empty($this->action) or empty($this->redirectURL) or empty($this->resNum) or empty($this->merchantID) ) {
$this->setMsg( "Error: function sendParams()" );
return false;
}
$form = "<html>";
$form .= "<body onLoad=\"document.forms['sendparams'].submit();\" >";
$form .= "<form name=\"sendparams\" method=\"POST\" action=\"$this->action\" enctype=\"application/x-www-form-urlencoded\" >\n";
foreach ( $this->style as $key=>$val ) {
if( $val != '' ) {
$form .= "<input type=\"hidden\" name=\"$key\" value=\"$val\" />\n";
}
}
$form .= "<input type=\"hidden\" name=\"Amount\" value=\"$this->totalAmont\" />\n";
$form .= "<input type=\"hidden\" name=\"ResNum\" value=\"$this->resNum\" />\n";
$form .= "<input type=\"hidden\" name=\"MID\" value=\"$this->merchantID\" />\n";
$form .= "<input type=\"hidden\" name=\"RedirectURL\" value=\"$this->redirectURL\" />\n";
$form .= "</form>";
$form .= "</body>";
$form .= "</html>";

print $form;
}

protected function setMsg($type='',$index='')
{
if ( $type == 'state' and isset( $this->errorState[$index] ) ) {
$this->msg[] = $this->errorState[$index];

} elseif( $type == 'verify' and isset($this->errorVerify[$index]) ) {
$this->msg[] = $this->errorVerify[$index];

} elseif( $type != 'verify' and $type != 'state') {
$this->msg[] = "$type";
}
}

public function getMsg($dis='')
{
if( count($this->msg) == 0 ) return array();
if( $dis == 'display' ) {
$msg = "<ul>\n";
foreach ( $this->msg as $v ) { $msg .= "<li> $v </li>\n"; }
$msg .= "</ul>\n";
return print $msg;
}
return $this->msg;
}
}


?>


مشکلش اینجاست که وقتی از بانک برپشتیم میاد بررسی کنه توی خط 158 کلاس که اگه ایراد داشت نمایش بده
اگه تراکنش ایرادی نداشت فانکشن بعدی رو فراخوانی میکنه که مبلغ ها و بقیه کارها رو چک کنه ولی اینجاش درست کار نمیکنه خط 158

return $this->lastCheck();
}


protected function lastCheck()
و هیچ خروجی نشون نمیده
چند روز دارم موهام و میکنم از دستش نمیدونم چشه :shock: کسی میتونه کمک کنه ؟؟

deamondisk
چهارشنبه 26 بهمن 1390, 07:21 صبح
یعنی کسی نیست این رو بدونه ؟؟؟؟ :shock:

MMSHFE
چهارشنبه 26 بهمن 1390, 07:57 صبح
یکی از دوستان سؤالی پرسیده بود: همه شما دوستانی که از این اسکریپتها استفاده کردین، فرم قرارداد پر کردین و جواز کسب یا آگهی ثبت شرکت در روزنامه رسمی رو ارائه دادین یا بدون اینها هم میشه یک سیستم پرداخت آنلاین شخصی داشته باشیم؟

parsidev
چهارشنبه 26 بهمن 1390, 10:00 صبح
بدون قرارداد نمیشه... و قرارداد هم بدون جواز کسب منعقد نمیشه

deamondisk
جمعه 28 بهمن 1390, 21:02 عصر
بچه ها کسی نمیتونه این مشکل رو حل کنه ؟

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

delphi2006
سه شنبه 08 بهمن 1392, 12:25 عصر
منم همین مشکلو دارم

Sepax1
چهارشنبه 09 بهمن 1392, 13:50 عصر
اگه کسی بتونه ایراد این کلاسو رفع کنه ممنونش میشیم

foadiii
شنبه 10 اسفند 1392, 18:37 عصر
با تشکر از آموزش بسیار خوبتون یه سوال داشتم اگه لطف کنید راهنمایی نمائید خیلی ممنون میشم من از طریق جهان پی درگاه سامان رو گرفتم اما نمی دونم چجوری میشه فعالش کرد لطفا راهنمایی نمائید

fakhim
یک شنبه 24 فروردین 1393, 13:48 عصر
سلام و ممنن بابت راهنمایتون
من تمام کارایی که گفتین رو انجام دادم ولی پیام خطای پایین رو میده اگه امکانش هست راهنمایی بفرمایید

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/smir/public_html/bank/saman/sbpayment.php on line 27


با تشکر

seyed_software
پنج شنبه 15 خرداد 1393, 20:11 عصر
سلام
من مدیر یک فروشگاه اینترنتی هستم
زبان سایت php هست
چند وقت قبل درگاه سامان گرفتم از خود بانک
در قسمت مدیریت فروشگاه ماژولش رو نصب کردم و اصلاحات جزئی رو خودم انجام دادم. مثل آدرس جدید سایت بانک که به شاپرک تبدیل شده بود و غیره

وقتی تو فروشگاه خریدی انجام میشه؛ کاربر بعد از تکمیل مشخصات و آدرس به سایت بانک ارجاع میشه
اونجا مشخصات کارتش رو وارد میکنه و تایید رو میزنه
صفحه بانک اعلام میکنه که عملیات انجام شد و اینجا باید کاربر رو به فروشگاه برگردونه
مشکل دقیقا اینجاست

Fatal error: Class 'soapclient' not found in /home/jananco/domains/janan.ir/public_html/eshop
/includes/saman.php(1) : eval()'d code on line 39

این پیغام نمایش داده میشه
و فروشگاه هم خرید رو تایید نمیکنه و چون تایید نمیکنه بانک بعد از ده دقیقه خرید رو برگشت میزنه

نمیدونم مشکل از سوآپ هست یا جای دیگه
اگه میشه راهنمایی دقیق لطفا

ممنون

mohammad.g17@gmail.com
یک شنبه 17 خرداد 1394, 23:49 عصر
با سلام
من این اررور ها را دریافت کردم
مشکل از کجاست؟
Deprecated: Assigning the return value of new by reference is deprecated in /home/serverir/public_html/saman/PHP/nusoap.php on line 4950

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/serverir/public_html/saman/sbpayment.php on line 115


No database selected

fatima-php
دوشنبه 18 خرداد 1394, 11:36 صبح
خطای اولی که داره میگه توی nusoap از ارسال پارامتر ارجاعی با return استفاده شده که منسوخ شده. با این کد میتونید خطا رو مخفی کنید:

error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED);
اما درمورد خطای دوم، کوئری شما خطا داشته و درنتیجه mysql_query بجای یک resource مقدار false برگردونده. با mysql_error خطا رو چاپ کنید و کوئری رو اصلاح کنید.

zizizizizizizi
دوشنبه 20 اردیبهشت 1395, 11:17 صبح
با سلام و تشکر از آموزش خوبتون
من تمام مراحل رو انجام دادم
خرید توسط سایت انجام میشه و هیچ مشکلی نداره
اما مشکل اینجاست که در هنگام بازگشت به example.php با اخطار error state رو به رو میشم؟؟؟؟؟؟
دیتابیس هم اطلاعات رو میگیره اما ref_num خالی میمونه
اگه کمک کنید ممنون میشم.

ebi711
دوشنبه 20 اردیبهشت 1395, 23:25 عصر
این کد ها به کلی اشتباه است سال 90 نمونه کدهاش درج شده اما سال 94 بسیاری از کد ها بروز شدن...کسی این کد ها را رو سرورش آپلود نکنه که به هیچ عنوان جواب نمیگیره

javad_sh
سه شنبه 17 بهمن 1396, 13:47 عصر
سلام دوستان و اساتید گرامی

کسی نمونه کدهای جدید و بروز شده رو داره