skip to Main Content

Undefined index: secret
lluminateFoundationBootstrapHandleExceptions::handleError
C:wamp64wwwchefruntownvendorsrmklivepaypalsrcTraitsPayPalRequest.php:329

private function setApiProviderConfiguration($credentials){
    // Setting PayPal API Credentials

    collect($credentials[$this->mode])->map(function ($value, $key) {

        $this->config[$key] = $value;

    });


    // Setup PayPal API Signature value to use.

    $this->config['signature'] = empty($this->config['certificate']) ?

    $this->config['secret'] : $this->config['certificate'];

    $this->paymentAction = $credentials['payment_action'];

    $this->locale = $credentials['locale'];

    $this->certificate = $this->config['certificate'];

    $this->validateSSL = $credentials['validate_ssl'];

    $this->setApiProvider($credentials);
}

2

Answers


  1. Chosen as BEST ANSWER

    I updated the paypal.php file found in my config folder with this

    <?php
    /**
     * PayPal Setting & API Credentials
     * Created by Raza Mehdi <[email protected]>.
     */
    
    return [
        'mode'    => env('PAYPAL_MODE', 'sandbox'), // Can only be 'sandbox' Or 'live'. If empty or invalid, 'live' will be used.
        'sandbox' => [
            'username'    => env('PAYPAL_SANDBOX_API_USERNAME', ''),
            'password'    => env('PAYPAL_SANDBOX_API_PASSWORD', ''),
            'secret'      => env('PAYPAL_SANDBOX_API_SECRET', ''),
            'certificate' => env('PAYPAL_SANDBOX_API_CERTIFICATE', ''),
            'app_id'      => 'APP-80W284485P519543T', // Used for testing Adaptive Payments API in sandbox mode
        ],
        'live' => [
            'username'    => env('PAYPAL_LIVE_API_USERNAME', ''),
            'password'    => env('PAYPAL_LIVE_API_PASSWORD', ''),
            'secret'      => env('PAYPAL_LIVE_API_SECRET', ''),
            'certificate' => env('PAYPAL_LIVE_API_CERTIFICATE', ''),
            'app_id'      => '', // Used for Adaptive Payments API
        ],
    
        'payment_action' => 'Sale', // Can only be 'Sale', 'Authorization' or 'Order'
        'currency'       => env('PAYPAL_CURRENCY', 'USD'),
        'billing_type'   => 'MerchantInitiatedBilling',
        'notify_url'     => '', // Change this accordingly for your application.
        'locale'         => '', // force gateway language  i.e. it_IT, es_ES, en_US ... (for express checkout only)
        'validate_ssl'   => true, // Validate SSL when creating api client.
    ];
    

  2. Basically, you need to match the .env variables and config/paypa.php variables.

    PAYPAL_MODE=sandbox
    PAYPAL_CURRENCY=USD
    PAYPAL_SANDBOX_API_USERNAME=username
    PAYPAL_SANDBOX_API_PASSWORD=password
    PAYPAL_SANDBOX_API_SECRET=secret-key-or-signature
    

    You can retrieve these information by navigating to paypal sandbox dashboard > leftnav > accounts > sandbox > list of account > view/edit account (action drop down) > API Credentials tab.

    and your config/paypal.php should have the same variables passed.

    return [
        'mode'    => env('PAYPAL_MODE', 'sandbox'), // Can only be 'sandbox' Or 'live'. If empty or invalid, 'live' will be used.
        'sandbox' => [
            'username'    => env('PAYPAL_SANDBOX_API_USERNAME', ''),
            'password'    => env('PAYPAL_SANDBOX_API_PASSWORD', ''),
            'secret'      => env('PAYPAL_SANDBOX_API_SECRET', ''),
            'certificate' => env('PAYPAL_SANDBOX_API_CERTIFICATE', ''),
            'app_id'      => 'APP-80W284485P519543T',
            // 'client_id'         => env('PAYPAL_SANDBOX_CLIENT_ID', ''),
            // 'client_secret'     => env('PAYPAL_SANDBOX_CLIENT_SECRET', ''),
            // 'app_id'            => 'APP-80W284485P519543T',
        ],
        'live' => [
            // 'client_id'         => env('PAYPAL_LIVE_CLIENT_ID', ''),
            // 'client_secret'     => env('PAYPAL_LIVE_CLIENT_SECRET', ''),
            // 'app_id'            => '',
            'username'    => env('PAYPAL_SANDBOX_API_USERNAME', ''),
            'password'    => env('PAYPAL_SANDBOX_API_PASSWORD', ''),
            'secret'      => env('PAYPAL_SANDBOX_API_SECRET', ''),
            'certificate' => env('PAYPAL_SANDBOX_API_CERTIFICATE', ''),
            'app_id'      => '',
        ],
    
        'payment_action' => env('PAYPAL_PAYMENT_ACTION', 'Sale'), // Can only be 'Sale', 'Authorization' or 'Order'
        'currency'       => env('PAYPAL_CURRENCY', 'USD'),
        'notify_url'     => env('PAYPAL_NOTIFY_URL', ''), // Change this accordingly for your application.
        'locale'         => env('PAYPAL_LOCALE', 'en_US'), // force gateway language  i.e. it_IT, es_ES, en_US ... (for express checkout only)
        'validate_ssl'   => env('PAYPAL_VALIDATE_SSL', true), // Validate SSL when creating api client.
    ];
    

    Note the sandbox and live array, I have commented the default array items with new one.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search