سلام و عرض ادب خدمت بازدیدکنندگان گرامی
با آخرین بروز رسانی درگاه سامان کیش خوشبختانه سطح امنیت ارسال به بانک بهتره شده و قبل ارسال به بانک میشه متوجه شد که درگاهمون سالم هست یا نه ، در روش قبل بدون پردازش اطلاعات کاربر وارد بانک میشد پرداخت میکرد بعد متوجه مشکل دار بودن درگاه میشد این خودش بنظر من خیلی مشکل ساز میشه مخصوصا برای عزیزانی که تازه تهیه کردن باشند
در روش توکن ما درخواست توکن کد میکنیم اطلاعات پردازش میشه و درصورت بروز خطا به کاربر اطلاع میدم ، در غیر اینصورت کاربر رو به بانک هدایت میکنیم
میرم سراغ آموزش
مرحله اول اتصال (ایجاد توکن کد)
برای درخواست کد توکن از تابع RequestToken با پارامتر های زیر استفاده میکنم
RequestToken(MID, ResNum, Amount, SegAmount1, SegAmount2, SegAmount3, SegAmount4, SegAmount5, SegAmount6, AdditionalData1, AdditionalData2, Wage)
پارامتر های الزامی
MID کد پذيرنده/نام کاربری
ResNum شماره فاکتور
Amount مبلغ بزرگتر از 1000 و به ریال
پارامتر های اختیاری
SegAmount1 تا SegAmount6 مبلغ سگمنت که بصورت پیش فرض صفر است
AdditionalData1 و AdditionalData2
داده اضافه که درگزارشگیری میتوان از ان استفاده نمود. مثل کد ملی کاربر و یا هر داده ای دیگری
Wage (کارمزد (به مبلغ اصلی موقع پرداخت اضافه میشه
نمونه کد php دریافت کد توکن (Soap, NuSoap)
$SoapClient = new SoapClient('https://sep.shaparak.ir/payments/initpayment.asmx?wsdl',array('encoding'=>'UTF-8'));
$Token = $SoapClient->RequestToken(12345, 1, 1000);
$SoapClient = new nusoap_client('https://sep.shaparak.ir/payments/initpayment.asmx?wsdl','wsdl');
$soapProxy = $SoapClient->getProxy() ;
$Token = $soapProxy->RequestToken(12345, 1, 1000);
نکته : درصورت بروز خطا موقع درخواست کد توکن عدد منفی دریافت میکنیم که مشخصه نوع خطاست ، در غیر این صورت رشته ای متشکل از حرف و عدد دریافت میکنیم
مرحل دوم (هدایت به بانک)
در این مرحله کافیه آدرس فروشگاه و توکن کد را بصورت پست به درگاه ارسال کنیم
پارامتر هایی که باید موقع هدایت به بانک ارسال شود.
RedirectURL آدرس بازگشت به فروشگاه
Token کد توکن دریافتی از مرحله اول
نمونه کد هدایت به بانک
if(!empty($Token) and strlen($Token)>10)
{
$resForm = "<form name='SamanOmidtakIR' action='https://sep.shaparak.ir/Payment.aspx' method='POST'>";
$resForm .= "<input type='hidden' id='RedirectURL' name='RedirectURL' value='{$RedirectURL}' />";
$resForm .= "<input type='hidden' id='Token' name='Token' value='{$Token}' />";
$resForm .= "</form>";
$resForm = "<div style='display:none;visibility:hidden'>{$resForm}</div>";
$resForm .= "<script language='javascript'>document.SamanOmidtakIR.submit();</script>";
$resForm .= "<script>//Programer : Omid Aran Omidtak.IR</script>";
echo $resForm;
die;
}
else
echo sepResErr($Token);
function sepResErr($ResCode='')
{
switch($ResCode)
{
case '-1':$prompt="خطا درپردازش اطلاعات ارسالی";break;
case '-3':$prompt="ورودی حاوی کارکتر غیرمجاز";break;
case '-4':$prompt="کلمه عبور یا کد فروشنده اشتباه است.";break;
case '-6':$prompt="سند قبلا برگشت کامل یافته است.";break;
case '-7':$prompt="رسید دیجیتال خالی است.";break;
case '-8':$prompt="طول ورودی بیشتر از حد مجاز است";break;
case '-9':$prompt="وجود کاراکترهای غیرمجاز در مبلغ بازگشتی";break;
case '-10':$prompt="رسید دیجیتال بصورت Base64 نیست.";break;
case '-11':$prompt="طول ورودی ها کمتر از حد مجاز است.";break;
case '-12':$prompt="مبلغ برگشتی منفی است.";break;
case '-13':$prompt="مبلغ برگشتی برای برگشت جزئی بیش از مبلغ برگشت خورده ی رسید دیجیتال است.";break;
case '-14':$prompt="چنین تراکنشی تعریف نشده است.";break;
case '-15':$prompt="مبلغ برگشتی بصورت اعشاری داده شده است.";break;
case '-16':$prompt="خطای داخلی سیستم";break;
case '-17':$prompt="برگشت زدن جزوی تراکنش مجاز نمیباشد.";break;
case '-18':$prompt="ای پی سرور فروشنده نامعتبر است.";break;
default:$prompt="خطاي نامشخص.";
}
return "خطا ({$ResCode}) : {$prompt}";
}
بعد پرداخت مثل سابق عمل میکنم و نیازی به تغییرات نداریم
موفق باشید.
مشکلی داشتید در انجمن وب هاستینگ تاک و یا از طریق
تیکت مطرح کنید.
ادامه مطلب