简体   繁体   English

访问 https://api.paypal.com/v1/payments/payment/ 时得到 Http 响应代码 400

[英]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.

相关问题 PayPal:错误:“访问https://api.sandbox.paypal.com/v1/payments/payment时的HTTP响应代码400。” - PayPal: Getting error: “Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment.” 如何解决此错误“访问 https://api.sandbox.paypal.com/v1/payments/payment 时收到 Http 响应代码 400。 ” - How do I solve this error “Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment. ” 访问https://api.sandbox.paypal.com/v1/payments/billing-plans/时获得Http响应代码403 - Got Http response code 403 when accessing https://api.sandbox.paypal.com/v1/payments/billing-plans/ 访问https://api.sandbox.paypal.com/v1/payments/payouts?sync_mode=true时收到Http响应代码403 - Got Http response code 403 when accessing https://api.sandbox.paypal.com/v1/payments/payouts?sync_mode=true 访问https://api.sandbox.paypal.com时获得Http响应代码400 - Got Http response code 400 when accessing https://api.sandbox.paypal.com 访问https://api-3t.sandbox.paypal.com/2.0时获得Http响应代码500 - Got Http response code 500 when accessing https://api-3t.sandbox.paypal.com/2.0 执行 paypal 付款时得到 Http 响应代码 400 - Got Http response code 400 when Execute the paypal Payments Got Http response code 400 When executing payment on PayPal Sandbox, using PayPal PHP SDK - Got Http response code 400 When executing payment on PayPal Sandbox, using PayPal PHP SDK PayPal付款 - HTTP响应代码400 - PayPal Payments - HTTP Response code 400 访问paypal付款时,Http响应代码500 - Http response code 500 when accessing paypal payment
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM