Reputation: 74
Undefined index: secret lluminate\Foundation\Bootstrap\HandleExceptions::handleError C:\wamp64\www\chefruntown\vendor\srmklive\paypal\src\Traits\PayPalRequest.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);
}
Upvotes: 1
Views: 2720
Reputation: 494
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.
Upvotes: 1
Reputation: 74
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.
];
Upvotes: 1