بروزرسانی در ۱۲ دی ماه ۱۳۹۹ : تغییر کدهای ارسال تراکنش بر اساس آخرین تغییرات درگاه سپهر الکترونیک صادرات
درگاه مستقیم و بی دردسر بانک صادرات برخلاف درگاه های واسط , مزایای بسیاری مثل تسویه حساب سریع، انتقال مستقیم وجه به حساب صادرات شما، نداشتن درصد کارمزد بانکی و .. خیلی موارد دیگر را دارد .
در این مقاله آموزشی قصد داریم نحوه دریافت درگاه بانک صادرات و آموزش اتصال به درگاه بانک صادرات php را به شما عزیزان نشان بدیم. ( اتصال به درگاه بانک ملت php )
درگاه بانک صادرات به نام های درگاه پرداخت مبنا کارت آریا و یا سپهر الکترونیک هم شناخته می شود پس همه اینها همان درگاه بانک صادرات هستند.
دریافت درگاه بانک صادرات
برای دریافت درگاه بانک صادرات به سایت خود بانک صادرات به آدرس زیر مراجعه کنید
با ورود به صفحه بالا اطلاعات شناسنامه ای , اطلاعات مدیر مسئول پذیرنده و اطلاعات سایت پذیرنده را پر کنید و بعد از طی کردن مراحل بالا و تایید اطلاعات, کلید ترمینال به شما تعلق می گیرد.
- نکته : شما باید یک حساب در بانک صادرات داشته باشید که بیشتر از ۴۸ ساعت از افتتاح حساب گذشته باشه
- نکته ۲ : برای دریافت درگاه بانک صادرات حتما سایت شما باید نماد اعتماد الکترونیک (اینماد) داشته باشد که هزینه سالیانه آن فقط ۳۵ هزار تومان است. لینک ثبت نام Enamad
نکته خیلی مهم : اطلاعات مربوط به آدرس سایت خود و آی پی فروشگاه اینترنتی خود را وارد نمایید(برای به دست آوردن آی پی راه های متفاوتی وجود داره که بهترین راه تیکت زدن و پرسیدن اون آی پی از مسئول سرورتون که هاست ازش خریدین ، هستش) دقت داشته باشین IP بسیار مهم هست و برای اتصال درگاه به سایت شما نقش اساسی دارد پس IP درست را وارد نمایید.
خیلی از کاربران در این قسمت تصور می کردند آی پی سایتشون همان آیپی مربوط به درگاه هستش که بعد از وارد کردن هنگامی که درگاه را دریافت کردند با مشکل روبرو شدند چون درگاه ها بر اساس IP سرویس دهنده شما منتقل میشه و تبادل اطلاعات میکند برای
همین اکیدا توصیه میشه که آی پی درگاه را از پشتیبانی هاست دریافت کنید که بعدا به مشکلی برنخورید.
بعد از تایید اطلاعات شما و بررسی سایت شما توسط کارشناسان یک ایمیل از اطلاعات برای شما ارسال می شود که شامل شماره پذیرنده (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 را از باکس دانلود دریافت کنید.
موفق و پیروز باشید.
سلام و خسته نباشید من یک سوال داشتن درباره کد
$_POST[‘digitalreceipt’]) و $_POST[‘respcode’] چی هستند میشه برای من توضیح بدید نمی فهمم چکار کردید؟؟
و ایا این اطلاعات را اول در جول ذخیره می کنید بعد اون ها را در صحفه بررسی و تاکید تراکنش میارید؟
سلام. ممنون.
نیازی نیست بدونید این موارد چی هستند و جایی هم نمی خواد ذخیره کنید.
تنها موردی که مهم هست همان $_POST[‘invoiceid’] شماره سفارش که در دیتابیس سطر آن را ذخیره کردید هست که اگر تراکنش موفق بود با همان آیدی سفارش را در دیتابیس پیدا و موفق ثبت کنید همین.
سلام و خسته نباشید من برای سایتم می خواستم به درگا بانک صادرات متصل بشم و از کدهای شما استفاده کردم متاسفانه هیچ واکنشی نشون نداد و حتی به صحفه اتصال به بانک که بخواهد شماره کارت بگیره هم نرسید میشه راهنمایی کنید؟؟؟
ایا نیاز به کتاب خانه داره؟!
سلام. ممنون.
خیر نیازی به کتابخانه نداره. این مورد رو باید دقیقتر بررسی کنید یعنی اول در یک صفحه php جداگانه از cms سایت این رو تست کنید (فایل pay.php و verify.php بسازید و کدها رو داخلش بزارید و مستقیم از url اجرا کنید) و بعد داخل سیستم خود پیاده کنید
نیاز به هیچ کتابخانه ای نداره بجز curl که خب معمولا در همه هاست ها فعال است
سلام مجدد
الان که یه بار دیگه امتحان کردم بهم خطا میده
خطاش هم:عملیات درخواستی شما با خطا مواجه شده است