2

この質問はおそらくこれとこれに似ていますが、完全にはわかりません。

チェックアウト時に製品の詳細と数量/合計金額を Paypal に送信するショッピング カートを作成しました。Laravel 4 と Omnipay Paypal プラグイン (Paypal_Express) を使用しています。「setItems」関数を使用して製品の詳細を送信できます。現在、Paypal の概要ページのクレジット カード フィールドにユーザーの詳細を事前入力しようとしています。

THISなどの他の SO スレッドで、他の人が creditCard 関数を使用して詳細を Paypal のクレジット カード情報ページに渡すのを見てきました。

私の質問: 1) creditCard 機能を使用するには、Paypal_Pro を使用する必要がありますか? ( ) を試すと、このエラーが発生しますcall_user_func_array() expects parameter 1 to be a valid callback, class 'Omnipay\Common\GatewayFactory' does not have a method 'creditCard'

クレジット カードの詳細をすべて入力したくありません - ユーザーの名前、住所などを入力してプロセスをスピードアップするだけです...

また、Paypal_Pro に変更しようとしましたが、うまくいきませんでした。(上記と同じエラー) 支払いコントローラーの構成とゲートウェイを変更しました。

2) PayPal_Express を PayPay_Pro に変更するにはどうすればよいですか?

私のコード:

 public function postPayment() { 


        $cart = Session::get('cart'); 

        $allProducts = [];

        foreach($cart->aContents as $productID=>$quantity){

            $product = Product::find($productID);

            // get the product id
            // load the product from the id
            // store data in the allProduct array
            $allProducts[] = array('name' => $product->name, 'quantity' => $quantity, 'price'=> $product->price);
        }

        $cardInput = array(

            'first_name' => Input::get('first_name'),
            'last_name' => Input::get('last_name'),
            'address1' => Input::get('address1'),
            'city' => Input::get('city'),
            'zip' => Input::get('zip'),
            'email' => Input::get('email')

            );

        $card = Omnipay::creditCard($cardInput);

        $params = array( 
            'cancelUrl' => \URL::to('cancel_order'), 
            'returnUrl' => \URL::to('payment_success'), 
            'amount' => Input::get('price'), 
            'currency' => Input::get('currency'), 
            'card' => $card,    

            ); 

            Session::put('params', $params); 

            Session::save(); 

            $gateway = Omnipay::create('PayPal_Express'); 

            $gateway->setUsername('tjmusicmanagement-facilitator_api1.gmail.com'); 

            $gateway->setPassword('K2LWQVP2L8472BPY'); 

            $gateway->setSignature('AwTOuAJWzCkdc5PldYeiz.l3iy5UAwOucYW6EFLLA9zUQqXaWyEGbebq'); 

            $gateway->setTestMode(true); 

            $gateway->setLogoImageUrl(URL::to('images/logoSmall.png'));


            $response = $gateway->purchase($params)->setItems($allProducts)->send(); 

            if ($response->isSuccessful()) { 
            // payment was successful: update database
                 print_r($response); 

                }  elseif ($response->isRedirect()) { 

                // redirect to offsite payment gateway 
                    $response->redirect(); 

                } else { 

                    // payment failed: display message to customer 
                    echo $response->getMessage();

                 } 

            } 

また、ignited\laravel-omnipay\config.php は変更されていません (ただし、ドライバーを変更してみました)

配列を返します(

// The default gateway to use
'default' => 'paypal',

// Add in each gateway here
'gateways' => array(
    'paypal' => array(
        'driver' => 'PayPal_Express',
        'options' => array(
            'solutionType' => '',
            'landingPage' => '',
            'headerImageUrl' => ''
        )
    )
)

);

ありがとうございます!

編集: これは私の getSuccessPayment 関数で、ユーザーのペイパルの詳細 (名前と住所など) をペイパルから取得できることを願っています。しかし、これをどこでどのように指定すればよいのでしょうか?

    public function getSuccessPayment() 
            {   
                $gateway = Omnipay::create('PayPal_Express');
                $gateway->setUsername('lillyloverofwar-facilitator_api1.gmail.com'); 
                $gateway->setPassword('U6LM3SG2MNCA3QE2'); 
                $gateway->setSignature('AJVP9tUtdotIeVt82RpcG7n9ld-tAdCG1Ramb1u8yZECHhSpiXc0BO04'); 
                $gateway->setTestMode(true); 

                $params = Session::get('params'); 

                $response = $gateway->completePurchase($params)->send(); 
                $paypalResponse = $response->getData(); // this is the raw response object 

                if(isset($paypalResponse['PAYMENTINFO_0_ACK']) && $paypalResponse['PAYMENTINFO_0_ACK'] === 'Success') {

                    // return View::make('successfulPayment')->with($params); 
                 //     Session::flush();
                 // Response 
                 // print_r($paypalResponse); 
                 } else { 
                 //Failed transaction 
                 } 
                 // FLUSHING SESSION HERE GETS AN ERROR
                 // Session::flush();
                 return View::make('successfulPayment'); 


                } 
4

1 に答える 1