Ошибка 401 «усеченный сервер» при попытке добавить ключ API Stripe для UrlFetchApp в скриптах Google Apps - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь получить счет-фактуру в Google Sheets через Stripe API, и я использую скрипты Google Apps для запуска своего кода.Вот код, который у меня есть:

function callNumbers() 
  {
    var url = "https://api.stripe.com/v1/invoices/[unique_id]";
    var apiKey = "[api-key]";

    var response = UrlFetchApp.fetch(url, {"headers":{"[api-key]":apiKey}}); 
    var content = response.getContentText(); 
    Logger.log(response); 
    Logger.log(content);
 }

URL-адрес накладной Stripe имеет уникальный идентификатор в указанном выше URL-адресе после / invoices /, представляющий конкретный проверочный счет-фактуру, который я хочу получить.

I 'используя тестовый ключ API Stripe , который начинается с этого перед уникальным кодом API-ключа: sk_test_

Ссылка на странице Stripe выглядит следующим образом:

curl https://api.stripe.com/v1/invoices/[unique_id] \
  -u sk_test_[api-key]:

Полученное сообщение об ошибке выглядит следующим образом:

Request failed for https://api.stripe.com/v1/invoices/[unique_id] returned code 401. Truncated server response: { "error": { "message": "You did not provide an API key. You need to provide your API key in the Authorization header, using Bearer auth (e.g... (use muteHttpExceptions option to examine full response) (line 13, file "Code")

Я не уверен, что не так с моим кодом.Я предполагаю, что это что-то с разделом "headers", но я не знаю достаточно об API, чтобы знать наверняка.Я использую этот тестовый проект, чтобы узнать больше об API.

1 Ответ

1 голос
/ 13 апреля 2019

Попробуйте что-то вроде этого:

function getInvoiceObj(invoiceURL) {
  var content,options,response ,secret,url;

  secret = 'sk_test_ABC123';//sk_live_ABC123'

  url = "https://api.stripe.com/v1/invoices/" + invoiceURL;

  options = {
    "method" : "GET",
    "headers": {
      "Authorization": "Bearer " + secret
    },
    "muteHttpExceptions":true
  };

  response = UrlFetchApp.fetch(url, options);

  content = response.getContentText(); 
  Logger.log(response); 
  Logger.log(content);
}
...