Какие параметры передать doExpressCheckouPaymentt ()? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть этот контроллер, который должен выполнять платежи PayPal. Функция оплаты работает хорошо, но при переходе к функции успеха я получаю сообщение об ошибке Illegal string offset 'total' . Я передаю $this->productData($request), как предлагается в этом вопросе . Я попытался создать переменную $total = $response['AMT'], которая является ответом setCheckoutDetails, но у меня все равно возникла та же ошибка. Как мне go об этом?

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Srmklive\PayPal\Services\ExpressCheckout;

class PayPalController extends Controller
{
        private function projectData(Request $request){
                    // dd($request->all());
            $item = [];
            $datat = array_map(function($item){
                return [
                    'name'=>$request->project_id,
                    'price'=>$request->budget,
                    'desc'=>'Deposit',
                    'qty'=>1
                ];
            }, $item);
            $data = [
                    'items'=>$datat,
                    'invoice_id' => uniqid(),
                    'invoice_description' => "Payment for Project No.".$request->project_id." Amount ".$request->budget,
                    'return_url' => route('payment.success'),
                    'cancel_url' => route('payment.cancel'),
                    'total'=>$request->budget
            ];  
            // dd($data);

            return $data;
        }
            /**
         * Responds with a welcome message with instructions
         *
         * @return \Illuminate\Http\Response
         */
        public function payment(Request $request)    {
            $data = $this->projectData($request);
            $provider = new ExpressCheckout;
            $response = $provider->setExpressCheckout($data);
            // dd($response);
            // $response = $provider->setExpressCheckout($data, true);

            return redirect($response['paypal_link']);
        }

/**
 * Responds with a welcome message with instructions
 *
 * @return \Illuminate\Http\Response
 */
public function cancel()
{
    dd('Your payment is canceled. You can create cancel page here.');
}

/**
 * Responds with a welcome message with instructions
 *
 * @return \Illuminate\Http\Response
 */
public function success(Request $request)
    {
        $provider = new ExpressCheckout;
        $response = $provider->getExpressCheckoutDetails($request->token);

        $token = $response['TOKEN'];
        $payerId = $response['PAYERID'];
        $total = $response['AMT'];
        // dd($response);
        if (in_array(strtoupper($response['ACK']), ['SUCCESS', 'SUCCESSWITHWARNING'])) {
            // dd('Payment successful');
           //Performing transaction
        $payment_status = $provider->doExpressCheckoutPayment($token, $payerId, $this->projectData($request));
        dd($payment_status);
        }

        dd('Something is wrong.');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...