بروزرسانی در ۳ بهمن ۱۳۹۷ : افزودن لیست خطاهای درگاه بانک ملت
بروزرسانی در ۲۷ شهریور ۱۳۹۷ : افزودن کلاس PHP جدا و پکیج لاراول درگاه بانک ملت
درگاه مستقیم و بی دردسر بانک ملت مزایای بسیاری مثل تسویه حساب سریع ، انتقال مستقیم وجه به حساب ملت شما ، نداشتن درصد کارمزد بانکی و .. خیلی موارد دیگر را دارد .در این مقاله آموزشی قصد داریم نحوه دریافت درگاه بانک ملت و آموزش اتصال به درگاه بانک ملت php را به شما عزیزان نشان بدیم.
دریافت درگاه بانک ملت
برای دریافت درگاه بانک ملت به سایت به پرداخت تحت مجموعه خود بانک ملت به آدرس زیر مراجعه کنید
بسته به نوع کسب و کار خود نوع حقوقی و یا حقیقی را انتخاب کنید
در مرحله بعد از شما یک سری اطلاعات از شخص شما یا شرکت درخواست می شود که باید با دقت وارد و ثبت کنید
بعد از ثبت درخواست از شما مدارکی به شرح زیر اخذ می شود .
مدارک مورد نیاز دریافت درگاه بانک ملت
- مشتریان حقیقی :
اصل و کپی شناسنامه و کارت ملی مالک سایت
دارا بودن اسناد تملیکی و استیجاری مرتبط با محل فعالیت
امکان ارائه مجوزهای رسمی از مراجع ذیصلاح جهت کسب و کار اینترنتی
دارا بودن آدرس اینترنتی (دامنه) با پسوندهای مجاز نظیر
.com , .org , .net , .biz , .ir (All .ir SubDomain like .co.ir or .ac.ir and …) - مشتریان حقوقی :
کپی شناسنامه و کارت ملی صاحبان امضا
نداشتن مطالبات معوق و چک برگشتی در سیستم بانکی کشور
کپی آگهی تاسیس و آخرین تغییرات شرکت-روزنامه رسمی
کپی اساسنامه شرکت
دارا بودن آدرس اینترنتی (دامنه) با پسوندهای مجاز نظیر - com , .org , .net , .biz , .ir (All .ir SubDomain like .co.ir or .ac.ir and …)
خوب بعد از آماده سازی این مدارک برروی ثبت درخواست کلیک کنید تا وارد صفحه بعد بشید.
نکته : شما باید یک حساب در بانک ملت داشته باشید که بیشتر از ۴۸ ساعت از افتتاح حساب گذشته باشه
بروزرسانی اول : برای دریافت درگاه بانک ملت نیازی به مراجعه حضوری نیست و تمامی کارها از طریق ایمیل انجام میشود
بروزرسانی دوم : برای استفاده از درگاه بانک ملت نیازی به داشتن حساب در بانک ملت نیست و شما میتوانید اطلاعات حساب یک بانک دیگر را ارائه دهید.
نکته ۲ : برای دریافت درگاه بانک ملت حتما سایت شما باید نماد اعتماد الکترونیک (اینماد) داشته باشد که هزینه سالیانه آن فقط ۳۵ هزار تومان است.(رایگان شد!) لینک ثبت نام Enamad
نکته خیلی مهم : اطلاعات مربوط به آدرس سایت خود و آی پی فروشگاه اینترنتی خود را وارد نمایید(برای به دست آوردن آی پی راه های متفاوتی وجود داره که بهترین راه تیکت زدن و پرسیدن اون آی پی از مسئول سرورتون که هاست ازش خریدین ، هستش) دقت داشته باشین IP بسیار مهم هست و برای اتصال درگاه به سایت شما نقش اساسی دارد پس IP درست را وارد نمایید.
خیلی از کاربران در این قسمت تصور می کردند آی پی سایتشون همان آیپی مربوط به درگاه هستش که بعد از وارد کردن هنگامی که درگاه را دریافت کردند با مشکل روبرو شدند چون درگاه ها بر اساس IP سرویس دهنده شما منتقل میشه و تبادل اطلاعات میکند برای همین اکیدا توصیه میشه که آی پی درگاه را از پشتیبانی هاست دریافت کنید که بعدا به مشکلی برنخورید
پس از تایید و ارسال فرم یک ایمیل راهنمایی برای شما ارسال می شود که از شما مدارکی را می خواهند که باید بصورت عکس های تکی به ایمیل ضمیمه کنید.بعد از بررسی های نداشتن مطالبات معوق و چک برگشتی در سیستم بانکی کشور و خوش حساب بودن شما پس از طی مراحل اداری حدودا از ۴ روز تا ۱ هفته شایدم بیشتر اطلاعات درگاه براتون ایمیل میشه که شامل شماره ترمینال یوزرنیم و پسورد هستش که در مراحل بعد در کد نویسی آموزش اتصال به درگاه بانک ملت php استفاده خواهیم کرد.
اتصال به درگاه بانک ملت php
برنامه نویسی درگاه با توجه به نیاز به استفاده از توابع Soap در PHP کاری بسیار چالش برانگیز بوده، زیرا این تابع در نسخه های مختلف PHP رفتار متفاوتی را از خود نشان می دهد.
به منظور استفاده هرچه راحتر یک نمونه کد ” اتصال به درگاه بانک ملت php ” برای ارسال تراکنش به بانک و یک نمونه کد برسی تراکنش بعد از برگشت از بانک نوشتم که کار شما رو تا حد زیادی راحت میکنه
در آخر پروژه فایل nusoap برای اتصال به بانک را برای دانلود قرار دادیم
index.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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
<?php include_once('lib/nusoap.php'); $terminalId = "0000000"; // Terminal ID $userName = "xxxxxxx"; // Username $userPassword = "0000000"; // Password $orderId = time(); // Order ID $amount = "1000"; // Price / Rial $localDate = date('Ymd'); // Date $localTime = date('Gis'); // Time $additionalData = ''; $callBackUrl = "http://name.ir/verify.php"; // Callback URL $payerId = 0; //-- تبدیل اطلاعات به آرایه برای ارسال به بانک $parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'amount' => $amount, 'localDate' => $localDate, 'localTime' => $localTime, 'additionalData' => $additionalData, 'callBackUrl' => $callBackUrl, 'payerId' => $payerId); $client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl'); $namespace='http://interfaces.core.sw.bps.com/'; $result = $client->call('bpPayRequest', $parameters, $namespace); //-- بررسی وجود خطا if ($client->fault) { //-- نمایش خطا echo "There was a problem connecting to Bank"; exit; } else { $err = $client->getError(); if ($err) { //-- نمایش خطا echo "Error : ". $err; exit; } else { $res = explode (',',$result); $ResCode = $res[0]; if ($ResCode == "0") { //-- انتقال به درگاه پرداخت echo '<form name="myform" action="https://bpm.shaparak.ir/pgwchannel/startpay.mellat" method="POST"> <input type="hidden" id="RefId" name="RefId" value="'. $res[1] .'"> </form> <script type="text/javascript">window.onload = formSubmit; function formSubmit() { document.forms[0].submit(); }</script>'; exit; } else { //-- نمایش خطا echo "Error : ". $result; exit; } } } ?> |
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 |
<?php if ($_POST['ResCode'] == '0') { //--پرداخت در بانک باموفقیت بوده include_once('lib/nusoap.php'); $client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl'); $namespace='http://interfaces.core.sw.bps.com/'; $terminalId = "0000000"; // Terminal ID $userName = "xxxxxxx"; // Username $userPassword = "0000000"; // Password $orderId = $_POST['SaleOrderId']; // Order ID $verifySaleOrderId = $_POST['SaleOrderId']; $verifySaleReferenceId = $_POST['SaleReferenceId']; $parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId); // Call the SOAP method $result = $client->call('bpVerifyRequest', $parameters, $namespace); if($result == '0') { //-- وریفای به درستی انجام شد٬ درخواست واریز وجه // Call the SOAP method $result = $client->call('bpSettleRequest', $parameters, $namespace); if($result == '0') { //-- تمام مراحل پرداخت به درستی انجام شد. //-- آماده کردن خروجی echo 'The transaction was successful'; } else { //-- در درخواست واریز وجه مشکل به وجود آمد. درخواست بازگشت وجه داده شود. $client->call('bpReversalRequest', $parameters, $namespace); echo 'Error : '. $result; } } else { //-- وریفای به مشکل خورد٬ نمایش پیغام خطا و بازگشت زدن مبلغ $client->call('bpReversalRequest', $parameters, $namespace); echo 'Error : '. $result; } } else { //-- پرداخت با خطا همراه بوده echo 'Error : '. $_POST['ResCode']; } ?> |
لیست ارورهای درگاه بانک ملت
Error | پیغام |
---|---|
۰ | تراکنش با موفقیت انجام شد |
۱۱ | شماره کارت نامعتبر است |
۱۲ | موجودی کافی نیست |
۱۳ | رمز نادرست است |
۱۴ | تعداد دفعات وارد کردن رمز بیش از حد مجاز است |
۱۵ | کارت نامعتبر است |
۱۶ | دفعات برداشت وجه بیش از حد مجاز است |
۱۷ | کاربر از انجام تراکنش منصرف شده است |
۱۸ | تاریخ انقضای کارت گذشته است |
۱۹ | مبلغ برداشت وجه بیش از حد مجاز است |
۲۱ | پذیرنده نامعتبر است |
۲۳ | خطای امنیتی رخ داده است |
۲۴ | اطلاعات کاربری پذیرنده نامعتبر است |
۲۵ | مبلغ نامعتبر است |
۳۱ | پاسخ نامعتبر است |
۳۲ | فرمت اطلاعات وارد شده صحیح نمی باشد |
۳۳ | حساب نامعتبر است |
۳۴ | خطای سیستمی |
۳۵ | تاریخ نامعتبر است |
۴۱ | شماره درخواست تکراری است |
۴۲ | یافت نشد Sale تراکنش |
۴۳ | قبلا درخواست Verify داده شده است |
۴۴ | درخواست Verfiy یافت نشد |
Error | پیغام |
---|---|
۴۵ | تراکنش Settle (تسویه) شده است |
۴۶ | تراکنش Settle (تسویه)نشده است |
۴۷ | تراکنش Settle یافت نشد |
۴۸ | تراکنش Reverse شده است |
۴۹ | تراکنش Refund یافت نشد |
۵۱ | تراکنش تکراری است |
۵۴ | تراکنش مرجع موجود نیست |
۵۵ | تراکنش نامعتبر است |
۶۱ | خطا در واریز |
۱۱۱ | صادر کننده کارت نامعتبر است |
۱۱۲ | خطای سوییچ صادر کننده کارت |
۱۱۳ | پاسخی از صادر کننده کارت دریافت نشد |
۱۱۴ | دارنده کارت مجاز به انجام این تراکنش نیست |
۴۱۲ | شناسه قبض نادرست است |
۴۱۳ | شناسه پرداخت نادرست است |
۴۱۴ | سازمان صادر کننده قبض نامعتبر است |
۴۱۵ | زمان جلسه کاری به پایان رسیده است |
۴۱۶ | خطا در ثبت اطلاعات |
۴۱۷ | شناسه پرداخت کننده نامعتبر است |
۴۱۸ | اشکال در تعریف اطلاعات مشتری |
۴۱۹ | تعداد دفعات ورود اطلاعات از حد مجاز گذشته است |
۴۲۱ | IP نامعتبر است |
محتوای فایل ZIP :
- دو نسخه هماهنگ با PHP ورژن های ۵٫۶ به پایین و ۷ به بالا در فولدر
/purePHP
وجود دارد. - کلاس آماده درگاه بانک ملت نیز در فولدر
/phpClass
قرار دارد که می تواند آن را در همه جای پروژه فقط با ساختن شی استفاده کنید (نحوه استفاده از این کلاس و یک فایل نمونه از آن همراه سورس کد قرار داده شده است). - نسخه مخصوص اتصال به درگاه بانک ملت برای فریموک لاراول نیز در فولدر
/Laravel
قرار دارد.
ارور ۴۳ رو چجوری برطرف کنیم؟
بعضی مشتریا وقتی که پرداخت میکنن و پیام موفقیت رو دریافت میکنن ولی بعدش میگه پرداخت با مشکل مواجه شده تا ۷۲ ساعت دیگه به حسابتون برمیگرده .ولی هیچ مشکلی نیس درواقع ، پولم به حسابشون برنمیگرده
ایا از طرف بانک مشکل داره یا کدنویسی ایراد داره؟ حدس میزنم که بعضیا چون صفحه رو رفرش میکنن بعد از گرفتن پیام موفقیت آمیز این مشکل رو دارن .چون فقط یه تعدادی با این مشکل مواجه شدن.
خودتون یکبار پرداخت انجام بدید و تست کنید این مورد رو.
همچنین اگر اوکی نشد از یک برنامه نویسی کمک بگیرید تا شخصا براتون تست کنند.
تست کردیم در حالت عادی مشکلی نیس ولی وقتی صفحه ای که نتیجه رو نشون میده یه بار رفرش کنیم این ارور رو برمیگردونه
در صفحه نمایش نتیجه شما یه ریدایرکت مثلا ۵ ثانیه ای بزارید تا کاربر به صفحه دیگری مثلا پنل کاربری یا صفحه تشکر یا سایت یا صفحه محصول هدایت بشه و فرصت نکنه رفرش کنه
با سلام من مدت ۲ سال کدها رو داخل سایت گذاشتم و کار می کرد ولی چند وقتی هست این خطا رو میده نه هاست و نه بانک هم میگن ایراد از ما نیست منم به کد ها دست نزدم نمی دونم ایراد از کجاست ممنون میشم راهنمایی کنید اینک خطایی که میده Error : HTTP Error: no proper separation of headers and document
با سپاس
سلام. بخاطر nusoap یا تداخل با ورژن php شما میتونه باشه. سورس کد را مجدد دانلود و بر اساس ورژن php که ۵ یا ۷ است یکی از nusoap ها را جایگزین و مجدد تست کنید
با سلام مجدد ورژن php سایت ۵ هست و soap رو هم وقتی infophp() رو زدم enable هست و سرویس دهنده هاست هم میگه چک کردم مشکلی نداره حتی sample برنامه رو هم از خود بانک گرفتم بارگزاری کردم اون هیچ جوابی نمیده بانک هم میگه شما هیچ لاگی نمی ندازید اصلا به منا وصل نمیشید یعنی سرویس دهنده هم میگه همچی درسته برنامه هم که دست نخورده دیگه واقعا نمیدونم ایراد از کجاست اگه میشه لطف کنید راهنمایی کنید، سپاس
سلام. لطفا با برنامه نویس سایتتون در ارتباط باشید تا مشکل بوجود آمده را حل کنند. چون با وجود مواردی که گفتید باید مشکل خاصی وجود داشته باشد.
میتونه مشکل از نوع اینکود فایل باشه یا هر نوع مورد دیگری که تا دستی بررسی نشه نمیشه گفت مشکل چی هست
میتونید روی هاست یک فایل جدا مثلا test.php بسازید و بعد کدهای بخش index.php – ارسال تراکنش به درگاه بانک ملت : داخلش قرار بدید و بعد اطلاعات ترمینال رو که جایگزین کردید یک تراکنش تستی انجام بدید ببینید متصل میشه یا خیر البته چون نیاز به nusoap هم دارید میتونید از دانلود باکس دریافت و کنار این فایل تستی قرار بدید (بنابر ورژن php از یکی از فولدر ها بردارید.)
برنامه نویسی رو خودم انجام دادم الانم کاری که گفتید رو انجام دادم بازم همون پیغام رو داد فقط چیزی که هست من مطمئنم ایراد از سمت سرور هست ولی اونا میگن مشکلی نیست و اگر تنظیماتی می خواید بگید تا ما انجام بدیم خلاصه خیلی گیج کننده است در هر صورت خیلی ممنون
سلام. اگه از لاراول استفاده میکنید یه نگاهی به پکیج زیر بندازید. تمام درگاه های بانکی کشور رو تقریبا ساپورت میکنه
https://github.com/shetabit/payment
خب الان چطور میشه ازش استفاه کرد
بنابر ساختار پروژه باید به کدهای php خود بخش هدایت به درگاه در بخش ثبت سفارش اضافه کنید
سلام. من die_dump میگیرم (همون dd) توی لاراول، همه چی اوکی هست و ResCode صفر دریافت میکنم. اما به درگاه هدایت نمیشه! باید کاری کنم که به درگاه بره؟
برای من عدد ۲۱ رو return میکنه. مشکل چیه؟
پذیرنده نامعتبر است. اطلاعات درگاه را بدرستی وارد نکردید
بهشون ایمیل دادم میگن «خطایی سمت ما یافت نشد». والا از سداد گرفتیم انقدر دردسر نداشت. اینا انقدر خوشحالن که شبا پاسخگو نیستن. یعنی اگه من شب دوتا مشتری میلیونی داشته باشم، اینا خوابن و باید مشتریای من بپرن!
سلام. بنده به برنامه نویس قبلی شرکت دسترسی ندارم. یکی از سایتهایمان هنگام اتصال به درگاه بانکی ارور “مبلغ نامعتبر می باشد” میدهد. قبل از این درست کار میکرده.ما تغییرات در سورس نداشتیم فقط هاستمان مشکل پیدا کرده بود. با بانک مکاتبه کرده اند، گفتند: اخطار از سمت برنامه نویسی سایت است. اطلاعات کمی از php میدانم. لطفا راهنمایی بفرمایید.
سلام. نمیشه نظر خاصی داد. باید روی هاست برنامه تست و خطایابی بشه
ممنونم. مثلا چه تستی؟ چند ارور جزیی هم در سایر سایت ها داشتیم که به پرمیشن مربوط بود. درست که کردیم، اوکی شد.
پس خیلی خوبه مشکلتون حل شده.
موفق باشید.
سلام میلاد صفحه پرداخت در کدوم قسمت سورس هست ؟
از این سورس چجوری استفاده کنیم؟
لاراول هم لازمه ؟
لطفا راهنمایی کنید؟
خیلی ممنون
سلام. اگر از لاراول استفاده می کنید نیاز نیست.
داخل فولدر purePHP دو بخش وجود دارد که بنابر ورژن php خودتون یکی رو انتخاب و استفاده کنید.
سلام خسته نباشید
من برای گرفتن درگاه توی فرم بانک یه آدرس call back و پورت call back را میخام.میشه راهنمایی کنید بگین اینا چی هست واز کجا پیداش کنم؟؟؟
ممنونم
سلام ممنون.
آدرس کال بک همان آدرس سایتتون است و پورت هم که میتونید ۸۰ بزارید.
موفق باشید.
ممنونم .لطف کردین
سلام
داکیومنت خود بانک ملت ناقص هست
در بخش وریفای تراکنش پیشنهاد میکنم که از در ابتدا از تمام داده های POSTشده از طرف بانک استفاده نمایید
بانک داده های بیشتری از انچه که در داکیومت موجود هست از درگاه به سایت پذیرنده POST میکند که برای اعتبار سنجی واطمینان از عدم وجود اقدام غیر مجاز کاربران جلوگیری کرده
سلام
اگر بخوام از پکیج شما برای نوشتن api در لاراول استفاده کنم امکانش هست؟
api مربوط به پرداخت نهایی که به سمت بانک فرستاده میشه چطور انجام میشه؟
سلام. نمونه پکیج لاراول مربوط به api پرداخت در فایل قرار گرفته شده در باکس دانلود قابل دسترسی است و میتونید استفاده کنید.
موفق باشید.
ممنون
بله اون پکیج رو دیدم، ولی اینجوری که بخوایم api بنویسیم به نحوی که view نداشته باشه و فقط api نوشته شده ی ما، از طرف اندروید یا ios صدا زده بشه… به این شکل امکانش هست؟
این آموزش ها رو باید مطالعه کنید : https://netparadis.com/?s=api
موفق باشید.
با تشکر از آموزش خوبتون!
اگر بخوام از یه درگاه دیگه استفاده کنم چطور میتونم موقه برگشت یه value برگردونم که بفهمم مال یه سایت دیگس ؟
هر دو سایت مال خودم هست!
سلام. خوشحالیم که مفید واقع شده.
هنگام ارجاع کاربر به بانک می توانید در callback url یک کویری استرینگ بصورت مثلا gateway=mellat تعریف کنید و هنگام بازگشت از بانک بخوانید و عملیات موردنظر را پیش ببرید.
موفق باشید.
مشکل حل شد! خیلی ممنونم.
سلام برای اتصال سایت جوملایی به درگاه پارسیان کد آماده وجود داره؟یا همین کدها رو میشه تغییر داد؟
سلام.
اتصال به درگاه بانک پارسیان
موفق باشید
سلام وققتون بخیر
من از لاراول استفاده میکنم وقتی که درخواست با موفقیت ارسال میشه بعد از اینکه پرداخت رو انجام میدم در مرحه وریفای ۲ تا پارامتر از طریق متد پست به آدرس کالبک ارسال میشه خب مشکل اینجا شروع میشه همرا متد پست باید csrf هم ارسال بشه . خب برای این موضوع چکاری باید انجام بدم تا با خطا مواجه نشم
سلام ممنون.
نیاز نیست از csrf استفاده کنید چرا که شماره سفارش و پارامتر دیگری که برگشت داده میشه اگر در جدول ذخیره می کتید (که حتما باید ذخیره شود) به راحتی قابل اعتبارسنجی است و نیازی به افزودن توکن به فرم و هدرها نیست.
باید توی میدلور VerifyCsrfToken تو قسمت $except اون route رو استثنا کنید.
منظورتون اینه که پکیج های
{
“require”: {
“illuminate/support” : “^5.2”,
“econea/nusoap”: “v0.9.5.*”
},
“autoload”: {
“psr-0”: {
“NetParadis\\BankMellatPaymentService\\”: “src”
}
}
}
به فایل کامپوزر دات جیسون پروژه لاراول ضمیمه کنم ، تا با دستور کامپوزر آپدیت پکیج ها نصب بشن؟
در این صورت که دو فایل اصلی (mellat-bank-netparadis/Laravel/src/BankMellatPayment.php و سرویس پروایدر) به پروژه لاراول ایمپورت نمیشن تا من از کلاس BankMellatPayment با متد های مختلفش استفاده کنم؟
بله با کامپوزر میتونید به راحتی میتونید نصب کنید و نیاز به افزودن جداگانه فایل ها در پروژه نیست و بصورت خودکار از سمت سرور دانلود می شوند.
ممنون بابت زحمات
تا جایی که من متوجه شدم:
۱٫ استخراج فایل
۲٫ استفاده از کامپوزر داخل پوشه لاراول (پوشه لاراولی که درون فایل شما قرار داره) برای نصب پکیج ها
۳٫ انتقال پیکیج های نصب شده به پوشه وندور پروژه لاراول
۴٫ انتقال فایل src/config/BankMellatPayment.php به laravel/config
۵٫ انتقال محتویات فایل README.md (البته به جز چند خط توضیح ابتدا فایل) به laravel/.env
۶٫ جایگذاری اطلاعات دریافت شده از بانک به جای داده های نمونه انتقال داده شده به فایل laravel/.env
اما مواردی که متوجه نشدم :
۱٫ محل قرار گیری فایل mellat-bank-netparadis/Laravel/src/BankMellatPayment.php
۲٫ محل قرار گیری فایل mellat-bank-netparadis/Laravel/src/BankMellatPaymentServiceProvider.php
۳٫ نحوه استفاده (یعنی اگه امکانش هست یک مثال برای نحوه استفاده در لاراول با استفاده از کلاس BankMellatPayment و متدی که گفتید قرار بدید)
سلام. خوشحالم که مفید واقع شده.
همینکه از composer استفاده کنید بصورت خودکار برای شما نصب میشه و کافیه هر کجا که لازم بود کلاس رو لود و استفاده کنید.
اگر هم دستی اضافه می کنید که باید هنگام استفاده از متد ها از use استفاده کنید که این موارد رو در صورتی که از کامپوزر استفاده کردید و ویرایشگر حرفه ای مثل phpstorm داشته باشید به راحتی تشخیص داده میشه.
برای استفاده از درگاه نیز باید از کلاس BankMellatPayment و متد paymentRequest بهره ببرید و هنگام بازگشت از بانک نیز در صفحه کال بک از متد verifyPayment استفاده کنید.
موفق باشید.
با سلام
ارور ۴۱۸ میده ! مشکل از کجاست ؟
سلام. ارور ۴۱۸: اشکال در تعریف اطلاعات مشتری
مشکل از سمت به پرداخته با پشتیبان تماس بگیرید تا مشکل رو حل کنند.
ممنون، تست کردم و خطای ۴۱۸ گرفتم. با پشتیبان به پرداخت تماس گرفتم، مشکل از سمت به پرداخت بود. بازم تشکر
نسخه php سازگار با whmcs من ۵٫۶ هست. ولی با PHP های مختلف تست کردم و فایل های ۷٫x و ۵٫x که قرار داده بودید رو هم تست کردم، هیچ کدوم از حالت ها جواب نگرفتم. ولی مثلاً در php ورژن ۵٫۶ nusoap.php شما رو جایگزین کردم، بعد از پیغام “امکان اتصال وجود ندارد، لطفا دوباره تلاش کنید” warning برطرف شد. مشکل از چی هست به نظرتون؟
تشکر
احتمالا یک محدودیتی روی هاست وجود داره یا اینکه یکی از توابع اجرا نمیشه که تا دستی رو هاست تست و بررسی نکرد نمیشه با اطمینان گفت مشکل کجاست و به چه صورت میشه حل کرد.
شما میتونید جدا از خود whmcs , اسکریپت بانک ملت رو از باکس دانلود دریافت و با ست کردن تنظیمات درگاه روی هاست داخل یک فولدر آپلود و از طریق url اجرا کنید تا ببینید در این حالت هم مشکلی در اتصال به درگاه وجود دارد یا خیر.
که با آزمون خطا و بررسی لاگ ها در نهایت مشکل اصلی رو میشه پیدا کرد.
ممنون مهندس
این فایل رو آپلود کردم و اطلاعات درگاه رو داخل فایل config قرار دادم، موقع پرداخت صورتحساب پیغام “امکان اتصال وجود ندارد، لطفا دوباره تلاش کنید” نمایش داده می شود و بعد خطای زیر رو نمایش میده:
Warning: Creating default object from empty value in /home3/…/public_html/fa/modules/gateways/Mellat/lib/nusoap.php on line 74
این خطا برای چی هست؟
خواهش می کنم. این ارور مربوط به نسخه php روی هاست است و یا باید ورژن رو بالا پایین کنید یا در فولدر lib این ماژول nusoap.php متناسب با هاست خودتون رو جایگزین کنید.
دو نسخه متفاوت از nusoap رو در باکس دانلود همین مقاله در پوشه های مختلف قرار دادیم که میتونید دانلود و جایگزین و تست کنید.
موفق باشید.
سلام مهندس، ممنون بابت زحماتت
تو WHMCS چطور میتونم از این کدها استفاده کنم؟
سلام. در WHMCS نیاز است که با ماژول نویسی این CMS آشنا بشید.
به هر حال نسخه سالم درگاه ملت آپلود شدکه میتونید استفاده کنید
http://s9.picofile.com/file/8350038426/whmcs_mellat.zip.html
داخل فولدر gateways\Mellat و فایل config.php اطلاعات درگاه را وارد کنید و کل فایل های فولدر gateways موجود در فایل Zip را داخل فولدر modules/gateways موجود در whmcs از طریق هاست آپلود کنید تا درگاه ملت به بخش درگاه های پرداخت اضافه بشه.
موفق باشید.
ببینید اول باید یه اطلاعاتی به index.php ارسال بشه بعد اون صفحه هم اتوماتیک وصل میشه به سایت بانک . چیکار کنم که کسی نتونه amount رو دستکاری کنه ؟ من الان مقدار amount رو با فرم html ساده میفرستم اشکال داره ؟
سلام. بهترین کار این است که هنگام ارسال کاربر به بانک یک سطر در جدول سفارشات ثبت کنید و یکی از ستون ها آن جدول amount باشه و قیمت را ذخیره کنید.
هنگام بازگشت کاربر از بانک در صفحه verify نیاز است مجددا به دیتابیس متصل بشید و در آن سطر از جدول به دنبال قیمت بگردید و بررسی کنید که قیمت یکسان باشه.
موفق باشید.
سلام لطفا یه راهنمایی بکنید و توضیح بدید برای استفاده از نمونه کد لاراول
سلام. کار بسیار ساده هستش ابتدا فولدر را اکسترکت کنید
بعد با استفاده از کامپوزر بسته رو نصب کنید
https://netparadis.com/what-composer-in-php/
و اطلاعات داخل README.md را که مشخص شده داخل فایل .env خودتون قرار بدید و اطلاعات مربوط به ترمینال و غیره را تغییر بدید.
بعد اینکه پکیج با کامپوزر نصب شد و اطلاعات env قرار داده شد به راحتی میتونید از کلاس BankMellatPayment و متد paymentRequest هر کجا نیاز اتصال به درگاه بود استفاده کنید.
موفق باشید.
باسلام و خسته نباشید خدمت شما. چطور میشه از قسمت additionalData در قسمت پارامترها استفاده کرد درواقع اطلاعات کاربر رو داخلش قرار بدیم و در موقع برگشت از درگاه بانک اطلاعات کاربر رو بهمون برگردونه تا در دیتابیس قرار بدیم.
اضافه کنم که additionalData رو به صورت آرایه مینویسم و در داخل آرایه پارامتر قرار میدم ولی خطای زیر میاد:
[faultstring] => Unmarshalling Error: unexpected element (uri:””, local:”names”). Expected elements are (none)
چطور این مشکل حل بشه؟
سلام ممنونم.
مقدار additionalData را باید بصورت رشته (string) قرار بدید نه آرایه ای . با قرار دادن یک رشته متنی “” این ارور رفع میشه. اطلاعاتی که داخل این پارامتر قرار میدید بصورت فرضی توضیحات تکمیلی سفارش است نه کاربر و این اطلاعات رو شما فقط به سمت بانک پاس می دیدید و در هنگام بازگشت برای شما ارسال نمی شوند و در واقع این اطلاعات داخل دیتابیس بانک و برای این سفارش ذخیره میشه و تمام.
اگر قصد دارید اطلاعات برگشتی از بانک مثل شماره کارت کاربر و موارد غیره رو بگیرید لطفا در صفحه اعتبارسنجی یکبار $_POST را var_dump بگیرید تا ایندکس این اطلاعات برگشت داده از بانک را پیدا و در صورت نیاز ذخیره کنید.
موفق باشید.
در فایل index.php ، متد $mellat->startPayment(‘2000’, ‘https://netparadis.com’); مارو به صفحه بانک میفرسته چطور متد بعدی یعنی $mellat->checkPayment($_POST); اجرا میشه در حالی که از ایندکس خارج شدیم؟
سلام. دوست عزیز در این فایل نحوه استفاده از متدها با کامنت قرار داده شده تا با نحوه کار کلاس آشنا بشید نه اینکه کلب عملیات را در اینجا قرار بدیم. شما باید بخش
/**
* تایید تراکنش
*/
به فایل دیگری مثلا verify.php انتقال بدید تا بعد از برگشت از بانک با مشخص کردن آدرس فایل verify در callback عملیات اعتبارسنجی انجام بشه.
همچنین در تک فایل می توانید با قرار دادن یک سری موارد مثل action و $_GET تمام عملیات را در یک فایل مدیریت کنید که اگر آشنا نیستید بهتره هر دو بخش ارسال به صفحه بانک و وریفای رو جدا کنید.
موفق باشید.
سپاس فراوان
وریفای باید در آدرسی که به عنوان callBackUrl میدیم انجام بشه؟
سلام . بله . آدرسی که در callBackUrl مشخص می کنید رو بانک دریافت و اطلاعات تراکنش انجام شده را به آن ارسال می کند و شما بر اساس اطلاعات دریافتی از سمت بانک صحت تراکنش (verify) را بررسی می کنید .
موفق باشید.
سلام و عرض ادب
ممنون بابت آموزش خوبتون . فقط یک سوال داشتم . میخواستم بدونم آیا میشه برای دیگر درگاه های پرداخت مثل ملی ، پاسارگاد و پارسیان از این نمونه کد ملت استفاده کنیم ؟ تشکر
سلام . خوشحالم مفید واقع شده . خیر هر کدام از درگاه های بانکی متد های مختلفی برای واریز وجه و تایید واریزی و غیره دارند که برای هر کدام از بانک هایی که عرض کردید سورس مخصوص آن را در سایت منتشر کردیم که کافی بود فقط یک جستجوی ساده ار بخش بالا انجام بدید
بانک ملی : https://netparadis.com/melli-bank-sadad-gateway-php
بانک پارسیان : https://netparadis.com/parsian-bank-gateway-php
سعی میشه برای بانک پاسارگارد هم این مورد اضافه بشه
موفق باشید.
سلام. بدست آوردن IP با Ping مشکلی نداره؟
سلام . بله مشکلی نیست ولی بهتر است برای اطمینان از هاستینگ بپرسید چرا که بعضی سرورها مثل میهن وبهاست رنج IP سرور برای پرداخت آنلاین متفاوت دارند.
موفق باشید.
سلام!
ممنون از آموزش خوبتون ولی من با Error : 421 مواجه شدم!
کجای کار ایراد داره ؟
سلام . بهتر است داکیومنتی که همراه سورس قرار داره رو بررسی کنید
۴۲۱ : آدرس IP نا معتبر است.
با پشتیبانی به پرداخت در ارتباط باشید تا مشکل رو حل کنند.
موفق باشید.