[英]Got Http response code 400 when accessing https://api.paypal.com/v1/payments/payment/
I'm trying to use the PayPal-PHP-SDK to integrate PayPal with a custom built WordPress eCommerce theme and I'm getting a an error:我正在尝试使用 PayPal-PHP-SDK 将 PayPal 与自定义构建的 WordPress 电子商务主题集成,但出现错误:
Got Http response code 400 when accessing https://api.paypal.com/v1/payments/payment/.. .
访问https://api.paypal.com/v1/payments/payment/时得到 Http 响应代码 400。
This error only appears when I which to live, it works completely fine on sandbox mode.此错误仅在我居住时出现,它在沙盒模式下完全正常。
On the client side I'm using checkout.js and redirecting it to the PHP file where I'm trying to use the the PayPal-PHP-SDK to execute the payment and I get the error where the code reads:在客户端,我使用 checkout.js 并将其重定向到 PHP 文件,在该文件中我尝试使用 PayPal-PHP-SDK 执行付款,但在代码中出现错误:
$result = $payment->execute($execution, $apiContext);
Below is a sample code I am using下面是我正在使用的示例代码
JavaScript JavaScript
paypal.Button.render({
env: 'production',
client: {
sandbox: 'sandbox_id',
production: 'production_id'
},
locale: 'en_US',
style: {
color: 'blue',
size: 'responsive',
},
commit: true,
payment: function (data, actions) {
return actions.payment.create({
payment: {
redirect_urls: {
return_url: site_url + '/execute-payment'
},
transactions: [{
amount: {
total: '0.01',
currency: 'NZD',
details: {
subtotal: '0.01',
shipping: '0.00',
tax: '0.00',
insurance: '0.00'
}
},
description: "TEST",
invoice_number: json.invoice_number ? json.invoice_number : "",
item_list: {
items: items_ ? items_ : "",
shipping_address: {
"recipient_name": json.recipient_name ? json.recipient_name : "",
"line1": json.line1 ? json.line1 : "",
"line2": json.line2 ? json.line2 : "",
"city": json.city ? json.city : "",
"country_code": json.country_code ? json.country_code : "",
"postal_code": json.postal_code ? json.postal_code : "",
"phone": json.phone ? json.phone : "",
"state": json.state ? json.state : ""
}
}
}],
"note_to_payer": "Contact us for any questions on your order.",
}
});
},
onAuthorize: function (data, actions) {
console.log('::Authorized: ');
return actions.redirect();
},
onCancel: function (data, actions) {
console.log('::Canceled: ');
/* window.location = "/paypal/cancel/"; */
},
onError: function (error) {
console.log('::Error: ', error)
}
}, '#paypal_container');
PHP PHP
# live client id
$live_cid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
# live secret id
$live_sid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
$live_cid,
$live_sid
)
);
$apiContext->setConfig(
array(
'log.LogEnabled' => true,
'log.FileName' => 'PayPal.log',
'log.LogLevel' => 'DEBUG',
'mode' => 'live'
)
);
# die(var_dump($apiContext));
# redirect here via link: https://example.com/execute-payment/?paymentId=xxxxxxxxxxxxxxxxxxxxxxxxxxxx&token=xxxxxxxxxxxxxxxxxx&PayerID=xxxxxxxxxxxxxx
# die(var_dump("<br><br>" . "paymentId: " . $_GET['paymentId'] . "<br>" . "PayerID: " . $_GET['PayerID']));
$paymentId = $_GET['paymentId'];
$payment = Payment::get($paymentId, $apiContext);
$execution = new PaymentExecution();
$execution->setPayerId($_GET['PayerID']);
$transaction = new Transaction();
$amount = new Amount();
$details = new Details();
$details->setShipping(0.00)
->setTax(0.00)
->setSubtotal(0.01);
$amount->setCurrency('NZD');
$amount->setTotal(0.01);
$amount->setDetails($details);
$transaction->setAmount($amount);
$execution->addTransaction($transaction);
$result = $payment->execute($execution, $apiContext);
# I get the error after trying to execute the payment
$paymentId = $result->id;
$PayerID = $result->payer->payer_info->payer_id;
die(var_dump($result));
Error错误
Fatal error: Uncaught PayPal\Exception\PayPalConnectionException: Got Http response code 400 when accessing https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxx/execute .
致命错误:未捕获的 PayPal\Exception\PayPalConnectionException:在访问https://api.paypal.xxxxxxxxxxxxxxxxxxxxx/exec/xxxxxxxxxxxxxxx.xxxxxx . in /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework/paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php:207 Stack trace: #0 /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework/paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Transport/PayPalRestCall.php(78): PayPal\Core\PayPalHttpConnection->execute('{"payer_id":"66...') #1 /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework/paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalResourceModel.php(104): PayPal\Transport\PayPalRestCall->execute(Array, '/v1/payments/pa...', 'POST', '{"payer_id":"66...', Array) #2 /mnt/stor10-wc1-ord1/825767/984521/www.example.com in /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework/paypal/vendor/pa
在/mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework/paypal/vendor/paypal/rest-api-sdk-php/ lib/PayPal/Core/PayPalHttpConnection.php:207 堆栈跟踪:#0 /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework /paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Transport/PayPalRestCall.php(78): PayPal\Core\PayPalHttpConnection->execute('{"payer_id":"66...') #1 /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/newww/wp-content/themes/example/framework/paypal/vendor/paypal/rest-api-sdk-php /lib/PayPal/Common/PayPalResourceModel.php(104): PayPal\Transport\PayPalRestCall->execute(Array, '/v1/payments/pa...', 'POST', '{"payer_id":"66. ..',数组)#2 /mnt/stor10-wc1-ord1/825767/984521/www.example.com 在 /mnt/stor10-wc1-ord1/825767/984521/www.example.com/web/content/新万维网/wp-content/themes/example/framework/paypal/vendor/pa ypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php on line 207
ypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php 上线 207
The above code is part of an old code that was on the website, I'm just trying to make it work.上面的代码是网站上旧代码的一部分,我只是想让它工作。 It was working fine until we changed the Client and Secret ID.
在我们更改客户端和秘密 ID 之前,它工作正常。 The payment is being created fine but the issue comes when I execute the payment
付款创建良好,但是当我执行付款时出现问题
PayPal.log PayPal.log
[05-08-2020 08:51:12] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.paypal.com/v1/oauth2/token
[05-08-2020 08:51:13] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 200
[05-08-2020 08:51:13] PayPal\Core\PayPalHttpConnection : INFO: GET https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[05-08-2020 08:51:14] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 200
[05-08-2020 08:51:14] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/execute
[05-08-2020 08:51:14] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 404
[05-08-2020 08:51:14] PayPal\Core\PayPalHttpConnection : ERROR: Got Http response code 404 when accessing https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/execute. {"name":"INVALID_RESOURCE_ID","message":"Requested resource ID was not found.","information_link":"https://developer.paypal.com/docs/api/payments/#errors","debug_id":"acba76cd232a5"}
[05-08-2020 08:55:31] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.paypal.com/v1/oauth2/token
[05-08-2020 08:55:33] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 200
[05-08-2020 08:55:34] PayPal\Core\PayPalHttpConnection : INFO: GET https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[05-08-2020 08:55:36] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 200
[05-08-2020 08:55:40] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/execute
[05-08-2020 08:55:42] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 404
[05-08-2020 08:55:42] PayPal\Core\PayPalHttpConnection : ERROR: Got Http response code 404 when accessing https://api.paypal.com/v1/payments/payment/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/execute. {"name":"INVALID_RESOURCE_ID","message":"Requested resource ID was not found.","information_link":"https://developer.paypal.com/docs/api/payments/#errors","debug_id":"3c22c723fa27a"}
I'm definitely doing something wrong with this.我肯定做错了什么。
Hard to guess at what precisely is wrong with the execute call without seeing the full API response body and headers, including a PayPal-Debug-ID在没有看到完整的 API 响应正文和标头(包括 PayPal-Debug-ID)的情况下,很难猜测执行调用到底出了什么问题
400 errors are usually a wrong credential problem, or credentials paired with the wrong environment, but that is less likely if your payment creation and oauth2 calls are working okay 400 错误通常是错误的凭据问题,或凭据与错误的环境配对,但如果您的付款创建和 oauth2 调用正常,则不太可能
The more important question is why are you using an deprecated V1 SDK, at all, which is no longer maintained?更重要的问题是,您为什么要使用不再维护的已弃用的 V1 SDK? You should completely change your integration to the current V2 PHP SDK, documented here: https://developer.paypal.com/docs/api/rest-sdks/
You should completely change your integration to the current V2 PHP SDK, documented here: https://developer.paypal.com/docs/api/rest-sdks/
The current best front-end experience to pair it with is https://developer.paypal.com/demo/checkout/#/pattern/server当前与之配对的最佳前端体验是https://developer.paypal.com/demo/checkout/#/pattern/server
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.