当前位置: 首页 > 知识库问答 >
问题:

Paypal SDK问题获取错误[ERR_HTTP_HEADERS_SENT]:无法在发送到客户端后设置标头

戈建白
2023-03-14

我得到状态代码201,但是当我尝试重定向到approval_url时,我得到

错误[ERR_HTTP_HEADERS_SENT]:无法在发送到客户端后设置标头

当我手动单击approval_url时,我尝试不重定向,所有工作都很好。

var express = require("express");
var router  = express.Router();
var middleAware = require("../middleware");
var paypal = require("paypal-rest-sdk");
var User    = require("../models/user");
var Shoe    = require("../models/shoe");

paypal.configure({
    'mode': 'sandbox', //sandbox or live
    'client_id': 'AUN6mxOAFtJS5hrlUGdyd-Fe1VOE6zu63W6dYztXhOXOpeT0ps9JbF9N3lII-f3EP1o7G2MHs9flc3Ho',
    'client_secret': 'someSecretId'
  });

//pay with paypal
router.post("/cart/:id/pay", function(req, res){
    User.findById(req.params.id).populate("cart").exec(function(err, foundUser){
        if(err){
            console.log(err);
            res.redirect("back")
        }else{
            //find all shoes to checkout
            var newItems = [];
            for(var i=0;i < foundUser.cart.length;i++){
                itemToPush = {
                    "name": foundUser.cart[i].name,
                    "sku": foundUser.cart[i].length,
                    "price": foundUser.cart[i].price,
                    "currency": "USD",
                    "quantity": 1
                }
                newItems.push(itemToPush);
            }
            //totalprice
            var totalPrice = 0;
            foundUser.cart.forEach(function(item){
                    totalPrice += item.price;  
                    return totalPrice;
            }); 
            res.redirect("back");
            // create paypal payment JSON
            var create_payment_json = {
                "intent": "sale",
                "payer": {
                    "payment_method": "paypal"
                },
                "redirect_urls": {
                    "return_url": "http://127.0.0.1:3000/shop",
                    "cancel_url": "http://127.0.0.1:3000/shop"
                },
                "transactions": [{
                    "item_list": {
                        "items": newItems
                    },
                    "amount": {
                        "currency": "USD",
                        "total": totalPrice
                    },
                    "description": "This is the payment description."
                }]
            };
            // console.log(JSON.stringify(create_payment_json));
            paypal.payment.create(create_payment_json, function(err, payment){
                if(err){
                    throw err;
                }else{
                    console.log(payment);
                    for(var i=0;i < payment.links.length;i++){
                        if(payment.links[i].rel === 'approval_url'){
                            console.log("FOUND " + payment.links[i].href);
                            res.redirect(payment.links[i].href);
                        }
                    }
                }
            });
        }
    });
});

module.exports = router;

服务器启动!{id:'payid-l3azrlq4la763246g079113e',意图:'sale',状态:'created',付款人:{payment_method:'paypal'},事务:[{amount:[Object],描述:“这是付款描述。”,item_list:[Object],related_resources:[]}],create_time:'2020-05-17t20:03:57z',链接:[{{href:'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=ec-2c992495uh4895047',rel:'approval_url',方法:'redirect'},{href:'https://api.sandbox.paypal.com/v1/payments/payment/payid-l3azrlq4la763246g079113e/execute',rel:'execute',方法:'post'},httpstatuscode:201}找到&token=EC-2C992495UH4895047_http_outgoing.js:526抛出新的ERR_HTTP_HEADERS_SENT('set');^

错误[ERR_HTTP_HEADERS_SENTHEADER(_HTTP_OUTGOON.JS:526:11)在ServerResponse.Header(C:\users\zohar banai\desktop\personal projects\shopproject\node\personal projects\shopproject\node_modules\express\lib\response.js:771:10)在ServerResponse.location(C:\users\zohar banai\desktople\personal:926:18)在C:\users\Zohar Banai\Desktop\Personal Projects\ShopProject\Routes\cart.js:116:33在IncomingMessage。(c:\users\zohar banai\desktop\personal projects\shopproject\node_modules\paypal-rest-sdk\lib\client.js:140:13)在incomingmessage.emit(Events.js:323:22)在endReadableNT(_stream_readable.js:1204:12)在processTicksAndRejections(internal/process/task_queues.js:84:21){code:'err_http_headers_sent'}

共有1个答案

长孙淳
2023-03-14

一些指针:

>

  • 如果HTTP标头已经在应用程序对请求的响应中的某个地方发送,则无法使用HTTP标头'location:newurl'进行重定向。但是,不值得花时间解决这个问题--请参见下面的内容。

    重定向是旧的做事方式。不要使用任何重定向。一点都没有。一点都没有。相反,应该使用现代的“上下文”流程:在后台加载您的站点,并使用前端:https://developer.paypal.com/demo/checkout/#/pattern/server(这是服务器集成模式;对于UI的演示,请单击客户端模式,因为该模式可以交互地单击)

  •  类似资料:
    • 所以我看到了一篇很棒的帖子“错误:发送到客户端后无法设置标题,但仍然不明白我的“标题”部分有什么问题,因为当我将它从注释掉的

    • 我在NodeJS中使用Passport.js、Express和Mongoose时遇到了这个奇怪的问题。基本上,即使我只发送了一个头,我还是得到一个错误,说“不能在头被发送到客户端后设置它们”。 我读过其他帖子并尝试过,但没有一个有效。 应用程序。get-res.send与return res.send之间有什么区别吗 错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后,无法设

    • 我正在执行简单的 API 提取,但收到以下错误: ,我不确定发生这种情况的原因: 代码在下面,还提供了错误的打印屏幕。我不确定这是否与nodejs的异步行为有关: 到目前为止,我解决这个错误的方法是: 我使用了这个来源,它对错误类型的广泛解释解释了问题所在。然而,理解发生了什么是没有用的。 我还发现这很有用,这也很有用,但最后一个特别是一个缺失语句< code>return的代码错误。我的错误似乎

    • 问题内容: 我对Node.js相当陌生,遇到了一些问题。 我正在使用Node.js 4.10和Express 2.4.3。 当我尝试访问http://127.0.0.1:8888/auth/facebook时,我将重定向到http://127.0.0.1:8888/auth/facebook_callback。 然后,我收到以下错误: 以下是我的代码: 我可以知道我的代码有什么问题吗? 问题答案:

    • 这是我的代码 有人知道错误是什么吗 错误[ERR_HTTP_HEADERS_SENT]:在serverresponse.json(/home/runner/boilerplate-project-issuetracker/node_modules/express/lib/response.json(/home/runner/boilerplate-project-issuetracker/node

    • 我正在尝试创建一个简单的没有任何数据库的NodeJS和Express的REST API。我已经将所有数据存储在JSON文件中。数据是对象数组的形式。 我有像fund-name/: portId这样的路径。 所以我这样做: 当我点击网址 时,我收到以下错误: 错误[ERR_HTTP_HEADERS_SENT]:在ServerResponse.header(/home/username/Desktop