Ошибка 422 при попытке провести транзакцию

Я пытаюсь отправить транзакцию в квадрат, используя uni-rest с узлом. Я полагаю, что у меня есть все необходимые параметры, как бы то ни было, я получаю ошибку 422 из квадрата в описаниях, где говорится "требуется тело в теле". Ниже будут размещены примеры кода и ошибки.

Мой запрос:

var json = {
          "idempotency_key": "74ae1696-b1e3-4328-af6d-f1e04d947a13",
          "shipping_address": {
            "address_line_1": "123 Main St",
            "locality": "San Francisco",
            "administrative_district_level_1": "CA",
            "postal_code": "94114",
            "country": "US"
          },
          "billing_address": {
            "address_line_1": "500 Electric Ave",
            "address_line_2": "Suite 600",
            "administrative_district_level_1": "NY",
            "locality": "New York",
            "postal_code": "10003",
            "country": "US"
          },
          "amount_money": {
            "amount": 5000,
            "currency": "USD"
          },
          "card_nonce": "CBASEA-NYZAdKADzd5FeF6kh0ko",  //sandbox nonce
          "reference_id": "some optional reference id",
          "note": "some optional note",
          "delay_capture": false
        }

//console.log(json)
return unirest.post('http://connect.squareup.com/v2/locations/9T8KRNF0XX6BH/transactions')
    .headers({'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization' : 'Bearer '+access_token, 'rejectUnauthorized': false})
    .type('json')
    .send(json)
    .end(function (json) {
      if(json.error){
        console.log(json.error);
      }
      console.log(json.body)
      res.json(json)
    });

}

Моя ошибка:

{ Error: got 422 response
at /Users/.../node_modules/unirest/index.js:395:27
at process._tickCallback (internal/process/next_tick.js:98:9) status: 422 }
{ errors: [ { category: 'INVALID_REQUEST_ERROR',
   code: 'BAD_REQUEST',
   detail: 'body in body is required' } ] }

1 ответ

Решение

Вы делаете запрос через HTTP вместо HTTPS. API обслуживается только по HTTPS.

Я подозреваю, что причиной такого поведения является то, что сайт HTTP отправляет вам перенаправление на сайт HTTPS. Тем не менее, если вы явно не обрабатываете перенаправления POST, тело POST (и, возможно, другие необходимые заголовки) теряется, вызывая этот запутанный ответ.

Другие вопросы по тегам