Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Paypal SDK问题获取错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头_Javascript_Node.js_Mongodb_Paypal_Ejs - Fatal编程技术网

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

Javascript Paypal SDK问题获取错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头,javascript,node.js,mongodb,paypal,ejs,Javascript,Node.js,Mongodb,Paypal,Ejs,我得到状态代码201,但当我尝试重定向到批准url时,我得到 错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头 当我手动单击approval\u url时,我尝试不重定向,所有工作都正常 这是我的代码: var express = require("express"); var router = express.Router(); var middleAware = require("../middleware"); var paypal = requi

我得到状态代码201,但当我尝试重定向到批准url时,我得到

错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头

当我手动单击approval\u 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;
var express=require(“express”);
var router=express.router();
var middleAware=require(“../middleware”);
var paypal=require(“paypal rest sdk”);
var User=require(“../models/User”);
var鞋靴=需要(“../models/Shoe”);
paypal.configure({
'mode':'sandbox',//沙盒或live
“客户id”:“AUN6mxOAFtJS5hrlUGdyd-FE1VOE6ZU63W6DYZTXHOPET0PS9JBF9N3LII-f3EP1o7G2MHs9flc3Ho”,
“客户秘密”:“某些秘密”
});
//用贝宝支付
路由器.post(“/cart/:id/pay”),功能(请求、回复){
User.findById(req.params.id).populate(“cart”).exec(函数(err,foundUser){
如果(错误){
控制台日志(err);
res.redirect(“返回”)
}否则{
//找到所有要结帐的鞋子
var newItems=[];
对于(var i=0;i
这里的问题是,我获得了良好的状态代码,但随后出现了以下错误:

(节点:14648)弃用警告:当前URL字符串解析器已弃用,将在未来版本中删除。要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect

(节点:14648)弃用警告:当前服务器发现和监视引擎已弃用,将在未来版本中删除。要使用新的服务器发现和监视引擎,请将选项{useUnifiedTopology:true}传递给MongoClient构造函数

服务器启动了! { id:'PAYID-L3AZRLQ4LA763246G079113E', 意向:‘出售’, 声明:“已创建”, 付款人:{付款方式:'贝宝'}, 交易:[ { 金额:[对象], 描述:“这是付款描述。”, 项目列表:[对象], 相关资源:[] } ], 创建时间:“2020-05-17T20:03:57Z”, 链接:[ { href:“”, rel:‘self’, 方法:“获取” }, { href:“”, rel:“批准url”, 方法:“重定向” }, { href:“”, rel:'执行', 方法:“发布” } ], httpStatusCode:201 } 建立 _http_outgoing.js:526 抛出新的ERR_HTTP_头_SENT('set'); ^

错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头
在ServerResponse.setHeader(_http_outgoing.js:526:11) 在ServerResponse.header(C:\Users\Zohar Banai\Desktop\personal projects\ShopProject\node\u modules\express\lib\response.js:771:10) 位于ServerResponse.location(C:\Users\Zohar Banai\Desktop\personal projects\ShopProject\node\u modules\express\lib\response.js:888:15) 在ServerResponse.redirect(C:\Users\Zohar Banai\Desktop\personal projects\ShopProject\node\u modules\express\lib\response.js:926:18) 在C:\Users\Zohar Banai\Desktop\personal projects\ShopProject\routes\cart.js:116:33 在收到消息时。(C:\Users\Zohar Banai\Desktop\personal projects\ShopProject\node\u modules\paypal rest sdk\lib\client.js:140:13) 在IncomingMessage.emit(events.js:323:22) 在endReadableNT(_stream_readable.js:1204:12) 在处理和拒绝时(内部/process/task_queues.js:84:21){ 代码:“ERR\u HTTP\u HEADERS\u SENT” }

一些建议:

  • 如果HTTP头已在应用程序对请求的响应之前发送到某个位置,则无法执行带有HTTP头“Location:newurl”的重定向。但是,这不值得一试