Session 重定向到外部网站时,Laravel会话未持续

Session 重定向到外部网站时,Laravel会话未持续,session,paypal,laravel-4,omnipay,Session,Paypal,Laravel 4,Omnipay,我正在将以下数组分配给transactionInfo $transactionDetails=[ 'amount' => $total, 'description'=>$description, 'notify_url'=>'http://url.com/paypal/log', 'headerImageUrl'=>'http://url.com/img/bhi

我正在将以下数组分配给transactionInfo

        $transactionDetails=[
            'amount' => $total,
            'description'=>$description,
            'notify_url'=>'http://url.com/paypal/log',
            'headerImageUrl'=>'http://url.com/img/bhi_logo.png',
            'brandName'=>'Name',
            'encodedTestIDs' => serialize($payForTestID),
            'returnUrl' => 'http://url.com/payment/return', 
            'cancelUrl' => 'http://url.com/payment/cancel' 
        ];
        Session::put('transactionInfo',$transactionDetails);
如果我重定向到网站上的另一个页面,我可以使用

Session::get('tranactionInfo');
但是,如果我重定向到PayPal以收取付款,然后PayPal将用户重定向回我的站点,则会话变量为null

以下是PayPal返回的路线:

Route::any('/payment/return',function(){
  if(Session::has('transactionInfo')){
      echo 'what is happening?';
  }
    //Session::flush();
    dd(Session::get('transactionInfo')); die;
    });

我不清楚为什么Laravel不会持久化会话数据

然而,另一种方法是在重定向到PayPal之前将事务数据存储在数据库中。您可以在returnUrl中引用transactionId,如下所述:


只是一个简单提示:不要使用
$response->redirect()
使用Laravel自己的重定向方法,在重定向响应之前设置会话数据

简而言之:线索是
Omnipay\Common\Message\AbstractResponse
中的
redirect()
方法,该方法由
Omnipay\PayPal\Message\Response
扩展。它将
HttpResponse
与POST一起使用,将
HttpRedirectResponse
与GET一起使用。通过
HttpResponse
您的会话将在重定向之前存储,但官方PayPal网关使用GET,因此您必须将其转移

  • Laravel 4:
    return Redirect::url($response->getRedirectUrl())
  • Laravel 5:
    return redirect()->url($response->getRedirectUrl())

您是否在PayPal帐户中设置了即时付款通知?这与IPN无关,尽管我已经设置好了。我的问题是,在Laravel中,我为会话分配了一个数组,将买家发送到paypal,一旦paypal返回了买家,会话数组无论出于何种原因都是空的。