راهنمای اتصال به درگاه پرداخت سداد بانک ملی – پی اچ پی
لینک کوتاه جمعه , 12 اردیبهشت 1393 21 دیدگاه
برای انجام عملیات پرداخت آنلاین باید مشتری را به مرحله ای برسانید که باید به درگاه برود و مبلغ را پرداخت کند .
در این مرحله شما باید شماره فاکتور عددی و همچنین مبلغ پرداختی را مشخص کرده باشید .
(داخل پرانتز : شما باید سه پارامتر MerchandID و TerminalID و TransactionKey که مربوط به اطلاعات پذیرندگی شماست داشته باشید و قبلا برای گرفتن درگاه به شرکت سداد مراجعه کرده باشید .)
برای اتصال به وبسرویس سداد در پی اچ پی شما باید از کلاس nusoap استفاده کنید .
آدرس وبسرویس سداد به شکل زیر است
https://sadad.shaparak.ir/services/MerchantUtility.asmx?wsdl
$soapclient = new nusoap_client('https://sadad.shaparak.ir/services/MerchantUtility.asmx?wsdl','wsdl'); $soapProxy = $soapclient->getProxy() ;
اکنون باید اطلاعات مبلغ (به ریال) ، شماره فاکتور و آدرس برگشت به سایت به همراه سه پارامتر اختصاصی درگاه را در متد PaymentUtility وبسرویس وارد کنید . به شکل زیر .
$MerchandID ='111111'; $amount='1000'; // 100 toman $order_id = 1 ; // tekrari babashad $TransactionKey='aaaaaa'; $TerminalID='222222'; $callback = 'http://example.org/callback.php?order_id='.$order_id; $result=$soapProxy->PaymentUtility($MerchandID,$amount,$order_id,$TransactionKey,$TerminalID,$callback);
متغییر result نتیجه برگشتی این متد هست که شامل آرایه ای با دو کلید RequestKey و PaymentUtilityResult میباشد .
کد RequestKey را در دیتابیس به همراه مبلغ تراکنش و شماره فاکتور تراکنش ذخیره کنید و از PaymentUtilityResult که یک فرم هست جهت ارسال به درگاه استفاده میکنید .
$RequestKey = $result['RequestKey']; // dar database zakhire konid $Form = $result['PaymentUtilityResult']; //sakht form echo $Form . " <Input type='submit' name=btnSubmit class='submit' value='pay'></form>";
بعد کاربر روی فرم کلیک میکند و به صفحه پرداخت بانک هدایت میشود و سپس در آنجا اطلاعات کارت را وارد میکند و مبلغ را پرداخت میکند و به آدرس callback ای که تعریف کردید برگشت داده میشود.
در آدرس کال بک بعد از برگشت کاربر باید صحت تراکنش انجام شده را باز با اتصال به وبسرویس استعلام کنید و شماره پیگیری را دریافت کنید.
با استفاده از order_id که بصورت کوئری استرینگ به آدرس کال بک دادیم اطلاعات تراکنش را از دیتابیس بیرون میکشیم .
سپس باید اطلاعات شماره فاکتور ، مقدار RequestKey (که در هنگام ارسال به درگاه گرفتیم و ذخیره کردیم) ، مبلغ تراکنش و همچنین سه پارامتر اختصاصی درگاه را در متد CheckRequestStatus قرار بدیم و نتیجه برگشتی را جهت بررسی صحت پرداخت تراکنش به دست بیاوریم .
بصورت زیر
$MerchandID ='111111'; $amount='1000'; // 100 toman $order_id = 1 ; // tekrari babashad $TransactionKey='aaaaaa'; $TerminalID='222222'; $RequestKey = ' ... '; //az database migiraim $soapclient = new nusoap_client('https://sadad.shaparak.ir/services/MerchantUtility.asmx?wsdl','wsdl'); $soapProxy = $soapclient->getProxy() ; $result=$soapProxy->CheckRequestStatus($order_id , $MerchandID , $TerminalID, $TransactionKey , $RequestKey , $amount);
جهت بررسی صحت تراکنش باید بررسی کنیم که کلید برگشتی متد بالا یعنی CheckRequestStatusResult مقدار صفر را داشته باشد و همچنین کلید RetrivalRefNo شماره پیگیری تراکنش به همراه تاریخ تراکنش است .
بصورت زیر
if( ! empty($result) and isset($result["CheckRequestStatusResult"])) { $StatusResult=$result["CheckRequestStatusResult"]; $StrResult=strval($StatusResult); if($StrResult==0) { echo "Transaction verifid. Code:". $result['RetrivalRefNo']; } else echo "Payment invalid!"; } echo "Payment invalid!";
چند نکته:
همیشه از دیتابیس استفاده کنید .
آی پی خریدار را در دیتابیس ذخیره کنید.
حتما مبلغ را ذخیره کنید.
جهت شماره فاکتور از اعداد رندم استفاده نکنید !! به جاش شماره ID اون رکورد دیتابیس رو ارسال کنید.
سعی کنید شماره فاکتور تکراری نداشته باشید .
حداقل مبلغ و حداکثر مبلغ رو قبل از ارسال به درگاه تعیین کنید .
حداقل رو روی 100 تومان و حداکثر رو روی یک میلیون تومان قرار بدید .
شماره پیگیری را در برگشت یادداشت کنید.
وبسرویس سداد بانک ملی نیازی به ستل ندارد ، تراکنش های شما 24 ساعت بعد به حسابتون واریز خواهند شد .
اگر درهنگام برگشت از متد CheckRequestStatus استفاده نکنید مبلغ 20دقیقه بعد به حساب پرداخت کننده برگشت میخورد .
اگر در هنگام برگشت به فروشگاه مشکلی برای کاربر پیش بیاید یا سایتتون داون بشود یا خطایی رخ بدهد که نتوانید شماره پیگیری را از وبسرویس بگیرید مبلغ برگشت میخورد.
نکته مهم اینکه سه پارامتر اختصاصی که بهتون دادن از بانک رو شدیدا محافظت کنید ، چون وبسرویس سداد به آی پی حساس نیست ، اگر کسی به کلیدهای شما دسترسی داشته باشد میتواند بعد از پرداخت خودش با استفاده از شماره پیگیری و پارامترهای اختصاصی شما به وبسرویس وصل بشود و تراکنش را برگشت بزند (با استفاده از سایر متدهای وبسرویس).
سوالی بود در خدمتم.
رضا شیخله
داش رضا کارت همیشه عالیه
دستت طلا :x