Paypal payment method in Laravel -
i think have integrate payment method site.my site developed in laravel.that's why looking way add paypal integration.my site there can visit.
follow bellow few step:
 1)install laravel application
 2)database configuration
 3)install required packages
 4)configuration paypal.php file 
 5)create route 
 6)create controller 
 7)create view file 
step 1 : install laravel application
 going scratch, require fresh laravel application using bellow command, open terminal or command prompt , run bellow command:
composer create-project --prefer-dist laravel/laravel blog
step 2 : database configuration
 in step, require make database configuration, have add
 following details on .env file.
 1.database username
 1.database password
 1.database name
in .env file available host , port details, can configure details in system, can put bellow: .env
db_host=localhost db_database=homestead db_username=homestead db_password=secret   step 3 : install required packages
 have required following 2 packages integrate paypal payment in our laravel application. add following 2 package in composer.json file.
"guzzlehttp/guzzle": "~5.4", "paypal/rest-api-sdk-php": "*",   then after run following command in terminal
php artisan vendore:publlish   after run command, after automatic create paypal.php file in config/paypal.php path.
step 4 : configuration paypal.php file
<?php  return array( /** set paypal credential **/ 'client_id' =>'paypal client_id', 'secret' => 'paypal secret id', /** * sdk configuration  */ 'settings' => array(     /**     * available option 'sandbox' or 'live'     */     'mode' => 'sandbox',     /**     * specify max request time in seconds     */     'http.connectiontimeout' => 1000,     /**     * whether want log file     */     'log.logenabled' => true,     /**     * specify file want write on     */     'log.filename' => storage_path() . '/logs/paypal.log',     /**     * available option 'fine', 'info', 'warn' or 'error'     *     * logging verbose in 'fine' level , decreases     * proceed towards error     */     'log.loglevel' => 'fine'     ), );   step 5: create route
 in step need create route paypal payment. open routes/web.php file , add following route. routes/web.php
route::get('paywithpaypal', array('as' => 'addmoney.paywithpaypal','uses' => 'addmoneycontroller@paywithpaypal',)); route::post('paypal', array('as' => 'addmoney.paypal','uses' => 'addmoneycontroller@postpaymentwithpaypal',)); route::get('paypal', array('as' => 'payment.status','uses' => 'addmoneycontroller@getpaymentstatus',));   step 6: create controller
 in point, should create new controller addmoneycontroller in path app/http/controllers/addmoneycontroller.php. controller manage layout , payment post request, run bellow command generate new controller:
php artisan make:controller addmoneycontroller   ok, put bellow content in controller file:
 app/http/controllers/addmoneycontroller.php
<?php  namespace app\http\controllers;  use app\http\requests; use illuminate\http\request; use validator; use url; use session; use redirect; use input;  /** paypal details class **/ use paypal\rest\apicontext; use paypal\auth\oauthtokencredential; use paypal\api\amount; use paypal\api\details; use paypal\api\item; use paypal\api\itemlist; use paypal\api\payer; use paypal\api\payment; use paypal\api\redirecturls; use paypal\api\executepayment; use paypal\api\paymentexecution; use paypal\api\transaction;  class addmoneycontroller extends homecontroller {      private $_api_context;     /**      * create new controller instance.      *      * @return void      */     public function __construct()     {         parent::__construct();          /** setup paypal api context **/         $paypal_conf = \config::get('paypal');         $this->_api_context = new apicontext(new oauthtokencredential($paypal_conf['client_id'], $paypal_conf['secret']));         $this->_api_context->setconfig($paypal_conf['settings']);     }        /**      * show application paywith paypalpage.      *      * @return \illuminate\http\response      */     public function paywithpaypal()     {         return view('paywithpaypal');     }      /**      * store details of payment paypal.      *      * @param  \illuminate\http\request  $request      * @return \illuminate\http\response      */     public function postpaymentwithpaypal(request $request)     {         $payer = new payer();         $payer->setpaymentmethod('paypal');          $item_1 = new item();          $item_1->setname('item 1') /** item name **/             ->setcurrency('usd')             ->setquantity(1)             ->setprice($request->get('amount')); /** unit price **/          $item_list = new itemlist();         $item_list->setitems(array($item_1));          $amount = new amount();         $amount->setcurrency('usd')             ->settotal($request->get('amount'));          $transaction = new transaction();         $transaction->setamount($amount)             ->setitemlist($item_list)             ->setdescription('your transaction description');          $redirect_urls = new redirecturls();         $redirect_urls->setreturnurl(url::route('payment.status')) /** specify return url **/             ->setcancelurl(url::route('payment.status'));          $payment = new payment();         $payment->setintent('sale')             ->setpayer($payer)             ->setredirecturls($redirect_urls)             ->settransactions(array($transaction));             /** dd($payment->create($this->_api_context));exit; **/         try {             $payment->create($this->_api_context);         } catch (\paypal\exception\ppconnectionexception $ex) {             if (\config::get('app.debug')) {                 \session::put('error','connection timeout');                 return redirect::route('addmoney.paywithpaypal');                 /** echo "exception: " . $ex->getmessage() . php_eol; **/                 /** $err_data = json_decode($ex->getdata(), true); **/                 /** exit; **/             } else {                 \session::put('error','some error occur, sorry inconvenient');                 return redirect::route('addmoney.paywithpaypal');                 /** die('some error occur, sorry inconvenient'); **/             }         }          foreach($payment->getlinks() $link) {             if($link->getrel() == 'approval_url') {                 $redirect_url = $link->gethref();                 break;             }         }          /** add payment id session **/         session::put('paypal_payment_id', $payment->getid());          if(isset($redirect_url)) {             /** redirect paypal **/             return redirect::away($redirect_url);         }          \session::put('error','unknown error occurred');         return redirect::route('addmoney.paywithpaypal');     }      public function getpaymentstatus()     {         /** payment id before session clear **/         $payment_id = session::get('paypal_payment_id');         /** clear session payment id **/         session::forget('paypal_payment_id');         if (empty(input::get('payerid')) || empty(input::get('token'))) {             \session::put('error','payment failed');             return redirect::route('addmoney.paywithpaypal');         }         $payment = payment::get($payment_id, $this->_api_context);         /** paymentexecution object includes information necessary **/         /** execute paypal account payment. **/         /** payer_id added request query parameters **/         /** when user redirected paypal site **/         $execution = new paymentexecution();         $execution->setpayerid(input::get('payerid'));         /**execute payment **/         $result = $payment->execute($execution, $this->_api_context);         /** dd($result);exit; /** debug result, remove later **/         if ($result->getstate() == 'approved') {               /** it's right **/             /** here write database logic insert record or value in database if want **/              \session::put('success','payment success');             return redirect::route('addmoney.paywithpaypal');         }         \session::put('error','payment failed');          return redirect::route('addmoney.paywithpaypal');     }   }   step 7: create view
 in last step, let's create paywithpaypal.blade.php(resources/views/paywithpaypal.blade.php) layout , write design code here , form pay amount paypal, put following code: resources/views/paywithpaypal.blade.php
@extends('layouts.app')  @section('content') <div class="container">     <div class="row">         <div class="col-md-8 col-md-offset-2">             <div class="panel panel-default">                 @if ($message = session::get('success'))                 <div class="custom-alerts alert alert-success fade in">                     <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>                     {!! $message !!}                 </div>                 <?php session::forget('success');?>                 @endif                  @if ($message = session::get('error'))                 <div class="custom-alerts alert alert-danger fade in">                     <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>                     {!! $message !!}                 </div>                 <?php session::forget('error');?>                 @endif                 <div class="panel-heading">paywith paypal</div>                 <div class="panel-body">                     <form class="form-horizontal" method="post" id="payment-form" role="form" action="{!! url::route('addmoney.paypal') !!}" >                         {{ csrf_field() }}                          <div class="form-group{{ $errors->has('amount') ? ' has-error' : '' }}">                             <label for="amount" class="col-md-4 control-label">amount</label>                              <div class="col-md-6">                                 <input id="amount" type="text" class="form-control" name="amount" value="{{ old('amount') }}" autofocus>                                  @if ($errors->has('amount'))                                     <span class="help-block">                                         <strong>{{ $errors->first('amount') }}</strong>                                     </span>                                 @endif                             </div>                         </div>                          <div class="form-group">                             <div class="col-md-6 col-md-offset-4">                                 <button type="submit" class="btn btn-primary">                                     paywith paypal                                 </button>                             </div>                         </div>                     </form>                 </div>             </div>         </div>     </div> </div> @endsection   now ready run our example run bellow command ro quick run:
php artisan serve   now can open bellow url on browser:
http://localhost:8000/paywithpaypal   please visit toturials link..
Comments
Post a Comment