POST REFUND 自 2 月 ~10 日以来返回错误 400

POST REFUND returned error 400 since Feb ~10th

我有一个处理一些退款付款的脚本,大约从2 月 10 日。服务器响应 Content-Type 不受支持...即使我的 header Content-Type 看起来确实正确

相同的代码在那个日期之前工作,这让我相信服务器端发生了一些变化,但我最近在 square-connect API 更新日志中没有注意到任何可以解释这个问题的内容。

任何帮助将不胜感激:) 谢谢

见下文JSON 请求和响应。

{"method":"POST",
  "headers":
    {"Authorization":"Bearer [mypersonalid]",
     "Accept":"application/json",
     "Content-Type":"application/json"},
     "payload":
       {"payment_id":"[paymentid]",
        "type":"FULL",
        "reason":"reason"
       }
    }"
}


{"type":"bad_request",
 "message":"The Content-Type of this request is not supported. 
            Supported     type(s): application/json"
}

由于您使用的是 Google 应用程序脚本,看来您必须使用特殊的 contentType 参数(docs here).这样,Google Apps 脚本就知道将负载序列化为 JSON 而不是多部分表单数据。如果您只是将其指定为 header,Google 将覆盖它。

非常感谢您的意见。解决了!

我已经在参数中添加了 contentType,但它没有用,但我开始收到一个新的错误 'bad json object'。 Si,我刚刚搜索了一下,发现 'payload' 对象的实际编码需要是 "stringify"。请参阅 user1021710 的回答: ("Google Apps Script UrlFetchApp with JSON Payload")

所以在这种情况下,contentType 是必要的,然后对有效负载进行编码。 Google 显然在 2 月中旬左右更改了他们自己的 API,因为代码是相同的并且有效。

谢谢大家!!!

使用 google 应用程序脚本 POST 退款请求的示例基本代码:

var headers = {
  "Authorization" : autorization,
  "Accept": 'application/json',
  "Content-Type": "application/json",
};

var payload = {
   "payment_id" : paymentid,
   "type" : type,  
   "reason" : reason,
};

var params = {
  "contentType": "application/json",
  "headers" : headers,
  "method" : "post",
  "payload" : JSON.stringify(payload),
};

var url = "https://connect.squareup.com/v1/me/refunds";
paymentsFetch = UrlFetchApp.fetch(url, params);