我有一个脚本处理一些不再有效的退款付款,因为约。 2月10日。服务器响应Content-Type不受支持...即使我的标题Content-Type看起来实际上是正确的
相同的代码在该日期之前工作,这使我相信服务器端的某些内容已被更改,但我最近没有注意到square-connect API changelog中的任何内容可以解释此问题。
任何帮助将不胜感激:) 感谢
请参阅下面的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"
}
答案 0 :(得分:0)
由于您使用的是Google App Script,因此您必须使用特殊contentType
参数(docs here)设置Content-Type标头。这样,Google Apps脚本就知道将有效负载序列化为JSON而不是多部分表单数据。如果您只是将其指定为标题,则Google会覆盖它。
答案 1 :(得分:0)
非常感谢您的评论。它已经解决了!
我已经在params中添加了contentType,但它没有奏效但我开始收到一个新的错误,说“坏json对象'”。 Si,我只是搜索了那个,发现了'有效载荷的实际编码。对象需要" stringify"。请参阅user1021710的回答:https://stackoverflow.com/a/18851043/4615977("带有JSON Payload和#34的Google Apps脚本UrlFetchApp;)
所以在这种情况下,contentType也是必要的,然后编码有效载荷。谷歌明显在2月中旬改变了他们自己的API,因为代码是相同的并且有效。
谢谢大家!!!
使用谷歌应用脚本示例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);