Я пытаюсь использовать Paypal PHP SDK с laravel. Все отлично работает в режиме песочницы. Но когда я go live, у меня возникает проблема загрузки конфигурации, когда запрос возвращается после paiement на платформе PayPal.
Моя проблема в этом файле /lib/PayPal/Handler/RestHandler.php, $ config пусто
private function _getEndpoint($config)
{
if (isset($config['service.EndPoint'])) {
return $config['service.EndPoint'];
} elseif (isset($config['mode'])) {
switch (strtoupper($config['mode'])) {
case 'SANDBOX':
return PayPalConstants::REST_SANDBOX_ENDPOINT;
break;
case 'LIVE':
return PayPalConstants::REST_LIVE_ENDPOINT;
break;
default:
throw new PayPalConfigurationException('The mode config parameter must be set to either sandbox/live');
break;
}
} else {
// Defaulting to Sandbox
return PayPalConstants::REST_SANDBOX_ENDPOINT;
}
}
Моя проблема в том, что здесь не загружается конфигурация.
Я сделал это в своем приложении laravel: добавление файла конфигурации в PayPal. php
<?php
return [
'settings' => array(
'mode' => env('PAYPAL_MODE','LIVE'),
'service.EndPoint' => env('PAYPAL_ENDPOINT','https://api.paypal.com/'),
'http.ConnectionTimeOut' => 30,
'log.LogEnabled' => true,
'log.FileName' => storage_path() . '/logs/paypal.log',
'log.LogLevel' => 'ERROR'
),
];
Я обрабатываю свой ApiContext следующим образом в PayPalController
public static function generatePaypalApiContext(Connexion $connexion)
{
if (isset($connexion->data["paypal_client_id"]) && isset($connexion->data["paypal_client_secret"])) {
$apiContext = new ApiContext(new OAuthTokenCredential($connexion->data["paypal_client_id"], $connexion->data["paypal_client_secret"]));
$paypal_conf = config('paypal');
$apiContext->setConfig($paypal_conf['settings']);
Session::put('paypal_api_context', $apiContext);
} else {
return false;
}
return $apiContext;
}
, и это моя функция для выполнения paiement
public static function getPaymentStatus(string $payerId)
{
/** Get the payment ID before session clear **/
$payment_id = Session::get('paypal_payment_id');
/** clear the session payment ID **/
Session::forget('paypal_payment_id');
$apiContext = Session::get('paypal_api_context');
$payment = Payment::get($payment_id, $apiContext);
$execution = new PaymentExecution();
$execution->setPayerId($payerId);
/**Execute the payment **/
$result = $payment->execute($execution, $apiContext);
if ($result->getState() == 'approved') {
return true;
}
return false;
}
Что не так?
Спасибо