Javascript curl如何映射到Google应用程序脚本URLFetchApp
我希望在Google应用程序脚本中实现Stripe,该脚本附带一个URLFetch功能,用于与第三方通信。然而,我对Stripe使用的curl格式如何映射到URLFetch感到困惑 下面是他们文档中的条带调用示例:Javascript curl如何映射到Google应用程序脚本URLFetchApp,javascript,google-apps-script,stripe-payments,Javascript,Google Apps Script,Stripe Payments,我希望在Google应用程序脚本中实现Stripe,该脚本附带一个URLFetch功能,用于与第三方通信。然而,我对Stripe使用的curl格式如何映射到URLFetch感到困惑 下面是他们文档中的条带调用示例: curl https://api.stripe.com/v1/charges \ -u testtoken123: \ -H "Idempotency-Key: testkey" \ -d amount=2000 \ -d currency=usd \ -d description=
curl https://api.stripe.com/v1/charges \
-u testtoken123: \
-H "Idempotency-Key: testkey" \
-d amount=2000 \
-d currency=usd \
-d description="Charge for jenny.rosen@example.com" \
-d source=tok_mastercard
URLFetchApp文档如下所示:
curl调用中的标志是否直接映射到URLFetch中的参数?下面是一个帮助函数示例,可用于在Google Apps脚本中调用条带API
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
发出post请求。从curl手册:
-d、 --数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按下submit键时浏览器所做的那样
按钮这将导致curl使用内容类型application/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);
我能问一下你的问题吗?1.你确认你的卷发样本是否正常吗?2.你能提供你当前的脚本吗?我认为这样的信息会帮助用户想到您的解决方案。大多数属性都会转到
UrlFetchApp.fetch
中的选项
参数:您会将-u
作为授权头
,-H
作为正常的头对,将-d作为有效载荷
。