تابع اتصال و برگشت از درگاه بانک سامان

alihesari

کاربر عضو
سلام دوستان

یه کد اتصال به درگاه بانک سامان نوشتم ولی متصل نمیشه! مستندات خود بانک هم اصلا 2 خط کد بیشتر نیست که اون اصلا متصل نمیشه! اگر کسی تابع اتصال به درگاه و برگشت از درگاه رو داره لطف کنه قرار بده ممنون

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
مستنداتش داره میگه 2 روش وجود داره واسه ارسال به بانک .

یک روش استفاده از متد پست هست .

یک روش هم وب سرویسه .

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

- - - Updated - - -

اینو یه تست بگیرید :


کد:
<?php 
$amount= 1000;
$merchant = '';
$resnum = rand(1000,99999);
$calback = 'http://site.com';
?>
<form name="samanbank" action="https://sep.shaparak.ir/Payment.aspx" method="POST">
    <input type="hidden" id="Amount" name="Amount" value="<?php echo $amount; ?>">
    <input type="hidden" id="MID" name="MID" value="<?php echo $merchant; ?>">
    <input type="hidden" id="ResNum" name="ResNum" value="<?php echo $resnum; ?>">
    <input type="hidden" id="RedirectURL" name="RedirectURL" value="<?php echo $calback;?>">
</form>    
<?php
    echo "<script language='javascript'>document.samanbank.submit(); </script>";
?>
 

alihesari

کاربر عضو
[h=2]@hannanstd[/h]گفته شما صحیح. متد پست به درستی کار میکنه برنامه ای رو که من نوشتم با استفاده از SoapClient و nusoap_client که بهشون نیاز دارم نوشته شده و عمل نکرد!

 
آخرین ویرایش توسط مدیر:

alihesari

کاربر عضو
بله من هم همینطور ممنون از شما دوست عزیز. در مورد تابع برگشت از بانک چطور؟ کد زیر صحیحه:


کد:
include('/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 sellerid
if ($res <= 0)
    echo 'verification failed';
else {
    echo 'it verified';
    echo $res;
}
 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
تابع بازگشتش ناقص بود .
چون توی pdf گفته که باید مقدار res رو با قیمت مقایسه کنه . اگه مقدار برگشتی با قیمت یکی بود یعنی تراکنش صحیح است .

فک کنم کد زیر درست باشه . فقط باید موقع برگشت قیمت رو از دیتابیس بگیرید .

nusoap هم مثل بانک پارسیان خودتون از پوشه پلاگین فراخونی کنید .


کد:
<?php


$merchant = '';
$amount = ''; // باید از دیتابیس خوانده شود

$ResNum = $_POST['ResNum'];
$RefNum = $_POST['RefNum'];
$State = $_POST['State'];
$TRACENO = $_POST['TRACENO'];




if ($State=='OK') {
$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($RefNum, $merchant); #reference number and sellerid
if ($res <= 0)
echo 'verification failed';
else if ( $res == $amount ) {
echo 'it verified';
echo 'کدرهگیری'.$TRACENO;
echo 'رسید دیجیتال'.$RefNum;
echo 'شماره خرید'.$RefNum;
}
else {
echo 'خطا';
}


}
else {
echo 'خطا';
}
- - - Updated - - -

البته دقت کنید که توی پی دی اف به شدت تاکید شده که $resnum که قراره به بانک پست بشه حتما حتما منحصر به فرد باشه . پس بهتره از تابع date استفاد کنید .
@

 
آخرین ویرایش توسط مدیر:

alihesari

کاربر عضو
اون تابع بالا که قرار دادم نمونه کدی هست که سامان تویه سایتش گذاشته :45:

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
آره منم همونو از سایتشون دانلود کردم ولی خب مستنداتش پی دی اف شون همونی رو میگه که من گفتم .



 

alihesari

کاربر عضو
کد بالا رو تست کردم متاسفانه soapclient برقرار نمیشه! soapclinet رو به صورت زیر تغییر دادم و ارتباط برقرار شد و تابع بازگشت به درستی کار کرد:


کد:
 $soapclient = new SoapClient("https://acquirer.samanepay.com/payments/referencepayment.asmx?WSDL");
    $res = $soapclient->VerifyTransaction($RefNum, $MID);
از همراهی شما دوست عزیز خیلی خیلی ممنون

 
آخرین ویرایش توسط مدیر:

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
کد بالا رو تست کردم متاسفانه soapclient برقرار نمیشه! soapclinet رو به صورت زیر تغییر دادم و ارتباط برقرار شد و تابع بازگشت به درستی کار کرد:

کد:
 $soapclient = new SoapClient("https://acquirer.samanepay.com/payments/referencepayment.asmx?WSDL");
    $res = $soapclient->VerifyTransaction($RefNum, $MID);
از همراهی شما دوست عزیز خیلی خیلی ممنون
احتمالا شما تو کد بالا nusoap رو اینکلودر نکرده بودید .

 

alihesari

کاربر عضو
نه آقا nusoap رو include کرده بودم. همون nusoap که قبلا روی درگاه پاسارگاد با هم کار کردیم.

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
آره باید از SoapClient بجای soapclient استفاده بشه .

میدونید چرا ؟

چون همونطور که قبلا گفتم nusoap ، آرگومانش به صورت آرایه هست در حالی $soapProxy->VerifyTransaction آرگومانش توی این کد آرایه ای نیست . پس باید از soap بجای nusoap استفاده میشد .

خیلی جالبه که این کدی بود که توی مستندات خود سایت بانک سامان بود !!!

 

farshaddx6190

تازه وارد
آره باید از SoapClient بجای soapclient استفاده بشه .

میدونید چرا ؟

چون همونطور که قبلا گفتم nusoap ، آرگومانش به صورت آرایه هست در حالی $soapProxy->VerifyTransaction آرگومانش توی این کد آرایه ای نیست . پس باید از soap بجای nusoap استفاده میشد .

خیلی جالبه که این کدی بود که توی مستندات خود سایت بانک سامان بود !!!
با سلام دوستان عزیز کسی فایل اماده این مراحل را داره من دنبال افزونه بانک سامان برای ووکامرس را میخوام

ممنون میشم اگه در اختیارم بگذارید

باتشکر

 

Mohammad

مدیر انجمن
پرسنل مدیریت
میتونید از فروشگاه خریداری کنید!

 
بالا