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

时间:2015-02-27 20:43:24

标签: square-connect

我有一个脚本处理一些不再有效的退款付款,因为约。 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"
}

2 个答案:

答案 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);