keyboard_return  چسبون مقالات آموزشی لاراول-آموزش راه اندازی درگاه پرداخت با laravel
  1. لاراول-آموزش راه اندازی درگاه پرداخت با laravel

درگاه پرداخت با فریم ورک لاراول

درود خدمت دوستان عزیزم. امروز در سایت چسبون اتصال به درگاه بانکی رو برای شما آموزش می دیم. هنوز که هنوزه کتابخانه های زیادی برای لاراول به زبان فارسی در سایت ها وجود نداره.اگرم وجود داره با قیمت بالایی فروخته می شه.

خب بریم سر اصل مطلب;برای انجام پرداخت آنلاین و تایید کردن سفارشات ما نیازمند یک کتابخانه از زبان php  هستیم به نام  Soap  که برای استفاده کردنش توی پروژه چند تا راه داریم : این کتابخونه رو  از اینجا  دانلود کنید و در کدتون استفاده کنید کلاس رو داخل یکی از فولدر های پروژمون که برای نگه داری توابع و کلاس های کمکی هست کپی می کنیم این فولدر توی پروژه های من به اسمHelper می باشد که حالا با استفاده از namespace اختصاصی خود فایل می تونید توی پروژه ازش استفاده کنید . دوستان گرامی پکیج مورد نظر رو از آدرس زیر دریافت کنید:

https://github.com/artisaninweb/laravel-soap

و طبق آموزش اون رو نصب کنید . تقریبا مکانیزم درگاه برای همه سیستم های بانکی مشابه هم هست من برای مثال درگاه زرین پال رو توضیح میدم . شما با ثبت نام توی زرین ‍پال یا هر درگاه بانکی دیگه یک سری اطلاعات برای شناسایی درگاهتون دریافت می کنید. اولین قدم توی عملیات پرداخت آنلاین احراز هویت با درگاه مورد نظر و دریافت مجوز های لازم برای شروع یک پرداخت انلاین می باشد. ابتدا یک نمونه از وب سرویس درگاه بانکی مورد نظرمون ایجاد می کنیم.

برای زرین پال کد به شکل زیر می باشد:

$MerchantID = '54620e4d-0000-40c2-94ea-59f15bef37d4'; // کد اختصاصی درگاه
 $Amount = $order_price; //مقدار سفارش
$Description = 'توضیحات خرید ';
$Email = $order->email; // آدرس ایمیل خریدار
$Mobile = $order->mobile; // شماره همراه خریدار
$CallbackURL = 'https://chasboon.ir/payment/verify/'; // آدرس صفحه بازگشت از خرید اینترنتی

// و حالا ایجاد یک نمونه برای پرداخت 
\SoapWrapper::add(function ($service) { $service ->name('currency') // عنوان نمونه ->wsdl('https://de.zarinpal.com/pg/services/WebGate/wsdl') // آدرس وب سرویس });

بعد از ایجاد نمونه و ارسال اطلاعات شناسه ی درگاه و سفارش یک پاسخ از وب سرویس برای ما ارسال می شود که آیا مجوز لازم برای شروع پرداخت آنلاین را داریم یا خیر کد زیر مرحله چک کردن دسترسی را نمایش می دهد  :

// چک کردن مجوز 
\SoapWrapper::service('currency', function (Service $service) use ($data) { $service->call('PaymentRequest', [$data]) ; $status = $service->call('PaymentRequest', [$data])->Status ; $Authority = $service->call('PaymentRequest', [$data])->Authority ;

بعد از اینکه ما اطلاعات رو به وب سرویس فرستادیم درگاه در صورت محیا بودن همه چیز یک پاسخ به درخواست تایید (PaymentRequest) با مقدار ۱۰۰ و یک کد ۱۶ رقمی که در اصطلاح بهش au میگن رو برای ما ارسال می کنه و ما باید این کد رو در بانک اطلاعاتیمون ذخیره بکنیم تا برای تایید و پیگیری سفارشمون تو مراحل بعد ازش استفاده بکنیم . بعد از ذخیره کردن اطلاعات پرداخت باید کاربر رو به شکل زیر به سایت ‍پرداخت اینترنتی انتقال بدیم.

if($status == 100) 
{
$this->au = $Authority ;
 Header('Location: https://www.zarinpal.com/pg/StartPay/'.$Authority); 
}
 else
{
 echo'ERR: '.$status;
}

توجه کنید که کاربر بعد از اتمام مراحل پرداخت با استفاده از همون کد Au به آدرسی که ما برای برگشت پرداخت تعریف کردیم منتقل میشه حالا نوبت به این می رسه که ما چک کنیم که آیا کاربر عملیات پرداخت رو با موفقیت انجام داده یا خیر به شکل زیر این کار رو انجام میدیم : این عملیات در صفحه بازگشتی انجام می شود . من برای مثال کد یکی از پروژه های خودمو قرار میدم :

$Authority = $this->input->get('Authority'); // دریافت کد شناسایی ارسال شده
$Status = $this->input->get('Status'); // دریافت وضعیت ارسال شده

if (!empty($Authority)) {   // چک کردن اینکه سفارشی با این کد شناسایی در سیستم ما موجود می باشد یا خیر

    if (is_null($this->payment->findBy('au', $Authority))) {
        $this->app->abort(404);
    }

    $this->thisPayments = $payment = $this->payment->findBy('au', $Authority);  // دریافت اطلاعات سفارش در سیستم سایت خودمان

    $Amount = $payment->amount; //  دریافت اطلاعات قیمت این سفارش

    if ($Status == 'OK') {
        // Add a new service to the wrapper

        \SoapWrapper::add(function ($service) {
            $service
                ->name('currency')
                ->wsdl('https://de.zarinpal.com/pg/services/WebGate/wsdl')
                ->trace(true)
// Optional: (parameter: true/false)
                /* ->header() // Optional: (parameters: $namespace,$name,$data,$mustunderstand,$actor)
                ->cookie() // Optional: (parameters: $name,$value)
                ->location() // Optional: (parameter: $location)
                */
                ->cache(WSDL_CACHE_NONE)// Optional: Set the WSDL cache
                ->options(['password' => 'password']); // Optional: Set some extra options
        });

        $data = [
            'MerchantID' => $this->MerchantID,
            'Authority' => $Authority,
            'Amount' => $Amount
        ];

// Using the added service
        \SoapWrapper::service('currency', function (Service $service) use ($data) {
            $service->call('PaymentVerification', [$data]);
            $chk_status = $service->call('PaymentRequest', [$data])->Status;
            $RefID = $service->call('PaymentRequest', [$data])->RefID;
        });


            if ($chk_status == 100) {
                echo 'پرداخت با موفقیت انجام شد کد رهگیری ' . $RefID;
                $this->changeOrederStatus($this->thisPayments->order_id);
                return $this->redirect->route('tickets.Print', $this->thisPayments->order_id)
                    ->with('success', 'چاپ بلیت');
            } else {
                echo 'عملیات نا موفق ' . $chk_status;
            }

        } else {

        echo 'عملیات نا موفق ';
    }

}


خوب بعد از تایید گرفتن از پرداخت موفق نوبت به این میرسه که سفارش کاربر رو تایید بکنیم و مابقی داستان .

امیدوارم بهره ی کافی رو از این آموزش برده باشید.سوالی بود در خدمتم.

لاراول-آموزش راه اندازی درگاه پرداخت با laravel - 4.2 از 5 بر اساس 150 رای

امتیاز کاربران

لاراول-آموزش راه اندازی درگاه پرداخت با laravel
دیدگاه‌ها
مهدی مهدی 4 سال پیش
سلام. میتونید از پکیج زیر استفاده کنید. همه درگاه ها رو ساپورت میکنه و نیاز نیست به ازای هر درگاه کدنویسی کنید. تنها با تغییر نام درگاه میتونید از درگاه های جدید استفاده کنید. https://github.com/shetabit/payment
آرمان بابائی آرمان بابائی 4 سال پیش
سلام. ممنون بابت اطلاع رسانی. اگه دیدم پکیج خوبیه حتما آموزش میدم.
masoud masoud 7 سال پیش
ببخشید این کد هارو در کجای لاراول قرار میدیم؟!!!کدوم فایل کدوم پوشه
آرمان بابائی آرمان بابائی 7 سال پیش
کنترلر بسازید و کدها رو در کنترلر قرار بدید. اگر در لاراول مبتدی هستید پیشنهاد می کنیم ابتدا لاراول رو خوب فرا بگیرید.

2024 © Copyright کليه حقوق مادی و معنوی براي چسبون محفوظ است و هرگونه کپی برداری پیگرد قانونی دارد.