douqian4411 2016-03-10 18:54
浏览 88

Laravel 5.2和PayPal集成付款?

I'm a newbie on Laravel, and I'm trying to implement PayPal on my website.

Already tried searching PayPal packages on GitHub, but most of them are outdated, or without enough documentantion.

So I'm here to ask if someone has an idea to integrate PayPal payments (express checkout) on Laravel 5.2 ?

  • 写回答

1条回答 默认 最新

  • dongniaoli1822 2016-03-10 19:48
    关注

    So I took this package; http://packalyst.com/packages/package/netshell/paypal

    And just did what the doc says, the composer require netshell/paypal dev-master, then add the service provider and alias on the app.php.

    I tried the "ExampleController" given, by making a new controller called "PaymentController", and added a few lines on my routes.php.

    Here is my PaymentController;

    'namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Gloudemans\Shoppingcart\Facades\Cart;
    use PayPal;
    use Redirect;
    use App\Http\Requests;
    
    class PaymentController extends Controller
    {
        private $_apiContext;
    
        public function __construct()
        {
            $this->_apiContext = PayPal::ApiContext(
                config('services.paypal.client_id'),
                config('services.paypal.secret'));
    
            $this->_apiContext->setConfig(array(
                'mode' => 'sandbox',
                'service.EndPoint' => 'https://api.sandbox.paypal.com',
                'http.ConnectionTimeOut' => 30,
                'log.LogEnabled' => true,
                'log.FileName' => storage_path('logs/paypal.log'),
                'log.LogLevel' => 'FINE'
            ));
    
        }
    
        public function getCheckout()
        {
            $payer = PayPal::Payer();
            $payer->setPaymentMethod('paypal');
    
            $amount = PayPal:: Amount();
            $amount->setCurrency('EUR');
            $amount->setTotal(42); // This is the simple way,
            // you can alternatively describe everything in the order separately;
            // Reference the PayPal PHP REST SDK for details.
    
            $transaction = PayPal::Transaction();
            $transaction->setAmount($amount);
            $transaction->setDescription('What are you selling?');
    
            $redirectUrls = PayPal:: RedirectUrls();
            $redirectUrls->setReturnUrl(action('PaymentController@getDone'));
            $redirectUrls->setCancelUrl(action('PaymentController@getCancel'));
    
            $payment = PayPal::Payment();
            $payment->setIntent('sale');
            $payment->setPayer($payer);
            $payment->setRedirectUrls($redirectUrls);
            $payment->setTransactions(array($transaction));
    
            $response = $payment->create($this->_apiContext);
            $redirectUrl = $response->links[1]->href;
    
            return Redirect::to( $redirectUrl );
        }
    
        public function getDone(Request $request)
        {
            $id = $request->get('paymentId');
            $token = $request->get('token');
            $payer_id = $request->get('PayerID');
    
            $payment = PayPal::getById($id, $this->_apiContext);
    
            $paymentExecution = PayPal::PaymentExecution();
    
            $paymentExecution->setPayerId($payer_id);
            $executePayment = $payment->execute($paymentExecution, $this->_apiContext);
    
            // Clear the shopping cart, write to database, send notifications, etc.
    
            // Thank the user for the purchase
            return view('checkout.done');
        }
    
        public function getCancel()
        {
            // Curse and humiliate the user for cancelling this most sacred payment (yours)
            return view('checkout.cancel');
        }'
    

    And my routes.php

    `Route::group(['prefix' => 'payment'], function () {
        Route::get('/', 'PaymentController@getCheckout');
    });`
    

    And I got this error

    `InvalidArgumentException in UrlGenerator.php line 603:
    Action App\Http\Controllers\PaymentController@getDone not defined.
    in UrlGenerator.php line 603
    at UrlGenerator->action('PaymentController@getDone', array(), true) in helpers.php line 87
    at action('PaymentController@getDone') in PaymentController.php line 48
    at PaymentController->getCheckout()
    at call_user_func_array(array(object(PaymentController), 'getCheckout'), array()) in Controller.php line 78
    at Controller->callAction('getCheckout', array()) in ControllerDispatcher.php line 146
    at ControllerDispatcher->call(object(PaymentController), object(Route), 'getCheckout') in ControllerDispatcher.php line 94
    at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
    at Pipeline->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
    at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
    at ControllerDispatcher->callWithinStack(object(PaymentController), object(Route), object(Request), 'getCheckout') in ControllerDispatcher.php line 54
    at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\PaymentController', 'getCheckout') in Route.php line 174
    at Route->runController(object(Request)) in Route.php line 140
    at Route->run(object(Request)) in Router.php line 724
    at Router->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 64
    at VerifyCsrfToken->handle(object(Request), object(Closure))
    at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
    at ShareErrorsFromSession->handle(object(Request), object(Closure))
    at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 62
    at StartSession->handle(object(Request), object(Closure))
    at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
    at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
    at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
    at EncryptCookies->handle(object(Request), object(Closure))
    at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
    at Pipeline->then(object(Closure)) in Router.php line 726
    at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
    at Router->dispatchToRoute(object(Request)) in Router.php line 675
    at Router->dispatch(object(Request)) in Kernel.php line 246
    at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
    at CheckForMaintenanceMode->handle(object(Request), object(Closure))
    at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
    at Pipeline->then(object(Closure)) in Kernel.php line 132
    at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
    at Kernel->handle(object(Request)) in index.php line 54`
    
    评论

报告相同问题?

悬赏问题

  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。