贝宝结帐 - 上线麻烦

时间:2021-07-18 19:45:00

标签: php paypal checkout live

我正在使用 paypal checkout(在 php 中)制作付款页面,当我处于沙盒模式时一切正常,但是当我上线时,我在付款后收到此错误...

Fatal error: Uncaught PayPal\Exception\PayPalConnectionException: Got Http response code 401 when accessing https://api.sandbox.paypal.com/v1/oauth2/token. in www/src/package/vendor/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php:207 Stack trace: #0 www/src/package/vendor/paypal/rest-api-sdk-php/lib/PayPal/Auth/OAuthTokenCredential.php(252): PayPal\Core\PayPalHttpConnection->execute('grant_type=clie...') #1 www/src/package/vendor/paypal/rest-api-sdk-php/lib/PayPal/Auth/OAuthTokenCredential.php(280): PayPal\Auth\OAuthTokenCredential->getToken(Array, 'qsdqsdqsdqsd', 'qdsqdsdqsdsqd', 'grant_type=clie...') #2 www/src/package/vendor/paypal/rest-api-sdk-php/lib/PayPal/Auth/OAuthTokenCredential.php(216): PayPal\Auth\OAuthTokenCredential->generateAccessToken(Array, NULL) #3 www/src/package/vendor/paypal/rest-api-sdk-php/lib/PayPal/Auth/OAuthTokenCredential.php(166): PayPal\Auth\OAuthTokenCredential->updateAccessToken(Array) #4 www/src/package/vendor/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php on line 207

你能帮我吗? 谢谢

2 个答案:

答案 0 :(得分:1)

如评论中所述,您似乎已将凭据更改为实时状态,而没有将环境从沙箱更改为实时环境,因此这些实时凭据正用于沙箱端点,这将不起作用。这两个环境是完全独立的。

此外,您似乎在使用已弃用的 v1/payments SDK,但不支持该 SDK。您应该将集成更改为当前的 v2/checkout/orders Checkout-PHP-SDK...

在您的服务器上创建两条路由,一条用于“创建订单”,另一条用于“捕获订单”,documented here。这些路由应该只返回 JSON 数据(没有 HTML 或文本)。后者应该(成功时)在返回之前将付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id,PayPal 交易 ID)

将这两条路线与以下审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server

答案 1 :(得分:0)

我找到了一个解决方案,也许不是更好,但它有效: 我编辑了这个文件: paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalConstants.php :

const REST_SANDBOX_ENDPOINT = "https://api.sandbox.paypal.com/";
const OPENID_REDIRECT_SANDBOX_URL = "https://www.sandbox.paypal.com";

const REST_LIVE_ENDPOINT = "https://api.paypal.com/";
const OPENID_REDIRECT_LIVE_URL = "https://www.paypal.com"; `

到这里

const REST_SANDBOX_ENDPOINT = "https://api.paypal.com/";
const OPENID_REDIRECT_SANDBOX_URL = "https://www.paypal.com";

const REST_LIVE_ENDPOINT = "https://api.paypal.com/";
const OPENID_REDIRECT_LIVE_URL = "https://www.paypal.com";