NodeJS Node-Fetch Call Stripe 中的 JSON 错误

Posted

技术标签:

【中文标题】NodeJS Node-Fetch Call Stripe 中的 JSON 错误【英文标题】:JSON error in NodeJS Node-Fetch Call Stripe 【发布时间】:2021-10-20 10:01:06 【问题描述】:

由于某种原因,我在 node-fetch 中使用条带 API 时收到此错误。 错误:TypeError:无法使用“in”运算符在中搜索“信号”

"method":"post","headers":"Content-Type":"application/json","Authorization":"Bearer API KEY","body":"type":"card","card[number]":"4000000000000077","card[exp_month]":"01","card[exp_year]":"2023","card[cvc]":"235"

当我尝试其他解决方案和 JSON.parse() 时,我得到一个无效令牌错误。

这是重现问题的代码:

async function payCreator(product)
  var price1 = product.price.replace("$","")
   var price2 = price1.replace(".","")
   var price3 = price2 *product.quantity

 //charge customer
  var url = "https://api.stripe.com/v1/payment_methods";
  var params1 = 
    method: "post",
    headers: headers,
    body: "type": "card", "card[number]": product.card,"card[exp_month]": product.month,"card[exp_year]": product.year,"card[cvc]": product.cvc
  ;
var params2 = JSON.stringify(params1)
console.log(params2)
var params = params1

     var res = await fetch(url, (params2));
    var result = await res.json();
    return JSON.stringify(result)

感谢任何解决方案

【问题讨论】:

【参考方案1】:

我认为您不能将字符串作为 fetch 参数传递。我认为它只能是一个对象。所以,试试这个:

    字符串化 params1 的 body 属性

var bodyContent = JSON.stringify("type" : "card", "card[number]" : product.card, "card[exp_month]" : product.month, "card[exp_year]" : product.year, "card[cvc]" : product.cvc);
    
var params1 = 
    method: "post",
    headers: headers,
    body: bodyContent
;
    将 params1 作为 fetch 的参数传递

var res = await fetch(url, params1);

【讨论】:

以上是关于NodeJS Node-Fetch Call Stripe 中的 JSON 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 node-fetch 以使用公司代理?

如何知道我将被重定向到的 url? [nodejs] [节点获取]

nodejs使用fetch抓取geojson

nodejs使用fetch抓取geojson

nodeJs 报maximum call stack size exceeded js

NodeJs:- 92% 块资产优化 TerserPlugin 致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足