بروزرسانی در ۱۲ دی ماه ۱۳۹۹ : تغییر کدهای ارسال تراکنش بر اساس آخرین تغییرات درگاه سپهر الکترونیک صادرات
درگاه مستقیم و بی دردسر بانک صادرات برخلاف درگاه های واسط , مزایای بسیاری مثل تسویه حساب سریع، انتقال مستقیم وجه به حساب صادرات شما، نداشتن درصد کارمزد بانکی و .. خیلی موارد دیگر را دارد .
در این مقاله آموزشی قصد داریم نحوه دریافت درگاه بانک صادرات و آموزش اتصال به درگاه بانک صادرات php را به شما عزیزان نشان بدیم. ( اتصال به درگاه بانک ملت php )
درگاه بانک صادرات به نام های درگاه پرداخت مبنا کارت آریا و یا سپهر الکترونیک هم شناخته می شود پس همه اینها همان درگاه بانک صادرات هستند.
دریافت درگاه بانک صادرات
برای دریافت درگاه بانک صادرات به سایت خود بانک صادرات به آدرس زیر مراجعه کنید
با ورود به صفحه بالا اطلاعات شناسنامه ای , اطلاعات مدیر مسئول پذیرنده و اطلاعات سایت پذیرنده را پر کنید و بعد از طی کردن مراحل بالا و تایید اطلاعات, کلید ترمینال به شما تعلق می گیرد.
- نکته : شما باید یک حساب در بانک صادرات داشته باشید که بیشتر از ۴۸ ساعت از افتتاح حساب گذشته باشه
- نکته ۲ : برای دریافت درگاه بانک صادرات حتما سایت شما باید نماد اعتماد الکترونیک (اینماد) داشته باشد که هزینه سالیانه آن فقط ۳۵ هزار تومان است. لینک ثبت نام Enamad
بعد از تایید اطلاعات شما و بررسی سایت شما توسط کارشناسان یک ایمیل از اطلاعات برای شما ارسال می شود که شامل شماره پذیرنده (MID)، شماره ترمینال (TID) و یوزر و پسورد سامانه گزارشات است که برای کد اتصال به درگاه فقط نیاز به شماره ترمینال (TID) دارید.
اتصال به درگاه بانک صادرات php
به منظور استفاده هرچه راحتر یک یک تابع ارسال و یک تابع برگشت برای ارسال تراکنش به بانک و برسی تراکنش بعد از برگشت از بانک نوشتم که کار شما رو تا حد زیادی راحت میکنه.
در آخر پروژه فایل های کامل و مورد نیاز در اتصال به بانک را برای دانلود قرار دادیم.
بنابراین می توانید به راحتی کد ررا در هرجایی از پروژه نیاز بود استفاده کنید.
pay.php – ارسال تراکنش :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php /* * Mabna Card Aria ( MC || Saderat | Sepehr ) IPG V2-Token PHP Code * * author : NETPARADIS [Hasan Shafie] * website: https://netparadis.com * */ $amount = 1000; // Rial $terminal = "00000000"; // شماره ترمینال (TID) $invoiceNumber = "100010"; // شماره سفارشی که در دیتابیس ذخیره می کنید $redirectAddress = "http://example.com/verify.php"; // آدرس بازگشت به سایت برای تایید تراکنش // Post Data $data= array( 'Amount'=>$amount, 'callbackURL'=> $redirectAddress, 'invoiceID'=> $invoiceNumber, 'terminalID'=> $terminal, 'payload'=> '' ); $dataQuery=http_build_query($data); $AddressServiceToken="https://mabna.shaparak.ir:8081/V1/PeymentApi/GetToken"; // Get Token $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $AddressServiceToken); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataQuery); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $TokenArray = curl_exec($ch); curl_close($ch); $decode_TokenArray=json_decode($TokenArray); $Status =$decode_TokenArray->Status; $AccessToken=$decode_TokenArray->Accesstoken; if(!empty($AccessToken) && $Status == 0){ $AddressIpgPay="https://mabna.shaparak.ir:8080/pay"; echo '<form id="paymentUTLfrm" action="'.$AddressIpgPay.'" method="POST"> <input type="hidden" id="TerminalID" name="TerminalID" value="'.$terminal.'"> <input type="hidden" id="Amount" name="Amount" value="'.$amount.'"> <input type="hidden" id="callbackURL" name="callbackURL" value="'.$redirectAddress.'"> <input type="hidden" id="InvoiceID" name="InvoiceID" value="'.$invoiceNumber.'"> <input type="hidden" id="Payload" name="Payload" value=""> <script>document.forms["paymentUTLfrm"].submit()</script> </form>'; }else echo "با خطا مواجه شد به عقب برگشته و درگاه دیگری انتخاب کنید"; ?> |
verify.php – بررسی و تایید تراکنش :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php /* * Mabna Card Aria ( MC || Saderat | Sepehr ) IPG V2-Token PHP Code * * author : NETPARADIS [Hasan Shafie] * website: https://netparadis.com * */ $amount = 1000; // Rial $terminal = "00000000"; // شماره ترمینال (TID) $invoiceNumber = (isset($_POST['invoiceid'])) ? $_POST['invoiceid'] : ""; $digitalreceipt = (isset($_POST['digitalreceipt'])) ? $_POST['digitalreceipt'] : ""; if(isset($_POST['respcode']) && $_POST['respcode'] == '0') { $params = "digitalreceipt={$digitalreceipt}&Tid={$terminal}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://mabna.shaparak.ir:8081/V1/PeymentApi/Advice'); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); curl_close($ch); $result = json_decode($res,true); if (strtoupper($result['Status']) == 'OK') { if(floatval($result['ReturnId']) == floatval($amount)) { echo "Transaction Successful - invoice Number : {$invoiceNumber} - reference Id : {$digitalreceipt}"; } else { echo "مبلغ واریز با قیمت محصول برابر نیست ، مبلغ واریزی : {$result['ReturnId']}"; } } else { switch($result['ReturnId']) { case '-1' : $err = 'تراکنش پیدا نشد';break; case '-2' : $err = 'تراکنش قبلا Reverse شده است';break; case '-3' : $err = 'خطا عمومی';break; case '-4' : $err = 'امکان انجام درخواست برای این تراکنش وجود ندارد';break; case '-5' : $err = 'آدرس IP پذیرنده نامعتبر است';break; default : $err = 'خطای ناشناس : '.$result['ReturnId'];break; } echo $err; } } else { $resultCode = 'برگشت ناموفق از درگاه'; } ?> |
اگر تراکنش تایید شود متن Transaction Successful – invoice Number : نمایش داده می شود که اینجا باید عملیات مورد نظر مثل تغییر وضعیت سفارش در دیتابیس یا ارایه خدمات یا محصول به کاربر و هدایت به صفحه تشکر یا نمایش لینک های دانلود یا هر چیزی که مربوط به نوع سایت شما است را نمایش بدید.
در غیر اینصورت خطاهایی مثل IP و غیره با متن کامل برای شما نمایش داده می شود.
هر سوالی یا مشکلی بابت کد داشتید از طریق نظرات این مطلب ارسال کنید. سریعا, پاسخگوی سوالات شما هستیم.
همچنین کد کامل به همراه داکیومنت فارسی اتصال به درگاه بانک صادرات php را از باکس دانلود دریافت کنید.
موفق و پیروز باشید.
با سلام
من واسه اتصال به درگاه بانک صادرت از این کد استفاره میکنم
public function request($price = NULL , $order_id = NULL , $callback = NULL)
{
try
{
$soapclient = new nusoap_client(‘https://sep.shaparak.ir/payments/initpayment.asmx?wsdl’,’wsdl’);
$soapProxy = $soapclient->getProxy();
}
catch(Exception $e)
{
Logs::model()->add(‘بانک صادرات’,”error in connect and get token”);
return -6;
}
$token = $soapProxy->RequestToken($this->pin, $order_id, $price * 10);
if(empty($token))
{
Logs::model()->add(‘بانک صادرات’,”token empty”);
return -6;
}
if(strlen($token)add(‘بانک صادرات’,$this->sepResErr($token));
return -6;
}
//connect ok
$au = $order_id.’_saderat_’;
$trans = Trans::model()->find(‘id=?’,array( $order_id));
$_ = array();
$_[‘Amount’] = $price*10;
$_[‘ResNum’] = $order_id;
$_[‘CellNumber’] = $trans->description;
$_[‘RedirectURL’] = $callback;
$_[‘token’] = $token;
Yii::app()->cache->set($au, $_ ,200);
return $au;
}
تا همین چند هفته قبل خوب بود
ولی جدیدا همه اش ارو میده که توکن خالیه!
token empty
شما می دونید دلیلش چی می تونه باشه؟
سلام. احتمالا به خاطر ورژن php یا نسحه nusoap مشکل پیدا کرده. اخرین نسخه مناسب با ورژن phpتون رو از گیت هاب دانلود کنید
https://github.com/f00b4r/nusoap
سلام تشکر بابت آموزش
اموزشی برای همین درگاه پرداخت در لاراول هم دارین؟
سلام. بله بفرمایید:
https://github.com/larabook/saderat
سلام وقت شما بخیر
آیا لازمه که پورت ۸۰۸۱ برای استفاده از این کد باز باشه؟ یا نیازی نیست؟
سلام ممنون
نه نیاز نیست
استاد طبق این خط کد ما باید به این ادرس توکن و و شماره پایانه بفرستید ولی نفرستادید.این درستهhttps://mabna.shaparak.ir:8080/pay
منظورم اینجاست
if(!empty($AccessToken) && $Status == 0){
$AddressIpgPay=”https://mabna.shaparak.ir:8080/pay”;
سلام.
داخل فرم زیر همون خط اطلاعات ارسال میشه
پس استاد ظاهرا الان سرویس تغییر کرده.الان وقتی شما این پارامترها رو ارسال کردی برای سرویس توکن وقتی برگشت اطلاعات میاد شما فقط باید پایانه و توکن ارسال کنید ولی شما دوباره همرو ارسال کردید مجددا
عزیز کدی برای سی شارپ هم داری.چون برای سی شارپ چیزی پیدا نکردم اصلا
سلام نه متاسفانه
سلام خسته نباشید
ممنون از اموزش خوبتون
فایل سورس رمز داره
رمزش چیه ؟
سلام
ادرس سایت با www
سلام
می خواستم بدانم برای اتصال به بانک صادرات باید php چند را دانلود کنم؟
سلام. php 7.3
سلام
فرقی میکنه ک فرم ها به آدرس “https://sepehr.shaparak.ir” یا “https://mabna.shaparak.ir” ارسال بشن؟
این تغییر در ورژن ۳٫۰٫۰ در تاریخ ۱۳۹۹/۱۰/۱۵ صورت گرفت. با شرح: تغییر آدرس دامین شرکت مبنا کارت آریا به شرکت پرداخت الکترونیک سپهر
سلام.
باید طبق آپدیت تغییر بدید
سلام وقتتون بخیر
برای بخشی از توضیحات ذکر کردید که: اطلاعات مربوط به آدرس سایت خود و آی پی فروشگاه اینترنتی خود را وارد نمایید.
سوال : آی پی رو توی چه قسمتی یا کجا باید وارد کنیم ؟
متشکرم
سلام. ممنون
برای ثبت درخواست درگاه صادرات نیاز به وارد کردن آیپی نیست و فقط اطلاعات درخواستی فرم را پر و ارسال کنید
سلام وقتتون بخیر
خیلی ممنون از توضیحات قشنگ و خوبتون
شما خیلی بهتر از خود بانک نوشتید کد رو
ممنونم
سلام ممنون.
خوشحالیم که مفید واقع شده.
موفق باشید.
سلام وقت بخیر برای اتصال به درگاه status -2 میده معنیش چیه؟؟
سلام. ممنون.
داخل داکیومنت رو نگاه کنید
سلام و خسته نباشید من یک سوال داشتن درباره کد
$_POST[‘digitalreceipt’]) و $_POST[‘respcode’] چی هستند میشه برای من توضیح بدید نمی فهمم چکار کردید؟؟
و ایا این اطلاعات را اول در جول ذخیره می کنید بعد اون ها را در صحفه بررسی و تاکید تراکنش میارید؟
سلام. ممنون.
نیازی نیست بدونید این موارد چی هستند و جایی هم نمی خواد ذخیره کنید.
تنها موردی که مهم هست همان $_POST[‘invoiceid’] شماره سفارش که در دیتابیس سطر آن را ذخیره کردید هست که اگر تراکنش موفق بود با همان آیدی سفارش را در دیتابیس پیدا و موفق ثبت کنید همین.
سلام و خسته نباشید من برای سایتم می خواستم به درگا بانک صادرات متصل بشم و از کدهای شما استفاده کردم متاسفانه هیچ واکنشی نشون نداد و حتی به صحفه اتصال به بانک که بخواهد شماره کارت بگیره هم نرسید میشه راهنمایی کنید؟؟؟
ایا نیاز به کتاب خانه داره؟!
سلام. ممنون.
خیر نیازی به کتابخانه نداره. این مورد رو باید دقیقتر بررسی کنید یعنی اول در یک صفحه php جداگانه از cms سایت این رو تست کنید (فایل pay.php و verify.php بسازید و کدها رو داخلش بزارید و مستقیم از url اجرا کنید) و بعد داخل سیستم خود پیاده کنید
نیاز به هیچ کتابخانه ای نداره بجز curl که خب معمولا در همه هاست ها فعال است
سلام مجدد
الان که یه بار دیگه امتحان کردم بهم خطا میده
خطاش هم:عملیات درخواستی شما با خطا مواجه شده است