Как получить счет Stripe из их API, как развернуть объект для получения сведений о кредитной карте и другой информации? - PullRequest
1 голос
/ 25 апреля 2019

У меня есть скрипт Служб Google, который обращается к API Stripe и извлекает данные из счета-фактуры Stripe , ссылка и добавляет эти данные в Google Sheet.

Stripe упомянул, что я могу расширить объект, чтобы получить больше информации расширение ссылки на объект .Но я довольно новичок в использовании API, поэтому я не уверен, как это сделать.

Я думаю, что причина, по которой я застрял, заключается в том, что я извлекаю данные счета из URL (т. Е. https://api.stripe.com/v1/invoices/xxxxxxxxxxxxxxxxxxxxxxxxxx).. Я не уверен, как изменить URL, чтобы расширить объект (илигде я должен сделать это в приведенном ниже коде.)

Например, я хочу расширить объект "Сбор", чтобы включить в него более подробную информацию о платеже. Данные, которые я хотел бы получить от объекта сбора, будуттип карты (например, Visa), срок действия, последние четыре цифры. Я бы, вероятно, сделал бы то же самое с объектом Customer, чтобы получить доступ к информации о клиенте относительно счета.

Вот скрипт Google Apps, который я используюпрямо сейчас:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Stripe')
    .addItem('Retrieve Invoice Data','getInvoiceObj')
    .addToUi();
}

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

    //API Key
    secret = "rk_live_xxxxxxxxxxxxxxxxxxxxxxxxxx";
    apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxx";

    //Stripe API invoice URL 
    url = "https://api.stripe.com/v1/invoices/xxxxxxxxxxxxxxxxxxxxxxxxxx";


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

    response = UrlFetchApp.fetch(url, options);

    //Push data to Sheet from invoice. **Writes over existing Sheet data**
    content = JSON.parse(response.getContentText());
    var sheet = SpreadsheetApp.getActiveSheet();

    //Retrieves currency type and adds to Sheet
    sheet.getRange(5,2).setValue([content.currency.toUpperCase()]);

    //Invoice amount due
    sheet.getRange(3,2).setValue([content.amount_due]);

    //Invoice date
    sheet.getRange(1,2).setValue([content.date]);

    //Invoice period begin
    sheet.getRange(6,2).setValue([content.lines.data[0].period.start]);

    //Invoice period end
    sheet.getRange(7,2).setValue([content.lines.data[0].period.end]);

    //Number of licenses
    sheet.getRange(10,2).setValue([content.lines.data[0].quantity]);

    //Invoice number
    sheet.getRange(13,2).setValue([content.number]);

1 Ответ

2 голосов
/ 26 апреля 2019

У вас есть две опции:

  1. Когда вы выбираете свой счет, Stripe API возвращает объект Invoice 1 , который, в свою очередь, имеет chargeполе, которое содержит идентификатор заряда.Затем вы можете позвонить по отдельному номеру v1/charges/{charge_id_goes_here}, чтобы получить информацию о платеже.

  2. Разверните charge при получении счета.Я не знаком с UrlFetchApp, но вы должны указать в своем запросе, что хотите расширить объект charge.Вы бы отправили запрос GET с объектом, который хотите раскрыть, набрав application/x-www-form-urlencoded.Посмотрите, как это делается в cURL, это может помочь вам: https://stripe.com/docs/api/expanding_objects?lang=curl

Отдельно, если вы вообще можете, я бы посоветовал использовать официальный stripe-node библиотека, которая значительно упростит взаимодействие с Stripe API

...