Ниже приведен пример вспомогательных функций, которые можно использовать для вызова API Stripe в Google Apps Script.
function getAuthHeader(){
var apiKey = "STRIPE_API_KEY__CONSIDER_TO_GENERATE_A_KEY_WITH_LIMITED_SCOPE";
var authHeader = 'Basic ' +Utilities.base64Encode(apiKey);
return {
headers: {Authorization: authHeader}
}
}
function goFetch(url){
var reponse;
try{
reponse = JSON.parse(UrlFetchApp.fetch(url,getAuthHeader()).getContentText());
}catch(err){
Logger.log(err);
}
return reponse;
}
Пример использования, списочные расходы:
function listCharges(lim){
var url = 'https://api.stripe.com/v1/charges?'+limit=lim;
return goFetch(url);
}
Logger.log(listCharges(10));
В вашем примере вы отправляете запрос с curl
.Из руководства по curl:
-d, --data (HTTP) Отправляет указанные данные в POST-запросе на HTTP-сервер так же, как браузер, когда пользователь заполнилHTML-форму и нажимает кнопку отправки.Это заставит curl передавать данные на сервер, используя application-type / x-www-form-urlencoded.Сравните с -F, --form.
В справочном руководстве UrlFetchApp
вы найдете следующее:
// Make a POST request with form data.
var resumeBlob = Utilities.newBlob('Hire me!', 'text/plain', 'resume.txt');
var formData = {
'name': 'Bob Smith',
'email': 'bob@example.com',
'resume': resumeBlob
};
// Because payload is a JavaScript object, it will be interpreted as
// as form data. (No need to specify contentType; it will automatically
// default to either 'application/x-www-form-urlencoded'
// or 'multipart/form-data')
var options = {
'method' : 'post',
'payload' : formData
};
UrlFetchApp.fetch('https://httpbin.org/post', options);
Итак, goPost
Функция будет выглядеть примерно так:
function goPost(url,data){
var options = {
'method' : 'post',
'payload' : data,
'headers': getAuthHeader()['headers']
};
var response;
try{
response = JSON.parse(UrlFetchApp.fetch(url,options).getContentText());
}catch(err){
Logger.log(err);
}
return response;
}
Пример использования:
var data = {
amount: 2000,
currency: 'usd',
source: 'tok_amex',
description: 'Charge for jenny.rosen@example.com'
}
var result = goPost('https://api.stripe.com/v1/charges',data);
Logger.log(result);