M.Javad 684 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 سلام یکی از دوستان درگاه بانک رفاه سفارش داده که یه سری مستندات فرستادند ولی هیچ فایل سمپل یا نمونه نفرستادند حالا موندم چطوری باید پیاده سازی کنم اگه کسی اطلاعی در مورد این بانک داره لطفا راهنمایی کنهفقط این فایل رو داره<?phpinclude('/usr/share/pear/nusoap.php');require_once('nusoap.php');$soapclient = new soapclient('https://acquirer.samanepay.com/payments/referencepayment.asmx?WSDL','wsdl');#$soapclient->debug_flag=true;$soapProxy = $soapclient->getProxy() ;#if( $err = $soapclient->getError() )# echo $err ;#echo $soapclient->debug_str;$res= $soapProxy->VerifyTransaction("Refrence Number","MTID");#reference number and selleridif( $res <= 0 )echo 'verification failed' ;else{echo 'it verified';echo $res ;}?> نقل قول لینک به ارسال
حسین 323 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 سلام. از ایشون کمک بخواین:www.modulebank.ir 1 نقل قول لینک به ارسال
HANNANStd 395 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 سلام یکی از دوستان درگاه بانک رفاه سفارش داده که یه سری مستندات فرستادند ولی هیچ فایل سمپل یا نمونه نفرستادند حالا موندم چطوری باید پیاده سازی کنم اگه کسی اطلاعی در مورد این بانک داره لطفا راهنمایی کنهفقط این فایل رو داره<?phpinclude('/usr/share/pear/nusoap.php');require_once('nusoap.php');$soapclient = new soapclient('https://acquirer.samanepay.com/payments/referencepayment.asmx?WSDL','wsdl');#$soapclient->debug_flag=true;$soapProxy = $soapclient->getProxy() ;#if( $err = $soapclient->getError() )# echo $err ;#echo $soapclient->debug_str;$res= $soapProxy->VerifyTransaction("Refrence Number","MTID");#reference number and selleridif( $res <= 0 )echo 'verification failed' ;else{echo 'it verified';echo $res ;}?>سلامبانک رفاه خودش روی شبکه شاپرک PSP نداره .... :http://shaparak.ir/content?id=290بخاطر همین با سایر بانک ها و PSP ها قرار داد داره و هر دوره با یک یا چند تاشون قرار داد میبنده ...این کدی که به شما فرستادن هم از بانک سامان هستش ....شما میتونید به سادگی از ماژول ها و پلاگین های بانک سامان استفاده کنید .موفق باشید 4 نقل قول لینک به ارسال
M.Javad 684 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) سلامبانک رفاه خودش روی شبکه شاپرک PSP نداره .... :http://shaparak.ir/content?id=290بخاطر همین با سایر بانک ها و PSP ها قرار داد داره و هر دوره با یک یا چند تاشون قرار داد میبنده ...این کدی که به شما فرستادن هم از بانک سامان هستش ....شما میتونید به سادگی از ماژول ها و پلاگین های بانک سامان استفاده کنید .موفق باشیدیعنی اگه مشخصات درگاه بانک رفاه رو در پلاگین های بانک سامان بزنم اتصال برقرار میشه؟!اگه اسکریپت درگاه بانک سامان هم دارید بدید لطفا ویرایش شده مهر 94 توسط M.Javad نقل قول لینک به ارسال
M.Javad 684 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) دوستان من این کد هارو قرار دادم و فقط وصل به درگاه بانک شد و پرداخت با موفقیت انجام شد ولی در بازگشت هیچ رسیدی دریافت نشد و فکر کنم تراکنش با موفقیت ثبت نشداین فرم هستش<form action='https://sep.shaparak.ir/Payment.aspx' method='POST'>مبلغ به ريال : <input type='text' id='Amount' name='Amount' value=''> <!-- مبلغ --><input type='hidden' id='MID' name='MID' value='10403269'> <!-- شماره مشتري بانک سامان --><input type='hidden' id='ResNum' name='ResNum' value='1'> <!-- شماره فاکتور --><input type='hidden' id='RedirectURL' name='RedirectURL' value='http://pchamid.ir/callback.php'> <!-- آدرس بازگشت --><input type=submit value='پرداخت'></form>و این هم کد برگشت فایل callback.php<?php$db = new PDO('mysql:host=localhost;dbname=test','test','test');if( ! isset($_POST['State']) or $_POST['State']!='OK'){echo "پرداخت ناموفق";die;}$order_id = (int) $_POST['ResNum'];$data = $db->query("SELECT * FROM payment WHERE id={$order_id}")->row();if(empty($data)){echo "چنين تراکنشي موجود نيست";die;}if($data->ip != $_SERVER['REMOTE_ADDR']){echo "آي پي پرداخت کننده مطابقت ندارد";die;}if($data->status=='1'){echo "تراکنش قبلا وريفاي شده است !";die;}if( ! isset($_POST['RefNum'])){echo "رسيد ديجيتال ست نشده است";die;}$ref_num = $_POST['RefNum'];$check = $db->query("SELECT id FROM payment WHERE ref_num=?")->row(array($ref_num));if( ! empty($check)){echo "رسيد ديجيتال قبلا ثبت شده است ";die;}try{$soapclient = new nusoap_client('https://sep.shaparak.ir/payments/referencepayment.asmx?WSDL','wsdl');$soapProxy = $soapclient->getProxy() ;$mid = 11111; // شماره مشتري بانک سامان$pass = 11111 ; // پسورد بانک سامان$result = $soapProxy->VerifyTransaction($ref_num,$mid);}catch(Exception $e){echo "خطا در اتصال به وبسرويس ";die;}if($result != ($data->amount)){// مغايرت مبلغ پرداختيif($result<0){echo "کد خطاي بانک سامان $result ";die;}// مغايرت و برگشت دادن وجه به حساب مشتريif($result>0){echo "شما بايد مبلغ {$data->amount} ريال را پرداخت ميکرديد در صورتيکه مبلغ {$result}ريال را پرداخت کرديد ! مبلغ شما به حسابتان برگشت داده شد آخرين بارتان باشد !!!";$soapProxy->ReverseTransaction($ref_num,$mid,$pass,$result);}}if($result == ($data->amount)){// تراکنش موفق و ثبت شماره رسيد ديجيتال$aff = $db->query("UPDATE payment SET ref_num=?,status=1 WHERE id=$order_id")->execute(array($ref_num));if( ! $aff)die('خطا در ثبت اطلاعات');echo "تراکنش با موفقيت انجام شد ، رسيد ديجيتال $ref_num و شماره فاکتور $order_id";}?>آی دی و پسورد رو 1111 گذاشتم برای امنیت ولی در فایل درست هستش در هنگام برگشت صفحه سفید میاره!!! ویرایش شده مهر 94 توسط M.Javad نقل قول لینک به ارسال
M.Javad 684 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 احساس میکنم این کد رو هم باید یه جایی قرار بدم <?phpinclude('/usr/share/pear/nusoap.php');require_once('nusoap.php');$soapclient = new soapclient('https://acquirer.samanepay.com/payments/referencepayment.asmx?WSDL','wsdl');#$soapclient->debug_flag=true;$soapProxy = $soapclient->getProxy() ;#if( $err = $soapclient->getError() )# echo $err ;#echo $soapclient->debug_str;$res= $soapProxy->VerifyTransaction("Refrence Number","MTID");#reference number and selleridif( $res <= 0 )echo 'verification failed' ;else{echo 'it verified';echo $res ;}?> نقل قول لینک به ارسال
HANNANStd 395 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) یعنی اگه مشخصات درگاه بانک رفاه رو در پلاگین های بانک سامان بزنم اتصال برقرار میشه؟!اگه اسکریپت درگاه بانک سامان هم دارید بدید لطفابله ، برای اتصال به درگاه میتونید از Merchant و Password که بانک بهتون داده توی پلاگین های بانک سامان استفاده کنید . خودمم از بانک صادرات درگاه گرفتم اون ها هم سامان بهم دادن .یک نمونه کد برای خودم از روی فایل pdf ارسالی بانک بر مبنای SOAP نوشته بودم و تو پروژه هام ازش استفاده میکنم ، میذارم تا دوستان هم استفاده کنند .ارسال به بانک :<?php$Amount = 1000; //ریال$MID = ''; //مرچنت پذیرنده$ResNum = time(); //شماره فاکتور یکتا و غیر تکراری$CallbackURL = 'http://test.com/Verify.php';echo '<form id="redirect_to_saman" style="display:none !important;" name="SamanBank" action="https://sep.shaparak.ir/Payment.aspx" method="POST"><input type="hidden" id="MID" name="MID" value="'.$MID.'"/><input type="hidden" id="Amount" name="Amount" value="'.$Amount.'"/><input type="hidden" id="ResNum" name="ResNum" value="'.$ResNum.'"/><input type="hidden" id="RedirectURL" name="RedirectURL" value="'.$CallbackURL.'"/></form><script language="javascript">document.SamanBank.submit(); </script>';بازگشت از بانک :<?php$Amount = 1000; //ریال$MID = ''; // مرچنت پذیرنده$Username = $MID; // نام کاربری پذیرنده که به صورت پیشفرض برابر مرچنت است .$Password = ''; // کلمه عبور پذیرنده$ResNum = isset($_POST['ResNum']) ? $_POST['ResNum'] : '';$RefNum = isset($_POST['RefNum']) ? $_POST['RefNum'] : '';$TRACENO = isset($_POST['TRACENO']) ? $_POST['TRACENO'] : '';$State = isset($_POST['State']) ? $_POST['State'] : '';if ( $State == 'OK' ) {$Client = new SoapClient("https://sep.shaparak.ir/payments/referencepayment.asmx?WSDL");$price = $Client->VerifyTransaction($RefNum, $MID);if ( $price && is_numeric($price) && $price > 0 ){if ( intval($price) == intval($Amount) ){$status = 'completed';$transaction_id = $TRACENO;$digital_num = $RefNum;$fault = 0;}else {$status = 'failed';$transaction_id = $TRACENO;$digital_num = $RefNum;if ( intval($price) > intval($Amount) )$fault = 500;else$fault = 501;$res = $Client->ReverseTransaction($RefNum,$MID,$Username,$Password);if ( $res > 0 )$Rev_Res = 1;// هزینه برگشت خورده است به مشتریelse$Rev_Res = 2;// هزینه به مشتری برگشت نخورده و باید پیگیری شود ... میتواند ناشی از اشتباه بودن کلمه عبور باشد}}else {$status = 'failed';$transaction_id = $TRACENO;$digital_num = $RefNum;$fault = $price;}}elseif ( $State == 'Canceled By User' ) {$status = 'cancelled';$transaction_id = 0;$digital_num = 0;$fault = 0;}else {$status = 'failed';$transaction_id = 0;$digital_num = 0;$fault = $State;}if ($status == 'completed') {echo 'تراکنش موفق بود . کد تراکنش :' . $transaction_id;echo '<br/>رسید دیجیتال : ' . $digital_num;}else if ($status == 'cancelled') {echo 'مشتری از انجام تراکنش انصراف داده است .';}else {echo 'تراکنش با خطا مواجه شده است . دلیل خطا : ' . saman_error($fault);}function saman_error($error) {$response = '';switch($error){case 'Canceled By User' :$response = 'تراکنش توسط خريدار کنسل شده است.';break;case 'Invalid Amount' :$response = 'مبلغ سند برگشتي، از مبلغ تراکنش اصلي بيشتر است.';break;case 'Invalid Transaction' :$response = 'درخواست برگشت يک تراکنش رسيده است، در حالي که تراکنش اصلي پيدا نمي شود.';break;case 'Invalid Card Number' :$response = 'شماره کارت اشتباه است.';break;case 'No Such Issuer' :$response = 'چنين صادر کننده کارتي وجود ندارد.';break;case 'Expired Card Pick Up' :$response = 'از تاريخ انقضاي کارت گذشته است و کارت ديگر معتبر نيست.';break;case 'Allowable PIN Tries Exceeded Pick Up' :$response = 'رمز کارت (PIN) 3 مرتبه اشتباه وارد شده است در نتيجه کارت غير فعال خواهد شد.';break;case 'Incorrect PIN' :$response = 'خريدار رمز کارت (PIN) را اشتباه وارد کرده است.';break;case 'Exceeds Withdrawal Amount Limit' :$response = 'مبلغ بيش از سقف برداشت مي باشد.';break;case 'Transaction Cannot Be Completed' :$response = 'تراکنش Authorize شده است ( شماره PIN و PAN درست هستند) ولي امکان سند خوردن وجود ندارد.';break;case 'Response Received Too Late' :$response = 'تراکنش در شبکه بانکي Timeout خورده است.';break;case 'Suspected Fraud Pick Up' :$response = 'خريدار يا فيلد CVV2 و يا فيلد ExpDate را اشتباه زده است. ( يا اصلا وارد نکرده است)';break;case 'No Sufficient Funds' :$response = 'موجودي به اندازي کافي در حساب وجود ندارد.';break;case 'Issuer Down Slm' :$response = 'سيستم کارت بانک صادر کننده در وضعيت عملياتي نيست.';break;case 'TME Error' :$response = 'خطا ايجاد شده قابل شناسايى نيست. لطفا با مديريت سايت تماس بگيريد . ';break;case '-1' :$response = 'خطای داخلی شبکه . ';break;case '-2' :$response = 'سپرده ها برابر نیستند . ';break;case '-3' :$response = 'ورودی ها حاوی کاراکترهای غیر مجاز میباشد . ';break;case '-4' :$response = 'کلمه عبور یا کد فروشنده اشتباه است . ';break;case '-5' :$response = 'خطای بانک اطلاعاتی . ';break;case '-6' :$response = 'سند قبلا برگشت کامل خورده . ';break;case '-7' :$response = 'رسید دیجیتالی تهی است . ';break;case '-8' :$response = 'خطای طول ورودی ها بیشتر از حد مجاز است . ';break;case '-9' :$response = 'وجود کارکترهای غیر مجاز در مبلغ برگشتی . ';break;case '-10' :$response = 'رسید دیجیتالی حاوی کارکترهای غیر مجاز است . ';break;case '-11' :$response = 'طول ورودی ها کمتر از حد مجاز است . ';break;case '-12' :$response = 'مبلغ برگشتی منفی است . ';break;case '-13' :$response = 'مبلغ برگشتی برای برگشت جزیی بیش از مبلغ برگشت نخورده رسید دیجیتالی است . ';break;case '-14' :$response = 'چنین تراکنشی تعریف نشده است . ';break;case '-15' :$response = 'مبلغ برگشتی به صورت اعشاری داده شده . ';break;case '-16' :$response = 'خطای داخلی سیستم . ';break;case '-17' :$response = 'برگشت زدن تراکنشی که با کارت بانکی غیر از بانک سامان انجام شده . ';break;case '-18' :$response = 'فروشنده نامعتبر است IP . ';break;case '500' :$response = 'مبلغ پرداختی از مبلغ مورد نظر بیشتر است . ';break;case '501' :$response = 'مبلغ پرداختی کمتر از مبلغ مورد نظر است . ';break;}return $response;} ویرایش شده مهر 94 توسط HANNANStd 2 نقل قول لینک به ارسال
M.Javad 684 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 بله ، برای اتصال به درگاه میتونید از Merchant و Password که بانک بهتون داده توی پلاگین های بانک سامان استفاده کنید . خودمم از بانک صادرات درگاه گرفتم اون ها هم سامان بهم دادن .یک نمونه کد برای خودم از روی فایل pdf ارسالی بانک بر مبنای SOAP نوشته بودم و تو پروژه هام ازش استفاده میکنم ، میذارم تا دوستان هم استفاده کنند .ارسال به بانک :<?php$Amount = 1000; //ریال$MID = ''; //مرچنت پذیرنده$ResNum = time(); //شماره فاکتور یکتا و غیر تکراری$CallbackURL = 'http://test.com/Verify.php';echo '<form id="redirect_to_saman" style="display:none !important;" name="SamanBank" action="https://sep.shaparak.ir/Payment.aspx" method="POST"><input type="hidden" id="MID" name="MID" value="'.$MID.'"/><input type="hidden" id="Amount" name="Amount" value="'.$Amount.'"/><input type="hidden" id="ResNum" name="ResNum" value="'.$ResNum.'"/><input type="hidden" id="RedirectURL" name="RedirectURL" value="'.$CallbackURL.'"/></form><script language="javascript">document.SamanBank.submit(); </script>';بازگشت از بانک :<?php$Amount = 1000; //ریال$MID = ''; // مرچنت پذیرنده$Username = $MID; // نام کاربری پذیرنده که به صورت پیشفرض برابر مرچنت است .$Password = ''; // کلمه عبور پذیرنده$ResNum = isset($_POST['ResNum']) ? $_POST['ResNum'] : '';$RefNum = isset($_POST['RefNum']) ? $_POST['RefNum'] : '';$TRACENO = isset($_POST['TRACENO']) ? $_POST['TRACENO'] : '';$State = isset($_POST['State']) ? $_POST['State'] : '';if ( $State == 'OK' ) {$Client = new SoapClient("https://sep.shaparak.ir/payments/referencepayment.asmx?WSDL");$price = $Client->VerifyTransaction($RefNum, $MID);if ( $price && is_numeric($price) && $price > 0 ){if ( intval($price) == intval($Amount) ){$status = 'completed';$transaction_id = $TRACENO;$digital_num = $RefNum;$fault = 0;}else {$status = 'failed';$transaction_id = $TRACENO;$digital_num = $RefNum;if ( intval($price) > intval($Amount) )$fault = 500;else$fault = 501;$res = $Client->ReverseTransaction($RefNum,$MID,$Username,$Password);if ( $res > 0 )$Rev_Res = 1;// هزینه برگشت خورده است به مشتریelse$Rev_Res = 2;// هزینه به مشتری برگشت نخورده و باید پیگیری شود ... میتواند ناشی از اشتباه بودن کلمه عبور باشد}}else {$status = 'failed';$transaction_id = $TRACENO;$digital_num = $RefNum;$fault = $price;}}elseif ( $State == 'Canceled By User' ) {$status = 'cancelled';$transaction_id = 0;$digital_num = 0;$fault = 0;}else {$status = 'failed';$transaction_id = 0;$digital_num = 0;$fault = $State;}if ($status == 'completed') {echo 'تراکنش موفق بود . کد تراکنش :' . $transaction_id;echo '<br/>رسید دیجیتال : ' . $digital_num;}else if ($status == 'completed') {echo 'مشتری از انجام تراکنش انصراف داده است .';}else {echo 'تراکنش با خطا مواجه شده است . دلیل خطا : ' . saman_error($fault);}function saman_error($error) {$response = '';switch($error){case 'Canceled By User' :$response = 'تراکنش توسط خريدار کنسل شده است.';break;case 'Invalid Amount' :$response = 'مبلغ سند برگشتي، از مبلغ تراکنش اصلي بيشتر است.';break;case 'Invalid Transaction' :$response = 'درخواست برگشت يک تراکنش رسيده است، در حالي که تراکنش اصلي پيدا نمي شود.';break;case 'Invalid Card Number' :$response = 'شماره کارت اشتباه است.';break;case 'No Such Issuer' :$response = 'چنين صادر کننده کارتي وجود ندارد.';break;case 'Expired Card Pick Up' :$response = 'از تاريخ انقضاي کارت گذشته است و کارت ديگر معتبر نيست.';break;case 'Allowable PIN Tries Exceeded Pick Up' :$response = 'رمز کارت (PIN) 3 مرتبه اشتباه وارد شده است در نتيجه کارت غير فعال خواهد شد.';break;case 'Incorrect PIN' :$response = 'خريدار رمز کارت (PIN) را اشتباه وارد کرده است.';break;case 'Exceeds Withdrawal Amount Limit' :$response = 'مبلغ بيش از سقف برداشت مي باشد.';break;case 'Transaction Cannot Be Completed' :$response = 'تراکنش Authorize شده است ( شماره PIN و PAN درست هستند) ولي امکان سند خوردن وجود ندارد.';break;case 'Response Received Too Late' :$response = 'تراکنش در شبکه بانکي Timeout خورده است.';break;case 'Suspected Fraud Pick Up' :$response = 'خريدار يا فيلد CVV2 و يا فيلد ExpDate را اشتباه زده است. ( يا اصلا وارد نکرده است)';break;case 'No Sufficient Funds' :$response = 'موجودي به اندازي کافي در حساب وجود ندارد.';break;case 'Issuer Down Slm' :$response = 'سيستم کارت بانک صادر کننده در وضعيت عملياتي نيست.';break;case 'TME Error' :$response = 'خطا ايجاد شده قابل شناسايى نيست. لطفا با مديريت سايت تماس بگيريد . ';break;case '-1' :$response = 'خطای داخلی شبکه . ';break;case '-2' :$response = 'سپرده ها برابر نیستند . ';break;case '-3' :$response = 'ورودی ها حاوی کاراکترهای غیر مجاز میباشد . ';break;case '-4' :$response = 'کلمه عبور یا کد فروشنده اشتباه است . ';break;case '-5' :$response = 'خطای بانک اطلاعاتی . ';break;case '-6' :$response = 'سند قبلا برگشت کامل خورده . ';break;case '-7' :$response = 'رسید دیجیتالی تهی است . ';break;case '-8' :$response = 'خطای طول ورودی ها بیشتر از حد مجاز است . ';break;case '-9' :$response = 'وجود کارکترهای غیر مجاز در مبلغ برگشتی . ';break;case '-10' :$response = 'رسید دیجیتالی حاوی کارکترهای غیر مجاز است . ';break;case '-11' :$response = 'طول ورودی ها کمتر از حد مجاز است . ';break;case '-12' :$response = 'مبلغ برگشتی منفی است . ';break;case '-13' :$response = 'مبلغ برگشتی برای برگشت جزیی بیش از مبلغ برگشت نخورده رسید دیجیتالی است . ';break;case '-14' :$response = 'چنین تراکنشی تعریف نشده است . ';break;case '-15' :$response = 'مبلغ برگشتی به صورت اعشاری داده شده . ';break;case '-16' :$response = 'خطای داخلی سیستم . ';break;case '-17' :$response = 'برگشت زدن تراکنشی که با کارت بانکی غیر از بانک سامان انجام شده . ';break;case '-18' :$response = 'فروشنده نامعتبر است IP . ';break;case '500' :$response = 'مبلغ پرداختی از مبلغ مورد نظر بیشتر است . ';break;case '501' :$response = 'مبلغ پرداختی کمتر از مبلغ مورد نظر است . ';break;}return $response;}این کد شما فقط برای یک مبلغ ثابت هستش نمیشه برای هر مبلغی باشه؟! نقل قول لینک به ارسال
HANNANStd 395 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 چرا میشه .ببینید هر پلاگین یا ماژولی که میخواید بزنید حتما براش یک متغیر تعریف شده که مقدار قیمت رو بر میگردونه .شما Amount رو مساوی با همون متغیر قرار بدید . 1 نقل قول لینک به ارسال
M.Javad 684 ارسال شده در مهر 94 مالک گزارش بازنشر ارسال شده در مهر 94 بله ، برای اتصال به درگاه میتونید از Merchant و Password که بانک بهتون داده توی پلاگین های بانک سامان استفاده کنید . خودمم از بانک صادرات درگاه گرفتم اون ها هم سامان بهم دادن .یک نمونه کد برای خودم از روی فایل pdf ارسالی بانک بر مبنای SOAP نوشته بودم و تو پروژه هام ازش استفاده میکنم ، میذارم تا دوستان هم استفاده کنند .ارسال به بانک :<?php$Amount = 1000; //ریال$MID = ''; //مرچنت پذیرنده$ResNum = time(); //شماره فاکتور یکتا و غیر تکراری$CallbackURL = 'http://test.com/Verify.php';echo '<form id="redirect_to_saman" style="display:none !important;" name="SamanBank" action="https://sep.shaparak.ir/Payment.aspx" method="POST"><input type="hidden" id="MID" name="MID" value="'.$MID.'"/><input type="hidden" id="Amount" name="Amount" value="'.$Amount.'"/><input type="hidden" id="ResNum" name="ResNum" value="'.$ResNum.'"/><input type="hidden" id="RedirectURL" name="RedirectURL" value="'.$CallbackURL.'"/></form><script language="javascript">document.SamanBank.submit(); </script>';بازگشت از بانک :<?php$Amount = 1000; //ریال$MID = ''; // مرچنت پذیرنده$Username = $MID; // نام کاربری پذیرنده که به صورت پیشفرض برابر مرچنت است .$Password = ''; // کلمه عبور پذیرنده$ResNum = isset($_POST['ResNum']) ? $_POST['ResNum'] : '';$RefNum = isset($_POST['RefNum']) ? $_POST['RefNum'] : '';$TRACENO = isset($_POST['TRACENO']) ? $_POST['TRACENO'] : '';$State = isset($_POST['State']) ? $_POST['State'] : '';if ( $State == 'OK' ) {$Client = new SoapClient("https://sep.shaparak.ir/payments/referencepayment.asmx?WSDL");$price = $Client->VerifyTransaction($RefNum, $MID);if ( $price && is_numeric($price) && $price > 0 ){if ( intval($price) == intval($Amount) ){$status = 'completed';$transaction_id = $TRACENO;$digital_num = $RefNum;$fault = 0;}else {$status = 'failed';$transaction_id = $TRACENO;$digital_num = $RefNum;if ( intval($price) > intval($Amount) )$fault = 500;else$fault = 501;$res = $Client->ReverseTransaction($RefNum,$MID,$Username,$Password);if ( $res > 0 )$Rev_Res = 1;// هزینه برگشت خورده است به مشتریelse$Rev_Res = 2;// هزینه به مشتری برگشت نخورده و باید پیگیری شود ... میتواند ناشی از اشتباه بودن کلمه عبور باشد}}else {$status = 'failed';$transaction_id = $TRACENO;$digital_num = $RefNum;$fault = $price;}}elseif ( $State == 'Canceled By User' ) {$status = 'cancelled';$transaction_id = 0;$digital_num = 0;$fault = 0;}else {$status = 'failed';$transaction_id = 0;$digital_num = 0;$fault = $State;}if ($status == 'completed') {echo 'تراکنش موفق بود . کد تراکنش :' . $transaction_id;echo '<br/>رسید دیجیتال : ' . $digital_num;}else if ($status == 'completed') {echo 'مشتری از انجام تراکنش انصراف داده است .';}else {echo 'تراکنش با خطا مواجه شده است . دلیل خطا : ' . saman_error($fault);}function saman_error($error) {$response = '';switch($error){case 'Canceled By User' :$response = 'تراکنش توسط خريدار کنسل شده است.';break;case 'Invalid Amount' :$response = 'مبلغ سند برگشتي، از مبلغ تراکنش اصلي بيشتر است.';break;case 'Invalid Transaction' :$response = 'درخواست برگشت يک تراکنش رسيده است، در حالي که تراکنش اصلي پيدا نمي شود.';break;case 'Invalid Card Number' :$response = 'شماره کارت اشتباه است.';break;case 'No Such Issuer' :$response = 'چنين صادر کننده کارتي وجود ندارد.';break;case 'Expired Card Pick Up' :$response = 'از تاريخ انقضاي کارت گذشته است و کارت ديگر معتبر نيست.';break;case 'Allowable PIN Tries Exceeded Pick Up' :$response = 'رمز کارت (PIN) 3 مرتبه اشتباه وارد شده است در نتيجه کارت غير فعال خواهد شد.';break;case 'Incorrect PIN' :$response = 'خريدار رمز کارت (PIN) را اشتباه وارد کرده است.';break;case 'Exceeds Withdrawal Amount Limit' :$response = 'مبلغ بيش از سقف برداشت مي باشد.';break;case 'Transaction Cannot Be Completed' :$response = 'تراکنش Authorize شده است ( شماره PIN و PAN درست هستند) ولي امکان سند خوردن وجود ندارد.';break;case 'Response Received Too Late' :$response = 'تراکنش در شبکه بانکي Timeout خورده است.';break;case 'Suspected Fraud Pick Up' :$response = 'خريدار يا فيلد CVV2 و يا فيلد ExpDate را اشتباه زده است. ( يا اصلا وارد نکرده است)';break;case 'No Sufficient Funds' :$response = 'موجودي به اندازي کافي در حساب وجود ندارد.';break;case 'Issuer Down Slm' :$response = 'سيستم کارت بانک صادر کننده در وضعيت عملياتي نيست.';break;case 'TME Error' :$response = 'خطا ايجاد شده قابل شناسايى نيست. لطفا با مديريت سايت تماس بگيريد . ';break;case '-1' :$response = 'خطای داخلی شبکه . ';break;case '-2' :$response = 'سپرده ها برابر نیستند . ';break;case '-3' :$response = 'ورودی ها حاوی کاراکترهای غیر مجاز میباشد . ';break;case '-4' :$response = 'کلمه عبور یا کد فروشنده اشتباه است . ';break;case '-5' :$response = 'خطای بانک اطلاعاتی . ';break;case '-6' :$response = 'سند قبلا برگشت کامل خورده . ';break;case '-7' :$response = 'رسید دیجیتالی تهی است . ';break;case '-8' :$response = 'خطای طول ورودی ها بیشتر از حد مجاز است . ';break;case '-9' :$response = 'وجود کارکترهای غیر مجاز در مبلغ برگشتی . ';break;case '-10' :$response = 'رسید دیجیتالی حاوی کارکترهای غیر مجاز است . ';break;case '-11' :$response = 'طول ورودی ها کمتر از حد مجاز است . ';break;case '-12' :$response = 'مبلغ برگشتی منفی است . ';break;case '-13' :$response = 'مبلغ برگشتی برای برگشت جزیی بیش از مبلغ برگشت نخورده رسید دیجیتالی است . ';break;case '-14' :$response = 'چنین تراکنشی تعریف نشده است . ';break;case '-15' :$response = 'مبلغ برگشتی به صورت اعشاری داده شده . ';break;case '-16' :$response = 'خطای داخلی سیستم . ';break;case '-17' :$response = 'برگشت زدن تراکنشی که با کارت بانکی غیر از بانک سامان انجام شده . ';break;case '-18' :$response = 'فروشنده نامعتبر است IP . ';break;case '500' :$response = 'مبلغ پرداختی از مبلغ مورد نظر بیشتر است . ';break;case '501' :$response = 'مبلغ پرداختی کمتر از مبلغ مورد نظر است . ';break;}return $response;}در کل خیلی ممنون حداقل کار بنده خدا راه افتاد خخخخخخ ولی بد نیست کلیش رو یاد بگیرم که واسه همه هم کاربردی باشهممنون میشم اگه کد کلیش رو هم بزاری واسه من و دیگران که بتونن استفاده کنن نقل قول لینک به ارسال
HANNANStd 395 ارسال شده در مهر 94 گزارش بازنشر ارسال شده در مهر 94 (ویرایش شده) دقیقا کد کلی رو گذاشتم کد جزیی بستگی به هر ماژول یا پلاگین داره ... بعنوان مثال در ماژول بانک سامانی که تو شاپ ووکامرس پارسی گذاشتیم بجای :$Amount = 1000;از کد زیر استفاده کردیم :$Amount = intval($order->order_total);یعنی میاد قیمت رو از کد مربوط به سفارش ووکامرس فراخونی میکنه و به سمت بانک ارجاع میده .پ . ن : تو نمونه کدی که گذاشته بودم ویرایش کردم و یه کوچولو تغییر دادم یعنی توی شرط دوم cancelled رو جا گذاشته بودم . ویرایش شده مهر 94 توسط HANNANStd 3 نقل قول لینک به ارسال
payacms 0 ارسال شده در اسفند 98 گزارش بازنشر ارسال شده در اسفند 98 در در 10/19/2015 at 15:27، HANNANStd گفته است : بله ، برای اتصال به درگاه میتونید از Merchant و Password که بانک بهتون داده توی پلاگین های بانک سامان استفاده کنید . خودمم از بانک صادرات درگاه گرفتم اون ها هم سامان بهم دادن . یک نمونه کد برای خودم از روی فایل pdf ارسالی بانک بر مبنای SOAP نوشته بودم و تو پروژه هام ازش استفاده میکنم ، میذارم تا دوستان هم استفاده کنند . ارسال به بانک : <?php $Amount = 1000; //ریال $MID = ''; //مرچنت پذیرنده $ResNum = time(); //شماره فاکتور یکتا و غیر تکراری $CallbackURL = 'http://test.com/Verify.php'; echo '<form id="redirect_to_saman" style="display:none !important;" name="SamanBank" action="https://sep.shaparak.ir/Payment.aspx" method="POST"> <input type="hidden" id="MID" name="MID" value="'.$MID.'"/> <input type="hidden" id="Amount" name="Amount" value="'.$Amount.'"/> <input type="hidden" id="ResNum" name="ResNum" value="'.$ResNum.'"/> <input type="hidden" id="RedirectURL" name="RedirectURL" value="'.$CallbackURL.'"/> </form><script language="javascript">document.SamanBank.submit(); </script>'; بازگشت از بانک : <?php $Amount = 1000; //ریال $MID = ''; // مرچنت پذیرنده $Username = $MID; // نام کاربری پذیرنده که به صورت پیشفرض برابر مرچنت است . $Password = ''; // کلمه عبور پذیرنده $ResNum = isset($_POST['ResNum']) ? $_POST['ResNum'] : ''; $RefNum = isset($_POST['RefNum']) ? $_POST['RefNum'] : ''; $TRACENO = isset($_POST['TRACENO']) ? $_POST['TRACENO'] : ''; $State = isset($_POST['State']) ? $_POST['State'] : ''; if ( $State == 'OK' ) { $Client = new SoapClient("https://sep.shaparak.ir/payments/referencepayment.asmx?WSDL"); $price = $Client->VerifyTransaction($RefNum, $MID); if ( $price && is_numeric($price) && $price > 0 ){ if ( intval($price) == intval($Amount) ){ $status = 'completed'; $transaction_id = $TRACENO; $digital_num = $RefNum; $fault = 0; } else { $status = 'failed'; $transaction_id = $TRACENO; $digital_num = $RefNum; if ( intval($price) > intval($Amount) ) $fault = 500; else $fault = 501; $res = $Client->ReverseTransaction($RefNum,$MID,$Username,$Password); if ( $res > 0 ) $Rev_Res = 1;// هزینه برگشت خورده است به مشتری else $Rev_Res = 2;// هزینه به مشتری برگشت نخورده و باید پیگیری شود ... میتواند ناشی از اشتباه بودن کلمه عبور باشد } } else { $status = 'failed'; $transaction_id = $TRACENO; $digital_num = $RefNum; $fault = $price; } } elseif ( $State == 'Canceled By User' ) { $status = 'cancelled'; $transaction_id = 0; $digital_num = 0; $fault = 0; } else { $status = 'failed'; $transaction_id = 0; $digital_num = 0; $fault = $State; } if ($status == 'completed') { echo 'تراکنش موفق بود . کد تراکنش :' . $transaction_id; echo '<br/>رسید دیجیتال : ' . $digital_num; } else if ($status == 'cancelled') { echo 'مشتری از انجام تراکنش انصراف داده است .'; } else { echo 'تراکنش با خطا مواجه شده است . دلیل خطا : ' . saman_error($fault); } function saman_error($error) { $response = ''; switch($error){ case 'Canceled By User' : $response = 'تراکنش توسط خريدار کنسل شده است.'; break; case 'Invalid Amount' : $response = 'مبلغ سند برگشتي، از مبلغ تراکنش اصلي بيشتر است.'; break; case 'Invalid Transaction' : $response = 'درخواست برگشت يک تراکنش رسيده است، در حالي که تراکنش اصلي پيدا نمي شود.'; break; case 'Invalid Card Number' : $response = 'شماره کارت اشتباه است.'; break; case 'No Such Issuer' : $response = 'چنين صادر کننده کارتي وجود ندارد.'; break; case 'Expired Card Pick Up' : $response = 'از تاريخ انقضاي کارت گذشته است و کارت ديگر معتبر نيست.'; break; case 'Allowable PIN Tries Exceeded Pick Up' : $response = 'رمز کارت (PIN) 3 مرتبه اشتباه وارد شده است در نتيجه کارت غير فعال خواهد شد.'; break; case 'Incorrect PIN' : $response = 'خريدار رمز کارت (PIN) را اشتباه وارد کرده است.'; break; case 'Exceeds Withdrawal Amount Limit' : $response = 'مبلغ بيش از سقف برداشت مي باشد.'; break; case 'Transaction Cannot Be Completed' : $response = 'تراکنش Authorize شده است ( شماره PIN و PAN درست هستند) ولي امکان سند خوردن وجود ندارد.'; break; case 'Response Received Too Late' : $response = 'تراکنش در شبکه بانکي Timeout خورده است.'; break; case 'Suspected Fraud Pick Up' : $response = 'خريدار يا فيلد CVV2 و يا فيلد ExpDate را اشتباه زده است. ( يا اصلا وارد نکرده است)'; break; case 'No Sufficient Funds' : $response = 'موجودي به اندازي کافي در حساب وجود ندارد.'; break; case 'Issuer Down Slm' : $response = 'سيستم کارت بانک صادر کننده در وضعيت عملياتي نيست.'; break; case 'TME Error' : $response = 'خطا ايجاد شده قابل شناسايى نيست. لطفا با مديريت سايت تماس بگيريد . '; break; case '-1' : $response = 'خطای داخلی شبکه . '; break; case '-2' : $response = 'سپرده ها برابر نیستند . '; break; case '-3' : $response = 'ورودی ها حاوی کاراکترهای غیر مجاز میباشد . '; break; case '-4' : $response = 'کلمه عبور یا کد فروشنده اشتباه است . '; break; case '-5' : $response = 'خطای بانک اطلاعاتی . '; break; case '-6' : $response = 'سند قبلا برگشت کامل خورده . '; break; case '-7' : $response = 'رسید دیجیتالی تهی است . '; break; case '-8' : $response = 'خطای طول ورودی ها بیشتر از حد مجاز است . '; break; case '-9' : $response = 'وجود کارکترهای غیر مجاز در مبلغ برگشتی . '; break; case '-10' : $response = 'رسید دیجیتالی حاوی کارکترهای غیر مجاز است . '; break; case '-11' : $response = 'طول ورودی ها کمتر از حد مجاز است . '; break; case '-12' : $response = 'مبلغ برگشتی منفی است . '; break; case '-13' : $response = 'مبلغ برگشتی برای برگشت جزیی بیش از مبلغ برگشت نخورده رسید دیجیتالی است . '; break; case '-14' : $response = 'چنین تراکنشی تعریف نشده است . '; break; case '-15' : $response = 'مبلغ برگشتی به صورت اعشاری داده شده . '; break; case '-16' : $response = 'خطای داخلی سیستم . '; break; case '-17' : $response = 'برگشت زدن تراکنشی که با کارت بانکی غیر از بانک سامان انجام شده . '; break; case '-18' : $response = 'فروشنده نامعتبر است IP . '; break; case '500' : $response = 'مبلغ پرداختی از مبلغ مورد نظر بیشتر است . '; break; case '501' : $response = 'مبلغ پرداختی کمتر از مبلغ مورد نظر است . '; break; } return $response; } سلام کد بسیار مفیدی هست من برای بانک رفاه استفاده کردم ولی تو مرحله اخر که باید تایید نهایی بزنم مینویسه تراکنش نا معتبر می باشد کسی هست کمک کنه ؟ مرسی عکس اینجا اپلود کردم : نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .