درگاه مستقیم و بی دردسر بانک سامان برخلاف درگاه های واسط , مزایای بسیاری مثل تسویه حساب سریع ، انتقال مستقیم وجه به حساب سامان شما ، نداشتن درصد کارمزد بانکی و .. خیلی موارد دیگر را دارد .
در این مقاله آموزشی قصد داریم نحوه دریافت درگاه بانک سامان و آموزش اتصال به درگاه بانک سامان php را به شما عزیزان نشان بدیم. ( اتصال به درگاه بانک ملت php )
دریافت درگاه بانک سامان
برای دریافت درگاه بانک سامان به سایت خود بانک سامان به آدرس زیر مراجعه کنید
با ورود به صفحه بالا اطلاعات شناسنامه ای , اطلاعات مدیر مسئول پذیرنده و اطلاعات سایت پذیرنده را پر کنید و بعد از طی کردن مراحل بالا و تایید اطلاعات, مرچنت آی دی و پسورد به شما تعلق می گیرد.
- نکته : شما باید یک حساب در بانک سامان داشته باشید که بیشتر از ۴۸ ساعت از افتتاح حساب گذشته باشه
- نکته ۲ : شرایط و قوانین برای احذ درگاه بانک سامان را حتما از این صفحه مطالعه بفرمایید
- نکته ۳ : برای دریافت درگاه بانک سامان حتما سایت شما باید نماد اعتماد الکترونیک (اینماد) داشته باشد. لینک ثبت نام Enamad
نکته خیلی مهم : اطلاعات مربوط به آدرس سایت خود و آی پی فروشگاه اینترنتی خود را وارد نمایید(برای به دست آوردن آی پی راه های متفاوتی وجود داره که بهترین راه تیکت زدن و پرسیدن اون آی پی از مسئول سرورتون که هاست ازش خریدین ، هستش) دقت داشته
باشین IP بسیار مهم هست و برای اتصال درگاه به سایت شما نقش اساسی دارد پس IP درست را وارد نمایید.
خیلی از کاربران در این قسمت تصور می کردند آی پی سایتشون همان آیپی مربوط به درگاه هستش که بعد از وارد کردن هنگامی که درگاه را دریافت کردند با مشکل روبرو شدند چون درگاه ها بر اساس IP سرویس دهنده شما منتقل میشه و تبادل اطلاعات میکند برای
همین اکیدا توصیه میشه که آی پی درگاه را از پشتیبانی هاست دریافت کنید که بعدا به مشکلی برنخورید.
اتصال به درگاه بانک سامان php
به منظور استفاده هرچه راحتر یک نمونه کلاس” اتصال به درگاه بانک سامان php ” برای ارسال تراکنش به بانک و برسی تراکنش بعد از برگشت از بانک نوشتم که کار شما رو تا حد زیادی راحت میکنه.
در آخر پروژه فایل nusoap + فایل های کانفیگ دیتابیس مورد نیاز در اتصال به بانک را برای دانلود قرار دادیم.
بنابراین می توانید به راحتی کلاس را در هرجایی از پروژه نیاز بود فراخوانی و یک آبجکت از آن ساخته و استفاده کنید.
ساخت جدول دیتابیس برای ذخیره تراکنش
1 2 3 4 5 6 7 8 9 |
CREATE TABLE sbpayment (id INT(10) NOT NULL AUTO_INCREMENT, res_num CHAR(20) NOT NULL, ref_num CHAR(20) NOT NULL, total_amont INT NOT NULL, payment INT NOT NULL DEFAULT 0, date_start INT(12) NOT NULL, primary key(id), unique(res_num), index(ref_num)); |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
example.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 |
<?php ob_start(); header("content-type: text/html; charset=utf-8"); include 'nusoap.php'; include 'SBPayment.class.php'; $conn = mysqli_connect('localhost','username','passowrd','database'); $sb = new SBPayment("merchantID","password",$conn); if( isset($_POST['State']) ){ $State = $_POST['State']; $RefNum = $_POST['RefNum']; $ResNum = $_POST['ResNum']; $sb->receiverParams($ResNum,$RefNum,$State); $sb->getMsg('display'); } elseif( isset( $_POST['submit'] ) ) { if( $sb->saveStoreInfo( $_POST['totalAmont'] ) ) { $sb->sendParams(); } else { $sb->getMsg('display'); } } else { ?> <form action="<?php print $_SERVER['SCRIPT_NAME']; ?>" method="post" /> مبلغ سفارش<input type="text" name="totalAmont" /> <input type="submit" name="submit" value="payment" /> </form> <?php } ?> |
در خط ۹م اطلاعات اتصال به دیتابیس را مشخص کنید و در خط ۱۱م که باید مرچنت ID و پسورد اتصال به درگاه سامان را به آبجکت پاس بدید.
با فراخوانی فایل example.php و وارد کردن مبلغ می توانید به بانک سامل متصل شوید و بعد از تراکنش کاربر را به سایت ارجاع و تراکنش را بررسی و سفارش را تایید کنید.
فایل SBPayment.class.php – کلاس شامل متد های پرداخت سامان را همراه با سورس اتصال به درگاه بانک سامان php + کتابخانه nusoap + داکیومنت راهنما را از باکس دانلود دریافت کنید.
هر سوالی داشتید از طریق نظرات این مطلب ارسال کنید. سریعا, پاسخگوی سوالات شما هستیم.
موفق و پیروز باشید.
ببخشید یک سوال یعنی از این همه درگاه بانکی تو کشور هیچ کدوم محیط سند باکس ارایه نداده اند برنامه نویس بتونه کار انجام بده مثلا زرین پال محیط سند باکس داره اما هیچ کدوم از بانکها انگار این محیط رو ندارند
سلام نه متاسفانه داکیومنت درست حسابی ندارن و سند باکس هم ارایه نمیدن
خطا! پرداخت های این ترمینال فقط از طریق توکن امکانپذیر است. خطا در تراکنش
خطای بالا رو بهمون نشون میده چگونه از طریق توکن ارسال درخواست برای ساخت لینک پرداخت رو انجام بدیم؟
احتمال اپدیت شدن کتابخانه و داکیومنت بانک سامان وجود دارد. از طریق سایت درگاه اخرین داکیومنت رو دریافت کنید
سلام درگاه پرداخت سایت من وقتی دکمه پرداخت رو میزنم خطا در تراکتش میده و میگه ترمینال نامعتبر است میدونید باید چیکار کنم؟
سلام. این مورد رو باید به پشتیبانی درگاه بگید تا چک کنن
سلام
من اررور parssing wsdl دارم برای SoapClient
نتونستم مشکل رو پیدا کنم
سلام. این ارور ممکنه در ورژن php شما باشه با تغییر ورژن php دوباره تست کنید شاید اوکی شه
اگه نشد قبل اینکه از soapClient استفاده کنید این خط رو اضافه کنید
libxml_disable_entity_loader(false);
اگر دوباره مشکل داشت این آپشن ها رو براش ست کنید
$options = [
‘cache_wsdl’ => WSDL_CACHE_NONE,
‘trace’ => ۱,
‘stream_context’ => stream_context_create(
[
‘ssl’ => [
‘verify_peer’ => false,
‘verify_peer_name’ => false,
‘allow_self_signed’ => true
]
]
)
];
$client = new SoapClient($url, $options);
با سلام و احترام
چطور میتونم اسکریپت بانک های ایرانی رو با اسکریپت های خارجی مثله PayPal جایگزین کنم بدونه اینکه فایل هارو جابه جا کنم فقط با جایگزینی محتوای php، یعنی فایل رو ادیت کنم و درگاه پرداخت فعال بشه
سلام. چنین چیزی امکان نداره حتما باید php متوسط بلد باشید تا بتونید با دقت کدها رو جایگزین کنید
هزینه جایگزین کردن درگاه php چقدر هست
اگر اینجا مقدور نیست براتون پاسخ بدید
در واتساپ در خدمتتون هستم
بستگی به نوع کدنویسی سایت داره. به هر حال میتونید واتساپ پیام بدید ۰۹۲۱۰۸۱۶۸۴۳
سلام آقای شفیعی
ببخشید یک سوال داشتم در رابطه با مقدار برگشتی برای تابع verify درگاه بانک سامان
برای verify کردن ، چه مقدار های بازگشتی از طرف بانک به ما داده میشه و از همه مهم تر ما باید به صورت POST این اطلاعات دریافت کنیم و یا به صورت GET ؟؟؟
لطف میکنید یکم توضیح بدید ؟
سلام.
بصورت POST هست.
در بخش کد verify شما یه var_dump($_POST) بزنید هر چیزی که از سمت بانک برگشت داده شده رو میتونید ببینید و بنابر نیاز ذخیره کنید
بسیار عالی
بخشید فراموش کردم که در رابطه با درگاه پاسارگاد هم بپرسم
برای درگاه پاسارگاد هم هینطور هست ؟
سپاس گزارم از پاسخگویی شما
بله همه بصورت $_POST برگشت داده میشه
سلام
در کدهایی که از این قسمت دانلود کردم سه فایل:example.php و nusoap.php و SBPayment.class.php موجود می باشد و فایلی به نام verify.php را نمی توانم پیدا کنم.
این فایل را از کجا باید تهیه کنم یا به وجود بیاورم؟؟؟
سلام. شرمنده با کدهای درگاه بانکی دیگر اشتباه گرفته شده.
شما هنگام بازگشت از بانک در فایل example.php و در خط بعد ۱۳ و قبل ۱۴ یک کد var_dump($_POST);die; را قرار بدید تا متوجه بشید چه ایندکس و داده هایی از سمت بانک برگشت داده می شود. همچنین در این نمونه کد از دیتابیس استفاده شده (در فایل SBPayment.class.php بصورت کامنت قرار داده که آن را میتونید در دیتابیس مورد نظر(در phpmyadmin) به عنوان یک sql اجرا کنید تا جدول تراکنش ساخته بشه) که نیاز است هنگام ارسال به بانک این اطلاعات را با کویری زدن به دیتابیس ذخیره و هنگام بازگشت از بانک یک مقدار فلگ مثل status تراکنش را بروزرسانی کنید.
با سلام
مقدار $res در کدام قسمت از کدها تعریف شده که اون رو var_dump کنم.
منظورتون همون متغیر $refNum هست؟؟؟
من نمی تونم بفهمم که در کدهای شما دقیقا کجا از بانک برمیگردیم!!!
سلام. این متغیر در صفحه بازگشت از بانک verify.php است.
سلام
کدهایی که در این پست قرار دادید رو تست کردم.
خیلی کدهای جامع و کاملی است.
منتها به یک مشکل برخوردم:
وقتی پرداخت انجام می شه و برمیگرده در سایت پذیرنده ref_Num در دیتابیس ذخیره نمیشه و به همین علت چون نمی تونه ref_Num رو پیدا کنه error state چاپ می کند.
با بانک تماس گرفتم بانک میگوید که ref_Num تولید شده و برای سایت شما ارسال شده است ولی در دیتابیس یافت نمی شود.
به نظر شما مشکل از کجاست؟؟؟
سلام. هنگام بازگشت از بانک لطفا مقدار $res را var_dump کنید تا ببینید آیا مقدار مورد نیاز برگشت داده شده یا خیر و در صورت نیاز اون رو در دیتابیس ذخیره کنید که در هنگام چک کردن وضعیت if($res[‘status’] ==0) // correct بروزرسانی انجام میشه.
سلام مهندس
ممنون بابت این آموزش
من از همین کد ها استفاده کردم. تا زمانی که کاربر وارد درگاه میشه همه چیز رو به راهه و درست کار می کنه . ولی زمانی که از بانک بر می گرده بعضی از رکوردها رو آپدیت نمی کنه در صورتی که پول از حساب مشتری کم شده و تو پنل بانک سامان هم تایید شده . مشکل از چی میتونه باشه؟
سلام . خوشحالم که مفید واقع شده.
مطمینا به خاطر کویری sql هستش. که خب باید از صحت آی دی سفارش و تعداد جداول و نام آنها با چیزی که در کویری استفاده شده اطمینان داشته باشد. شما بعد از برگشت از بانک اون کویری Update رو توی صفحه چاپ کنید و همچنین نتیجه رو var_dump کنید و اون رو مستقیما توی کامند sql یا حالا phpmyadmin خودتون ران کنید و به اینصورت با تست وخطا میتونید مشکل رو حل کنید.
موفق باشید.
سلام خسته نباشید
ببخشید وقتی کل کار ها رو اجرا می کنم این پیغام ها رو میده
[۱۵-Jul-2018 02:10:38 America/Chicago] PHP Warning: Missing argument 3 for SBPayment::__construct(), called in /home/fifcgaiq/SITE.COM/example.php on line 11 and defined in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 102
[۱۵-Jul-2018 02:10:38 America/Chicago] PHP Notice: Undefined variable: connection in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 106
[۱۵-Jul-2018 02:10:41 America/Chicago] PHP Warning: Missing argument 3 for SBPayment::__construct(), called in /home/fifcgaiq/SITE.COM/example.php on line 11 and defined in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 102
[۱۵-Jul-2018 02:10:41 America/Chicago] PHP Notice: Undefined variable: connection in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 106
[۱۵-Jul-2018 02:10:41 America/Chicago] PHP Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 115
[۱۵-Jul-2018 02:10:41 America/Chicago] PHP Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 116
[۱۵-Jul-2018 02:10:41 America/Chicago] PHP Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 156
[۱۵-Jul-2018 02:10:41 America/Chicago] PHP Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /home/fifcgaiq/SITE.COM/SBPayment.class.php on line 156
کمک کنید فوری
خیلی لازم دارم
سلام . ممنون . احتمالا مقدار دهی ها رو اشتباه انجام دادید و بیشتر ارورها مربوط به دیتابیس است.
همچنین اگر مشکل حل نشد اطلاعات ورود رو از فرم تماس با ما ارسال کنید تا بررسی بشه.
موفق باشید
ممنون از پاسخ گویی سریعتون
درست شد ولی وقتی به بانک متصل میشه این پیغام رو میده
خطا! .اطلاعات نامعتبر مي باشد
خواهش می کنم. خب این مربوط به اطلاعاتی که از بانک گرفتید هستش مثل مرچنت آی دی و پسورد تون که باید مطمین باشید این موارد رو در این قسمت
$sb = new SBPayment(“merchantID”,”password”,$conn);
درست ست کردید و اگر باز مشکلی بود مطمینا از ip هستش.
سلام دوباره
در رابطه با همون پیغام
مشکل حل نشد همون پیغام خطا! .اطلاعات نامعتبر مي باشد رو میده
ولی یک فرم دستی درست کردم که مستقیم وصل بشه به درگاه بانک بع شکل زیر
Untitled Document
مشکلی نداره ….
میتونید از اینجا امتحان کنید
—
اگه دکمه pay رو بزنی که همون فرم بالاست به درگاه وصل میشه
ولی مال شما که مبلغ رو میزنیم پیغام میده
ممنون اگه زود جواب بدین خیلی لازم دارم
سلام . تا روی سرور واقعی تست نشه و کدها رو نبینم نمیشه نظری داد.
میتونید از اینجا امتحان کنید این روی سرور واقعی هستش
http://shop.topcopy.ir/example.php
اگه دکمه pay رو بزنی که همون فرم بالاست به درگاه وصل میشه
ولی مال شما که مبلغ رو میزنیم پیغام میده
ممنون اگه زود جواب بدین خیلی لازم دارم
——————————————————-
درست کردم تا حدودی ولی الان پرداخت رو میزنیم تابع verifyTrans چیزی رو بر نمیگردونه
خواهشن کمک کنید خیلی لازمه
همینطور که گفتم کدها رو باید رو سرور واقعی تست بشه تا نتیجه رو لایو ببنیم و تغییرات رو روی کدها اعمال کنم وگرنه اگر دسترسی به پشت صحنه کدها نباشه عملا حل مشکل امکان پذیر نیست چرا که درگاه بانک سامان رو نداریم و نمیتونیم از اینجا تست رو انجام بدیم.
سلام خسته نباشید
شما میتونید در این رابطه که در بحث هستیم به سیستم من وصل بشید و مشکل رو رفع کنیم.
سلام . ممنون . خیر امکان انجام این مورد وجود ندارد . اطلاعات ورود را از قسمت تماس با ما ارسال کنید تا چک بشه.
موفق باشید.
سلام وقت به خیر
من همین طور با روش شمابرای درگاه بانک سامان پیش رفتم منتها من php رو یکم بردم تو فریم وورک یی چون پروژه ام یی (Yii2) هست البته فقط example رو و دو تا فایل دیگه رو فقط use کردم. حالا الان بعد از تایید فرم ورود مبلغ این ارور دارم :
Field ‘ref_num’ doesn’t have a default value
سلام . ممنون. یک شی از کلاس که ساختید باید مقادیر مرچنت ID و پسورد مربوط به درگاه خودتون رو ست کنید و نباید از کلاس خالی آبجکت بسازید
$sb = new SBPayment("merchantID","password",$conn);
موفق باشید.