Сбой подписки при использовании Stripe API в скрипте Google Apps - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь создать дополнение, используя Google Apps Script & Stripe, где пользователь может подписаться на элемент в качестве годовой подписки.Каждый раз, когда я покупаю подписку в Stripe checkout, я получаю такую ​​ошибку,

{
  "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 Dashboard, я получаю тело POST вот так:

{
  "items": "[Ljava.lang.Object",
  "@45b5a607": null,
  "customer": "cus_Dix0eSYM5qP0kx"
}

Thisмой код в скрипте Служб Google

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 ]

0 голосов
/ 04 октября 2018

Похоже, вы размещаете данные JSON, но API Stripe не принимает JSON - вам нужно использовать кодирование формы.т. е. ваш код должен установить data в следующем формате:

items[0][plan]=plan_CvVNfwZ4pYubYg&customer=cus_Diygqj4wAq6L9T

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

0 голосов
/ 04 октября 2018

Вам необходимо структурировать полезную нагрузку.

var options = {
  'method' : 'post',
  "headers" : headers,
  'contentType': 'application/x-www-form-urlencoded',
  'payload' : JSON.stringify(data),
  'muteHttpExceptions' : true
};
...