بروزرسانی در ۱۵ اردیبهشت ۱۴۰۰ : آپدیت کدها بر اساس آخرین تغییرات درگاه بانک تجارت الکترونیک پارسیان
درگاه مستقیم و بی دردسر بانک پارسیان برخلاف درگاه های واسط , مزایای بسیاری مثل تسویه حساب سریع ، انتقال مستقیم وجه به حساب پارسیان شما ، نداشتن درصد کارمزد بانکی و .. خیلی موارد دیگر را دارد .
در این مقاله آموزشی قصد داریم نحوه دریافت درگاه بانک پارسیان و آموزش اتصال به درگاه بانک پارسیان php را به شما عزیزان نشان بدیم. ( اتصال به درگاه بانک ملت php )
دریافت درگاه بانک پارسیان
برای دریافت درگاه بانک پارسیان به سایت خود بانک پارسیان به آدرس زیر مراجعه کنید
بسته به نوع کسب و کار خود نوع حقوقی و یا حقیقی را انتخاب کنید
در مرحله بعد از شما یک سری اطلاعات از شخص شما یا شرکت درخواست می شود که باید با دقت وارد و ثبت کنید
- نکته :
شما باید یک حساب در بانک پارسیان داشته باشید که بیشتر از ۴۸ ساعت از افتتاح حساب گذشته باشه(محدودیتی در حساب در بانک های دیگر نیست)
- نکته ۲ : برای دریافت درگاه بانک پارسیان حتما سایت شما باید نماد اعتماد الکترونیک (اینماد) داشته باشد که هزینه سالیانه آن فقط ۳۵ هزار تومان است. لینک ثبت نام Enamad
در ابتدا شماره حساب خود در بانک پارسیان را وارد کنید و پس از ورود به فرم نوع حساب و اطلاعات بانکی خود را وارد نمایید.
نکته خیلی مهم : اطلاعات مربوط به آدرس سایت خود و آی پی فروشگاه اینترنتی خود را وارد نمایید(برای به دست آوردن آی پی راه های متفاوتی وجود داره که بهترین راه تیکت زدن و پرسیدن اون آی پی از مسئول سرورتون که هاست ازش خریدین ، هستش) دقت داشته
باشین IP بسیار مهم هست و برای اتصال درگاه به سایت شما نقش اساسی دارد پس IP درست را وارد نمایید.
خیلی از کاربران در این قسمت تصور می کردند آی پی سایتشون همان آیپی مربوط به درگاه هستش که بعد از وارد کردن هنگامی که درگاه را دریافت کردند با مشکل روبرو شدند چون درگاه ها بر اساس IP سرویس دهنده شما منتقل میشه و تبادل اطلاعات میکند برای
همین اکیدا توصیه میشه که آی پی درگاه را از پشتیبانی هاست دریافت کنید که بعدا به مشکلی برنخورید.
اتصال به درگاه بانک پارسیان php
به منظور استفاده هرچه راحتر یک نمونه کد ” اتصال به درگاه بانک پارسیان php ” برای ارسال تراکنش به بانک و یک نمونه کد برسی تراکنش بعد از برگشت از بانک نوشتم که کار شما رو تا حد زیادی راحت میکنه.
در آخر پروژه فایل nusoap + فایل های کانفیگ و دیتابیس مورد نیاز در اتصال به بانک را برای دانلود قرار دادیم.
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 |
<?php include("nusoap.php"); $pin = 'xxxxxxxxxxxxxxxxxxxxx'; $Amount = 1000; // Rial $OrderId = time(); $CallBackUrl = "http://netparadis.com/parsian/verify.php"; $client = new nusoap_client('https://pec.shaparak.ir/NewIPGServices/Sale/SaleService.asmx?wsdl', 'wsdl'); $client->soap_defencoding = 'UTF-8'; $result = $client->call('SalePaymentRequest', array("requestData" => array( 'LoginAccount' => $pin, 'Amount' => $Amount, 'OrderId' => $OrderId, 'CallBackUrl' => $CallBackUrl, 'AdditionalData' => '' ), )); if (isset($result['SalePaymentRequestResult']) && $result['SalePaymentRequestResult'] != "") { $result = $result['SalePaymentRequestResult']; if (isset($result['Status']) && $result['Status'] == 0 && isset($result['Token']) && $result['Token'] != "") { $token = $result['Token']; header("Location:https://pec.shaparak.ir/NewIPG/?Token={$token}"); } else { echo "Error : {$result['Status']}"; } } else { echo "No response from the bank"; } ?> |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
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 |
<?php // netparadis.com include("nusoap.php"); $pin = 'xxxxxxxxxxxxxxxxxxxxx'; if (isset($_POST['status']) && $_POST['status'] == 0 && isset($_POST['Token']) && $_POST['Token'] != "") { $client = new nusoap_client('https://pec.shaparak.ir/NewIPGServices/Confirm/ConfirmService.asmx?wsdl', 'wsdl'); $client->soap_defencoding = 'UTF-8'; $result = $client->call('ConfirmPayment', array("requestData" => array( 'LoginAccount' => $pin, 'Token' => $_POST['Token'] ), )); if (isset($result['ConfirmPaymentResult']) && $result['ConfirmPaymentResult'] != "") { $result = $result['ConfirmPaymentResult']; if (isset($result['Status']) && $result['Status'] == 0 && isset($result['RRN']) && $result['RRN'] > 0) { $bankReference = (isset($result['RRN']) && $result['RRN'] > 0) ? $result['RRN'] : ""; $cardNumberMasked = (isset($result['CardNumberMasked']) && $result['CardNumberMasked'] != "") ? $result['CardNumberMasked'] : ""; echo "Payment Successfully - bank Payment Reference Number : {$bankReference}"; } else { echo "Error : {$result['Status']}"; } } else { echo "No response from the bank"; } } else { echo "Transaction canceled by user"; } ?> |
برای دانلود سورس کد آموزش اتصال به درگاه بانک پارسیان php + کد های نمونه + کتابخانه nusoap از باکس دانلود استفاده کنید.
با سلام
من قصد دارم برای یک سایت وردپرسی از درگاه پرداخت پارسیان استفاده کنم. زمان ثبت نام در سامانهی دریافت درگاه پرداخت پارسیان از من IP Test Server خواسته میشود. میخواستم بدانم اینجا باید ip درگاه پرداخت که از هاستینگ گرفتم را وارد کنم یا چیز دیگری است؟
سلام. بله همان آیپی دریافتی از هاستینگ رو وارد کنید
سلام شما برای اینکه کاربر رفرش نکنه و یا در صورت رفرش عملیات دوباره انجام نشه مثلا اعتبارش مجددا افزایش داده نشه چه روشی استفاده می کنید ؟
سلام. این مورد ممکن نیست چون بانک فقط یکبار تراکنش رو موفق ثبت میکنه و دفعه بعدی اون کد موفق رو نمیده و شما سمت سایت فقط یک کد و یک خروجی رو به عنوان موفق ثبت میکنید و حالا شارژ اعتبار یا هرچیزی رو برای کاربر اضافه می کنید
من برای یک سایت چند سال پیش درگاه پارسیان رو نوشته بودم و همینطوری که شما میگین نمیشد رفرش کرد چون بانک دفعه دوم پاسخ موفق نمیداد
الان همون کد ها رو کپی کردم و یک جای دیگه استفاده کردم با کمال تعجب دیدم با رفرش کردن عملیات تکرار میشه و دوباره به اعتبارش اضافه میشه
باید اسکریپتتون بررسی بشه دقیقا مشخص نیست چه اتفاقی میوفته
سلام وقت بخیر من اطلاعات رو طبق اموزشی که دادین وارد کردم و پین هم گذاشتم اما pay.php رو باز میکنم مینویسه خطا در ازتباط با بانک !! فکر میکنم ارور در ارسال مقادیر باشه چطوری میتونم این ارور رو رفع کنم
سلام ممنون.
از کدهای همین صفحه استفاده کنید نه دانلود باکس چون کدهای این صفحه آپدیت شدند
سلام خسته نباشید
من تمام تراکنش درست انجام میشه اما موقع برگشت از بانک بجای اینکه اطلاعات از نوع post باشد بصورت get هست که نمتونم اطلاعات تایید تراکنش رو بگیرم. من با لاراول نوشتم. شما هم اینچنین مشکلی داشتین؟
سلام. ممنون.
طبق داکیومنت اطلاعات برگشتی از سمت بانک بصورت get هست
این کدی که اینجا هست قدیمیه / الان از روش دیگه ای استفاده میکنند که با آدرس زیر ارسال میشه
https://pec.shaparak.ir/NewIPG/?Token=
با داکیومنت جدید تست نکردین
سلام آقای شفیعی ، سپاس از آموزش های خوبتون
من برای استفاده از درگاه به یک سوال برخوردم
تو قسمتی از کد شما یک کوئری از نوع insert انجام دادید
$db->query(“insert into
parsian
(au
,rand
,time_stamp
,status
,price
) values (‘{$res[‘authority’]}’ , {$rand} ,{$now},’ordered’ ,{$price}) “);header(“location: https://www.pecco24.com/pecpaymentgateway/?au={$res[‘authority’]}”);
die;
میخواستم بدونم این کوئری باید بر اساس نیاز خودمون تنظیم کنیم ؟ و یا باید حتما آدرس جدول همین parsian باشه ؟؟
و در نهایت لطف بزرگی میکنید اگر توضیح بدید که به چه شکل اتصال به درگاه به شکل PHP MVC OPP انجام بدم
سپاس گزارم
سلام ممنون.
خیر الزاما اینطور نیست و هر جوری که میتونید با هر نامی جدول و فیلدها رو تعریف کنید و این صرفا فقط یک مثال هست.
اول دوتا روت تعریف میکنید مثلا parsianSend و parsianVerify و بعد برا هر کدوم جداگانه controller تعریف می کنید و کدها رو داخلش قرار میدید
سپاس از پاسخگویی به موقع شما
من کلاس ها رو تعریف کردم اما میخوام این برسی ها رو داخل صفحه ثبت سفارش ( payment ) انجام بدم و نمیخوام دستورات کوئری تو فایل pay داخل Controller بنویسم
میشه راهنمایی کنید
باید روت صفحه ثبت سفارش رو به عنوان callback درگاه ثبت کنید و در کنترلر ثبت سفارش، کدهای ثبت سفارش را داخل بلاک تایید شدن پرداخت از درگاه قرار بدید
سلام دوست عزیز و ممنون از مطلب مفیدتون
من یک درگاه از بانک پارسیان دارم در حالت وب (html) درگاه مشکلی ندارد و از آن استفاده می کنم. ولی من قصد دارم از این درگاه در یک برنامه اندروید استفاده کنم. کلیه برنامه را نوشتم فقط قسمت اتصال به درگاه بانک در اپلیکیشن باید همزمان با post مقدار ریالی، Default Browser گوشی هم باز شود و سپس به درگاه بانک ریدایرکت شود. مشکل اینجاست که وقتی من با فرمت http://www.example.ir/payment.php?”Amount”=100000 مقدار ریالی را post میکنم، Default Browser باز می شود ولی عملیات ریدایرکت به شاپرک صورت نمی گیرد. آیا می تونید من رو راهنمایی کنید که url من باید چه فرمتی داشته باشد؟
ممنونم
سلام. خوشحالیم که مفید واقع شده.
شما باید بصورت http://www.example.ir/payment.php?Amount=100000 صفحه را باز کنید و داخل این صفحه payment ریدایرکت را با تابع header انجام بدید. احتمالا شاید خطا هم در پشت صحنه داشته باشید که باید فایل error_log خطا رو ببینید.
همچنین ارسال مقدار مبلغ به اینصورت در صورتی که برای یک محصول است (نه افزایش اعتبار کیف پول کاربر) صحیح نیست و شما قیمت ها را فقط و فقط باید از دیتابیس در کد نویسی بخوانید تا کاربر امکان تغییر و اکسپلویت آن را نداشته باشد.
آموزش های ساخت api را هم یاد بگیرید :
https://netparadis.com/?s=api
موفق باشید.
ممنونم از پاسخگوییتون.
درباره ارسال مبلغ حتما طبق گفته شما عمل خواهم کرد. ولی فایل payment.php من header ندارد. ممکنه یک مثال بزنید؟
با تشکر
از همین مثال که در این مقاله گفته شده برای پیاده سازی درگاه استفاده کنید :
header(“location: https://www.pecco24.com/pecpaymentgateway/?au={$res[‘authority’]}”);
۱) با Soap میشه بجای nuSoap انجام داد؟ ۲) لینک WSDL رو باز میکنم اصلا بالا نمیاد. ۳) کلید خصوصی رو چجوری باید بگیریم به من ندادن.
سلام. بله میتونید از soap هم استفاده کنید. لینک wsdl اوکی هست و مشکلی ندارد و نمیتونید بصورت مستقیم در مرورگر وارد و اجرا کنید. هر چیزی که به شما تحویل دادند همان کلید خصوصی هست.
به من فقط پذیرنده و ترمینال دادن. کلید خصوصی چیه؟
کار سختی نیست شما اسکریپت را روی هاست بزارید و کد را جایگزین کنید دو کد بیشتر که ندارید هر کدام متصل شد همان کلید شما هست.
همان ترمینال کد را استفاده کنید
میتونید برای فریمورک لاراول با Soap بنویسید بهم بدید؟
داخل همین بخش بذارید بقیه هم استفاده کنن.
از این پکیج لاراول میتونید برای اتصال به درگاه پارسیان استفاده کنید :
https://packagist.org/packages/alive2212/laravel-parsian-payment
سلام دوستان اگر در مورد این پکیج سوال داشتید.
در خدمتم 😉
سلام خسته نباشید
من از بانک جدیدا پین و ترمینال گرفتم
الان میتونم مبلغ و ای دی سفارشم را به صفحه بانک بفرستم و مشتری بتونه خرید کنه ولی بعدش رو نمیدونم چیکار باید کنم !!
سلام ممنون.
داخل url کالبک شما آیدی سفارش رو بصورت کویری استرینگ قرار بدید
site.com/verify.php?orderid=111
و بعد داخل اون فایل وریفای عملیات پرداخت رو چک کنید
سلام چرا توضیح ندادین که فایل کانفیگ رو چطور تکمیل کنیم؟
$db = new PDO(‘mysql:host=localhost;dbname=NETPARADIS’,’root’,”);
نام دیتابیس که جاش مشخصه
ولی نام کاربری و پسورد دیتابیس کجا باید وارد بشه؟
سلام کد کامل هست. شما الان به جای root باید نام کاربری و و داخل ” اخری که مشخص است خالیه باید پسورد رو بزارید
موفق باشید.
سلام آقا خسته نباشین.ارور زیر چی میگه:
( ! ) Fatal error: Uncaught ArgumentCountError: Too few arguments to function SBPayment::__construct(), 2 passed in C:\wamp\www\enigma\admin\gates\saman\example.php on line 10 and exactly 3 expected in C:\wamp\www\enigma\admin\gates\saman\SBPayment.class.php on line 83
سلام. ابن سوال در مورد درگاه سامان است ولی این پست برای درگاه بانک پارسیان هستش.
متد SBPayment سه تا پارامتر ضروری میگیره که شما فقط دوتا بهش پاس دادید برای همین این خطا مشاهده میشه.
سه پارامتر اصلی ابن متد به ترتیب مرچنت ایدی، پسور و پارامتر سوم هم کانکشن دیتابیس هست.
موفق باشید.