Ошибка авторизации [Omnipay и Paypal]

Авторизация не удалась

Вот мой код:

$gateway = Omnipay::create('PayPal_Express');

        // Initialise the gateway
        $gateway->initialize(array(
            'clientId' => 'AZzCeImpURKHH0LIFSBTrEWGY-NKLCnUUQdHT049pRLvwBXg9BnlpbnsiGLPFQH43DU4eL-Qi96nrZU6',
            'secret' => 'EFP_mny9dfaaAfW1oyNM8R05weA5eIkU51KUSAdbvcoh3v4bo7txRBm-uzDZ2nOlZ0KmqS-JalgujFok',
            'testMode' => true, // Or false when you are ready for live transactions
        ));

        // Do an authorisation transaction on the gateway
        $transaction = $gateway->authorize(array(
            'returnUrl' => 'http://client.com',
            'cancelUrl' => 'http://localhost:8000/cancel',
            'amount' => '10.00',
            'currency' => 'AUD',
            'description' => 'This is a test authorize transaction.',
                // 'card'          => $card,
        ));

        $response = $transaction->send();
        if ($response->isSuccessful()) {
            // Find the authorization ID
            $authResponse = $response->getTransactionReference();
            echo "Authorize transaction was successful!\n" . $authResponse;
        } else {
            echo "Failed to auth transaction";
            dd($response);
        }

        // Once the transaction has been approved, we need to complete it.
        $transaction = $gateway->completePurchase(array(
            'payerId' => $request->PayerID,
            'transactionReference' => $authResponse
        ));

        $finalResponse = $transaction->send();

        dd($finalResponse);

        if ($finalResponse->getData()) {
            echo "Transaction was successful!\n";
            // Find the authorization ID
            $results = $finalResponse->getTransactionReference();
            dd($results);
        } else {
            dd($finalResponse->getData());
        }

Я пытаюсь настроить paypal sendbox с моим приложением laravel. Этот код находится в методе get, и когда я его вызываю, я получаю:

Failed to auth transaction
ExpressAuthorizeResponse {#354 ▼
  #liveCheckoutEndpoint: "https://www.paypal.com/cgi-bin/webscr"
  #testCheckoutEndpoint: "https://www.sandbox.paypal.com/cgi-bin/webscr"
  #request: ExpressAuthorizeRequest {#349 ▶}
  #data: array:9 [▼
    "TIMESTAMP" => "2016-02-12T15:06:21Z"
    "CORRELATIONID" => "68efe51d8aca6"
    "ACK" => "Failure"
    "VERSION" => "119.0"
    "BUILD" => "18308778"
    "L_ERRORCODE0" => "10002"
    "L_SHORTMESSAGE0" => "Authentication/Authorization Failed"
    "L_LONGMESSAGE0" => "You do not have permissions to make this API call"
    "L_SEVERITYCODE0" => "Error"
  ]
}

Кто-нибудь знает в чем проблема? Спасибо


person Vladimir Djukic    schedule 12.02.2016    source источник


Ответы (2)


Возвращаемый код ошибки: 10002: "L_ERRORCODE0" => "10002"

В документе PayPal Коды ошибок и предупреждений API говорится:

Эта ошибка может быть вызвана неправильным именем пользователя API, неправильным паролем API или недопустимой подписью API. Убедитесь, что все три из этих значений верны. Для вашей безопасности PayPal не сообщает, какое именно из этих трех значений может быть ошибочным.

Имя пользователя и/или пароль API неверны. Сбросьте их и попробуйте еще раз.

person Rodrigo M    schedule 12.02.2016

Структура массива, который вы передаете методу initialize(), предназначена для REST API.

Изменять:

$gateway = Omnipay::create('PayPal_Express');

to:

$gateway = Omnipay::create('PayPal_Rest');

Вы можете получить список доступных параметров, вызвав метод getDefaultParameters().

Для PayPal_Rest это даст вам:

array:4 [▼
  "clientId" => ""
  "secret" => ""
  "token" => ""
  "testMode" => false
]

и это для PayPal_Express:

array:10 [▼
  "username" => ""
  "password" => ""
  "signature" => ""
  "testMode" => false
  "solutionType" => array:2 [▶]
  "landingPage" => array:2 [▶]
  "brandName" => ""
  "headerImageUrl" => ""
  "logoImageUrl" => ""
  "borderColor" => ""
]
person Paweł Dymek    schedule 15.04.2017