Paypal PHP SDK с laravel. Проблема с загрузкой конечной точки конфигурации в рабочем режиме - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь использовать 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;
}

Что не так?

Спасибо

1 Ответ

0 голосов
/ 01 мая 2020

Это новая интеграция? Если это так, v1 PayPal- PHP -SDK устарел и устарел и не должен использоваться ни для чего.

Вместо этого используйте v2 Checkout- PHP -SDK

...