在 Google Apps Script 中使用 Stripe API 订阅失败
2018-10-04
309
我正在尝试使用
Google Apps Script
和
Stripe
制作一个插件,用户可以按年订阅某个商品。每次我从 Stripe 结账处购买订阅时,都会收到这样的错误,
{
"error": {
"code": "parameter_unknown",
"doc_url": "https://stripe.com/docs/error-codes/parameter-unknown",
"message": "Received unknown parameter: @45b5a607",
"param": "@45b5a607",
"type": "invalid_request_error"
}
}
当我在 Stripe 仪表板中检查日志时,我得到了这样的 POST 正文,
{
"items": "[Ljava.lang.Object",
"@45b5a607": null,
"customer": "cus_Dix0eSYM5qP0kx"
}
这是我在 Google Apps Script 中的代码,
var headers = {
"Authorization" : "Basic " + Utilities.base64Encode(USERNAME + ':' + PASSWORD)
};
var customer = {
'email': customerEmail,
'source': token
};
var optCreate = {
'method' : 'post',
"headers" : headers,
'contentType': 'application/x-www-form-urlencoded',
'payload' : customer,
'muteHttpExceptions' : true
};
var createCustomer = UrlFetchApp.fetch(urlCreate, optCreate);
var respCreate = JSON.parse(createCustomer.getContentText());
var customerId = respCreate.id;
if (customerId == null) { return "Error"; }
var data = {
"customer" : customerId,
"items" : [
{
"plan" : "plan_Diuw7CdAGcSrhm"
}
]
};
var options = {
'method' : 'post',
"headers" : headers,
'contentType': 'application/x-www-form-urlencoded',
'payload' : data,
'muteHttpExceptions' : true
};
var response = UrlFetchApp.fetch(url, options);
var resp = JSON.parse(response.getContentText());
Logger.log(resp);
我想我的
data
JSON 对象中一定做错了什么。
items
字段无法正常工作,这就是 POST 正文奇怪的原因。这里正确的方法是什么?
2个回答
您需要将有效载荷字符串化。
var options = {
'method' : 'post',
"headers" : headers,
'contentType': 'application/x-www-form-urlencoded',
'payload' : JSON.stringify(data),
'muteHttpExceptions' : true
};
Casper
2018-10-04