#javascript #json #stripe-payments
#javascript #json #stripe-платежи
Вопрос:
Я извлекаю данные из Stripe API из тестового счета. Я пытаюсь сузить круг, чтобы извлечь определенную пару значений ключа, используя точечную нотацию, но у меня возникают проблемы с извлечением данных из определенного значения ключа, поскольку оно кажется более глубоким, чем остальные данные (не уверен, что это правильная терминология).
Данные, из которых я пытаюсь извлечь данные, взяты из period: end:
и period: start:
примерно из строк 44-46.
Если я использую точечную нотацию в своем коде, это работает, когда пара ключ-значение находится в одной строке, например sheet.getRange(3,2).setValue([content.amount_due]);
. Но кажется, что «период: конец» и «период: начало» вложены глубже.
Я пытался сделать что-то вроде [content.lines.data.period.end]
, но это не сработало. Он возвращает эту ошибку: TypeError: Cannot read property "end" from undefined.
Вот полные данные, извлеченные из API (примечание: "xxxxxxxxxxxxxxxx"
представляет данные, которые были скрыты):
""id"": ""in_xxxxxxxxxxxxxxxx"",
""object"": ""invoice"",
""amount_due"": 800,
""amount_paid"": 800,
""amount_remaining"": 0,
""application_fee"": null,
""attempt_count"": 1,
""attempted"": true,
""auto_advance"": false,
""billing"": ""charge_automatically"",
""billing_reason"": ""subscription_cycle"",
""charge"": ""ch_xxxxxxxxxxxxxxxx"",
""closed"": true,
""created"": 1552077120,
""currency"": ""usd"",
""custom_fields"": null,
""customer"": ""cus_xxxxxxxxxxxxxxxx"",
""date"": 1552077120,
""default_payment_method"": null,
""default_source"": null,
""description"": null,
""discount"": null,
""due_date"": null,
""ending_balance"": 0,
""finalized_at"": 1552080770,
""footer"": null,
""forgiven"": false,
""hosted_invoice_url"": ""https://pay.stripe.com/invoice/invst_xxxxxxxxxxxxxxxx"",
""invoice_pdf"": ""https://pay.stripe.com/invoice/invst_xxxxxxxxxxxxxxxx/pdf"",
""lines"": {
""object"": ""list"",
""data"": [
{
""id"": ""sub_xxxxxxxxxxxxxxxx"",
""object"": ""line_item"",
""amount"": 800,
""currency"": ""usd"",
""description"": null,
""discountable"": true,
""livemode"": false,
""metadata"": {
},
""period"": {
""end"": 1554755515,
""start"": 1552077115
},
""plan"": {
""id"": ""xxxxxxxxxxxxxxxx"",
""object"": ""plan"",
""active"": true,
""aggregate_usage"": null,
""amount"": 400,
""billing_scheme"": ""per_unit"",
""created"": 1407529859,
""currency"": ""usd"",
""interval"": ""month"",
""interval_count"": 1,
""livemode"": false,
""metadata"": {
},
""name"": ""sdf"",
""nickname"": null,
""product"": ""prod_xxxxxxxxxxxxxxxx"",
""statement_description"": null,
""statement_descriptor"": null,
""tiers"": null,
""tiers_mode"": null,
""transform_usage"": null,
""trial_period_days"": null,
""usage_type"": ""licensed""
},
""proration"": false,
""quantity"": 2,
""subscription"": null,
""subscription_item"": ""si_xxxxxxxxxxxxxxxx"",
""type"": ""subscription"",
""unique_line_item_id"": ""sli_xxxxxxxxxxxxxxx""
}
],
""has_more"": false,
""total_count"": 1,
""url"": ""/v1/invoices/in_xxxxxxxxxxxxxxxx/lines""
},
""livemode"": false,
""metadata"": {
},
""next_payment_attempt"": null,
""number"": ""77E3C02-0025"",
""paid"": true,
""payment"": ""ch_1xxxxxxxxxxxxxxxx"",
""payment_intent"": ""pi_xxxxxxxxxxxxxxxx"",
""period_end"": 1552077115,
""period_start"": 1549657915,
""receipt_number"": ""2258-2679"",
""starting_balance"": 0,
""statement_description"": null,
""statement_descriptor"": null,
""status"": ""paid"",
""status_transitions"": {
""finalized_at"": 1552080770,
""marked_uncollectible_at"": null,
""paid_at"": 1552080772,
""voided_at"": null
},
""subscription"": ""sub_xxxxxxxxxxxxxxxx"",
""subtotal"": 800,
""tax"": null,
""tax_percent"": null,
""total"": 800,
""webhooks_delivered_at"": 1552077123
}"```
[1]: https://stripe.com/docs/api/invoices/retrieve
Комментарии:
1. Справочная страница Stripe API на всякий случай.
Ответ №1:
данные — это массив, попробуйте content.lines.data[0].period.end
.