授权失败 [Omnipay 和 Paypal]

Authorization Failed [Omnipay and 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());
        }

我正在尝试使用我的 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"
  ]
}

有人知道有什么问题吗?谢谢

返回的错误代码是 10002:"L_ERRORCODE0" => "10002"

PayPal API Error and Warning Codes 文档指出:

This error can be caused by an incorrect API username, an incorrect API password, or an invalid API signature. Make sure that all three of these values are correct. For your security, PayPal does not report exactly which of these three values might be in error.

API用户名and/or密码错误。重置这些并重试。

您传递给 initialize() 方法的数组结构适用于 REST API。

变化:

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

至:

$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" => ""
]