API GoCardless с использованием Classic ASP - PullRequest
0 голосов
/ 06 ноября 2018

Я создаю следующий запрос в vbscript и отправляю в изолированную программную среду без gocard:

url="https://api-sandbox.gocardless.com/"
typ="GET"
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
xml.Open typ, url, False
xml.setRequestHeader "Authorization", "Bearer " & GCAccessToken
xml.SetRequestHeader "GoCardless-Version", "2015-07-06"
xml.SetRequestHeader "Accept","application/json"
xml.SetRequestHeader "Content-Type", "application/json"
xml.Send
GetGC = xml.responseText
Set xml = Nothing

Ответ, который я всегда получаю, несмотря на любые хитрости, которые я делаю:

{"error":{"message":"not found","errors":[{"reason":"not_found","message":"not found"}],"documentation_url":"https://developer.gocardless.com/api-reference#not_found","type":"invalid_api_usage","request_id":"0AA4000DECCD_AC121CEB1F90_5BE18701_19AD0009","code":404}}

Любая помощь будет оценена. Успешно сделали подобное для Stripe, но теперь нужно использовать GC.

1 Ответ

0 голосов
/ 07 ноября 2018

Если вы прочитали ответ от API

{
  "error": {
    "message": "not found",
    "errors": [{
        "reason": "not_found",
        "message": "not found"
      }
    ],
    "documentation_url": "https://developer.gocardless.com/api-reference#not_found",
    "type": "invalid_api_usage",
    "request_id": "0AA4000DECCD_AC121CEB1F90_5BE18701_19AD0009",
    "code": 404
  }
}

Похоже, ошибка представляет собой код состояния HTTP (как это происходит с API-интерфейсами RESTful) - 404 Not Found при просмотре ссылки на документацию, предоставленной в ответе;

404

Не найдено. Запрашиваемый ресурс не найден или аутентифицированный пользователь не может получить доступ к ресурсу. Тело ответа объяснит, какой ресурс не был найден.

Так что проблема может быть;

  1. Вы не смогли аутентифицироваться с использованием токена в предоставленном коде.
  2. Вы прошли проверку подлинности, но у вас нет разрешения на доступ к ресурсу.
  3. Ресурс, который вы ищете, не существует.

В данном конкретном случае я бы предположил, что это потому, что ресурс не существует, поскольку код не указывает ресурс, только базовый URL-адрес API, который не будет представлять собой конечную точку API, с которой вы можете взаимодействовать.

Глядя на документацию становится ясно, что вам нужно указать действительную конечную точку в URL-адресе, на момент написания этой статьи существует 15 основных конечных точек, с которыми можно взаимодействовать, а также 2 вспомогательных конечных точки.

Например, создать платеж запрос / ответ будет выглядеть так:

POST https://api.gocardless.com/payments HTTP/1.1
{
  "payments": {
    "amount": 100,
    "currency": "GBP",
    "charge_date": "2014-05-19",
    "reference": "WINEBOX001",
    "metadata": {
      "order_dispatch_date": "2014-05-22"
    },
    "links": {
      "mandate": "MD123"
    }
  }
}

HTTP/1.1 201 (Created)
Location: /payments/PM123
{
  "payments": {
    "id": "PM123",
    "created_at": "2014-05-08T17:01:06.000Z",
    "charge_date": "2014-05-21",
    "amount": 100,
    "description": null,
    "currency": "GBP",
    "status": "pending_submission",
    "reference": "WINEBOX001",
    "metadata": {
      "order_dispatch_date": "2014-05-22"
    },
    "amount_refunded": 0,
    "links": {
      "mandate": "MD123",
      "creditor": "CR123"
    }
  }
}

К сожалению, пример кода, приведенный в вопросе, на самом деле ничего не делает, поэтому сложно предположить, что вы пытаетесь сделать. В заключение я бы предложил повторно посетить документацию по API и просмотреть предоставленные образцы.

...