使用Square Connect为卡nonce充电时出现422错误

时间:2016-05-05 12:43:15

标签: asp.net asp.net-mvc square-connect

我是asp.net开发者。我使用Square Connect Api进行支付交易。以下是我的充值卡nonce代码。但我收到错误(不支持的媒体类型\“application / x-www-form-urlencoded \”,只允许[application / json])作为回应。解决方案表示赞赏。

Square Connect REquest :::

       RestSharp.RestClient Client = new RestSharp.RestClient("https://connect.squareup.com");
        RestSharp.RestRequest Request = new RestSharp.RestRequest("v2/locations/"+LocationId+"/transactions", RestSharp.Method.POST);
        Request.RequestFormat = RestSharp.DataFormat.Json;
        Request.AddHeader("Authorization", "Bearer " + access_token);
        Request.AddHeader("Accept", "application/json");
        Request.AddHeader("Content-Type", "application/json");

        Request.AddParameter("name", "test");
        Request.AddParameter("card_nonce", card_nonce);
        Request.AddParameter("amount_money", "{\"amount\":100,\"currency\":\"USD\"}");
        //Request.AddParameter("idempotency_key", Guid.NewGuid().ToString());

        RestSharp.IRestResponse response = Client.Execute(Request);
        System.Net.HttpStatusCode getresponse = response.StatusCode;

正方形反应: {“errors”:[{“category”:“INVALID_REQUEST_ERROR”,“code”:“BAD_REQUEST”,“detail”:“不支持的媒体类型\”application / x-www-form-urlencoded \“,只有[application / json]允许“}}}

1 个答案:

答案 0 :(得分:0)

(公平警告我以前没有使用过RestSharp的经验。)

在使用正文(即POST或PUT)创建请求时,您必须使用AddParameter方法设置请求的内容类型,而不是使用{{1方法。

正如this answer所示,当您的请求有正文时,您只需拨打AddHeader一次:

AddParameter

第一个参数指定内容类型,第二个参数是要POST的整个 JSON字符串,第三个参数表示JSON字符串应该用作请求正文。

这意味着在调用此方法之前,您需要构造要POST的JSON字符串。