【问题标题】:Paypal Payout SDK AUTHORIZATION_ERROR In Live EnvironmentPaypal Payout SDK AUTHORIZATION_ERROR 在直播环境中
【发布时间】:2020-09-28 16:39:15
【问题描述】:

我已经使用 Composer 设置了 Paypal Payout SDK。

Paypal 向我保证,我的帐户已启用付款功能。我创建了一个新的 Live Rest-App 并在 PayPalClient 类中使用了 Client-ID 和 Client-Secret:

<?php
namespace PaypalPayoutsSDK\Payouts;
use PaypalPayoutsSDK\Core\PayPalHttpClient;
use PaypalPayoutsSDK\Core\ProductionEnvironment;
class PayPalClient {
    public static function client() {
        return new PayPalHttpClient(self::environment());
    }
    public static function environment() {
        $clientId = getenv("CLIENT_ID") ?: "my-client-id";
        $clientSecret = getenv("CLIENT_SECRET") ?: "my-client-secret";
        return new ProductionEnvironment($clientId, $clientSecret);
    }
}
?>

现在我想做一个简单的交易。我使用了 PayPal Payout SDK 中包含的示例,并使用上面提到的 PayPalClient 创建了一个付款:

<?php
require __DIR__ . '/vendor/autoload.php';
use PaypalPayoutsSDK\Payouts\PayPalClient;
use PaypalPayoutsSDK\Payouts\PayoutsPostRequest;
$request = new PayoutsPostRequest();
$body= json_decode(
            '{
                "sender_batch_header":
                {
                  "email_subject": "SDK payouts test txn"
                },
                "items": [
                {
                  "recipient_type": "EMAIL",
                  "receiver": "myname@gmail.com",
                  "note": "Your 4$ payout",
                  "sender_item_id": "Test_txn_12",
                  "amount":
                  {
                    "currency": "USD",
                    "value": "4.00"
                  }
                }]
              }',             
            true);
$request->body = $body;
$client = PayPalClient::client();
$response = $client->execute($request);
?>

但是,当我执行该文件时,出现以下错误:

Fatal error: Uncaught PayPalHttp\HttpException: {"name":"AUTHORIZATION_ERROR","message":"Authorization error occurred.","debug_id":"d3c2fe720217b","information_link":"https://developer.paypal.com/docs/api/payments.payouts-batch/#errors","links":[]} in /hermes/bosnaweb27a/b1507/dom.mydomain/mydomain/payment/vendor/paypal/paypalhttp/lib/PayPalHttp/HttpClient.php:215 Stack trace: #0 /hermes/bosnaweb27a/b1507/dom.mydomain/mydomain/payment/vendor/paypal/paypalhttp/lib/PayPalHttp/HttpClient.php(100): PayPalHttp\HttpClient->parseResponse(Object(PayPalHttp\Curl)) #1 /hermes/bosnaweb27a/b1507/dom.mydomain/mydomain/payment/payuser.php(37): PayPalHttp\HttpClient->execute(Object(PaypalPayoutsSDK\Payouts\PayoutsPostRequest)) #2 {main} thrown in /hermes/bosnaweb27a/b1507/dom.mydomain/mydomain/payment/vendor/paypal/paypalhttp/lib/PayPalHttp/HttpClient.php on line 215  

错误似乎发生在 HTTPClient 上。我已经向 Paypal 的技术助理提供了相同的信息,但他似乎什么都不知道。

这可能是什么问题。我确定 Client-ID 和 Client-Secret 是正确的,我已经尝试使用新的 REST-APP 来做到这一点。也许我的代码有问题?还是我只是错过了什么?

【问题讨论】:

  • 也许为了理智起见,尝试直接设置 clientId 和 clientSecret,而不是让它从可能的 getenv 结果中分配。 return new ProductionEnvironment('put-id-directly-here', 'put-secret-here');除此之外,它看起来应该可以工作。
  • 这没有效果,我还是和以前一样得到“AUTHORIZATION_ERROR”。
  • 混蛋。那么这是一个难题,因为可以说所有代码都在“工作”,以达到它尝试连接的地步,然后授权失败。因此,唯一可能导致它的真实项目是:A)您输入了错误的凭据(但您已经检查了多次),或 B)该帐户未设置付款(但贝宝声称它是......或者也许他们说谎!)。希望我能提供更多。我们的支付系统是在之前的 SDK 上,所以代码是不同的,但它也都取决于 clientId/secret。
  • 您使用的是其余应用的 Live ClientID 和 Secret,而不是沙盒吗?是否在该其余应用中检查了付款权限?
  • 显然是缺少验证(链接我的银行帐户)。贝宝的技术支持一开始似乎没有注意到。

标签: php paypal payout


【解决方案1】:

您的 PayPal 帐户需要经过“验证”才能发送付款。尝试添加并确认银行账户,或联系 PayPal 了解其他可能性。

【讨论】:

  • 我必须将此标记为正确答案。从 PayPal 的文件来看,“验证”的意思并不明显是为了链接我的银行账户。它从来没有被这样提及。因此,如果有人在关联您的银行帐户时遇到同样的问题,应该可以解决问题。
猜你喜欢
  • 2021-11-11
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 2022-12-09
  • 2013-12-13
相关资源
最近更新 更多