Attempts payment on an invoice out of the normal collection schedule.
curl https://api.stripe.com/v1/invoices?limit=3 \
-u STRIPE_SECRET_KEY: \
-G
var
rest: HCkRest;
success: Boolean;
bTls: Boolean;
port: Integer;
bAutoReconnect: Boolean;
sbResponseBody: HCkStringBuilder;
jsonResponse: HCkJsonObject;
object: PWideChar;
url: PWideChar;
has_more: Boolean;
i: Integer;
count_i: Integer;
id: PWideChar;
amount_due: Integer;
application_fee: Boolean;
attempt_count: Integer;
attempted: Boolean;
billing: PWideChar;
charge: Boolean;
closed: Boolean;
currency: PWideChar;
customer: PWideChar;
date: Integer;
description: Boolean;
discount: Boolean;
due_date: Boolean;
ending_balance: Boolean;
forgiven: Boolean;
linesHas_more: Boolean;
linesObject: PWideChar;
linesUrl: PWideChar;
livemode: Boolean;
next_payment_attempt: Integer;
number: PWideChar;
paid: Boolean;
period_end: Integer;
period_start: Integer;
receipt_number: Boolean;
starting_balance: Integer;
statement_descriptor: Boolean;
subscription: Boolean;
subtotal: Integer;
tax: Boolean;
tax_percent: Boolean;
total: Integer;
webhooks_delivered_at: Boolean;
j: Integer;
count_j: Integer;
amount: Integer;
description_str: PWideChar;
discountable: Boolean;
periodStart: Integer;
periodEnd: Integer;
planId: PWideChar;
planObject: PWideChar;
planAmount: Integer;
planCreated: Integer;
planCurrency: PWideChar;
planInterval: PWideChar;
planInterval_count: Integer;
planLivemode: Boolean;
planName: PWideChar;
planStatement_descriptor: Boolean;
planTrial_period_days: Boolean;
proration: Boolean;
quantity: Integer;
subscription_item: PWideChar;
type: PWideChar;
begin
rest := CkRest_Create();
// URL: https://api.stripe.com/v1/invoices?limit=3
bTls := True;
port := 443;
bAutoReconnect := True;
success := CkRest_Connect(rest,'api.stripe.com',port,bTls,bAutoReconnect);
if (success <> True) then
begin
Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(CkRest_getConnectFailReason(rest)));
Memo1.Lines.Add(CkRest__lastErrorText(rest));
Exit;
end;
CkRest_SetAuthBasic(rest,'STRIPE_SECRET_KEY','');
sbResponseBody := CkStringBuilder_Create();
success := CkRest_FullRequestNoBodySb(rest,'GET','/v1/invoices?limit=3',sbResponseBody);
if (success <> True) then
begin
Memo1.Lines.Add(CkRest__lastErrorText(rest));
Exit;
end;
jsonResponse := CkJsonObject_Create();
CkJsonObject_LoadSb(jsonResponse,sbResponseBody);
object := CkJsonObject__stringOf(jsonResponse,'object');
url := CkJsonObject__stringOf(jsonResponse,'url');
has_more := CkJsonObject_BoolOf(jsonResponse,'has_more');
i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'data');
while i < count_i do
begin
CkJsonObject_putI(jsonResponse,i);
id := CkJsonObject__stringOf(jsonResponse,'data[i].id');
object := CkJsonObject__stringOf(jsonResponse,'data[i].object');
amount_due := CkJsonObject_IntOf(jsonResponse,'data[i].amount_due');
application_fee := CkJsonObject_IsNullOf(jsonResponse,'data[i].application_fee');
attempt_count := CkJsonObject_IntOf(jsonResponse,'data[i].attempt_count');
attempted := CkJsonObject_BoolOf(jsonResponse,'data[i].attempted');
billing := CkJsonObject__stringOf(jsonResponse,'data[i].billing');
charge := CkJsonObject_IsNullOf(jsonResponse,'data[i].charge');
closed := CkJsonObject_BoolOf(jsonResponse,'data[i].closed');
currency := CkJsonObject__stringOf(jsonResponse,'data[i].currency');
customer := CkJsonObject__stringOf(jsonResponse,'data[i].customer');
date := CkJsonObject_IntOf(jsonResponse,'data[i].date');
description := CkJsonObject_IsNullOf(jsonResponse,'data[i].description');
discount := CkJsonObject_IsNullOf(jsonResponse,'data[i].discount');
due_date := CkJsonObject_IsNullOf(jsonResponse,'data[i].due_date');
ending_balance := CkJsonObject_IsNullOf(jsonResponse,'data[i].ending_balance');
forgiven := CkJsonObject_BoolOf(jsonResponse,'data[i].forgiven');
linesHas_more := CkJsonObject_BoolOf(jsonResponse,'data[i].lines.has_more');
linesObject := CkJsonObject__stringOf(jsonResponse,'data[i].lines.object');
linesUrl := CkJsonObject__stringOf(jsonResponse,'data[i].lines.url');
livemode := CkJsonObject_BoolOf(jsonResponse,'data[i].livemode');
next_payment_attempt := CkJsonObject_IntOf(jsonResponse,'data[i].next_payment_attempt');
number := CkJsonObject__stringOf(jsonResponse,'data[i].number');
paid := CkJsonObject_BoolOf(jsonResponse,'data[i].paid');
period_end := CkJsonObject_IntOf(jsonResponse,'data[i].period_end');
period_start := CkJsonObject_IntOf(jsonResponse,'data[i].period_start');
receipt_number := CkJsonObject_IsNullOf(jsonResponse,'data[i].receipt_number');
starting_balance := CkJsonObject_IntOf(jsonResponse,'data[i].starting_balance');
statement_descriptor := CkJsonObject_IsNullOf(jsonResponse,'data[i].statement_descriptor');
subscription := CkJsonObject_IsNullOf(jsonResponse,'data[i].subscription');
subtotal := CkJsonObject_IntOf(jsonResponse,'data[i].subtotal');
tax := CkJsonObject_IsNullOf(jsonResponse,'data[i].tax');
tax_percent := CkJsonObject_IsNullOf(jsonResponse,'data[i].tax_percent');
total := CkJsonObject_IntOf(jsonResponse,'data[i].total');
webhooks_delivered_at := CkJsonObject_IsNullOf(jsonResponse,'data[i].webhooks_delivered_at');
j := 0;
count_j := CkJsonObject_SizeOfArray(jsonResponse,'data[i].lines.data');
while j < count_j do
begin
CkJsonObject_putJ(jsonResponse,j);
id := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].id');
object := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].object');
amount := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].amount');
currency := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].currency');
description_str := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].description');
discountable := CkJsonObject_BoolOf(jsonResponse,'data[i].lines.data[j].discountable');
livemode := CkJsonObject_BoolOf(jsonResponse,'data[i].lines.data[j].livemode');
periodStart := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].period.start');
periodEnd := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].period.end');
planId := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].plan.id');
planObject := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].plan.object');
planAmount := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].plan.amount');
planCreated := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].plan.created');
planCurrency := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].plan.currency');
planInterval := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].plan.interval');
planInterval_count := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].plan.interval_count');
planLivemode := CkJsonObject_BoolOf(jsonResponse,'data[i].lines.data[j].plan.livemode');
planName := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].plan.name');
planStatement_descriptor := CkJsonObject_IsNullOf(jsonResponse,'data[i].lines.data[j].plan.statement_descriptor');
planTrial_period_days := CkJsonObject_IsNullOf(jsonResponse,'data[i].lines.data[j].plan.trial_period_days');
proration := CkJsonObject_BoolOf(jsonResponse,'data[i].lines.data[j].proration');
quantity := CkJsonObject_IntOf(jsonResponse,'data[i].lines.data[j].quantity');
subscription := CkJsonObject_IsNullOf(jsonResponse,'data[i].lines.data[j].subscription');
subscription_item := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].subscription_item');
type := CkJsonObject__stringOf(jsonResponse,'data[i].lines.data[j].type');
j := j + 1;
end;
i := i + 1;
end;
CkRest_Dispose(rest);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jsonResponse);
{
"object": "list",
"url": "/v1/invoices",
"has_more": false,
"data": [
{
"id": "in_1BnETLGswQrCoh0X6M67Qy9c",
"object": "invoice",
"amount_due": 0,
"application_fee": null,
"attempt_count": 0,
"attempted": false,
"billing": "charge_automatically",
"charge": null,
"closed": false,
"currency": "usd",
"customer": "cus_CBbggkUyLoz3pe",
"date": 1516662783,
"description": null,
"discount": null,
"due_date": null,
"ending_balance": null,
"forgiven": false,
"lines": {
"data": [
{
"id": "sub_CBbgC3EaFZqN3Q",
"object": "line_item",
"amount": 999,
"currency": "usd",
"description": "1x Silver Express (at $9.99)",
"discountable": true,
"livemode": true,
"metadata": {},
"period": {
"start": 1521760383,
"end": 1524438783
},
"plan": {
"id": "gold",
"object": "plan",
"amount": 2000,
"created": 1516662783,
"currency": "usd",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {},
"name": "T-shirt",
"statement_descriptor": null,
"trial_period_days": null
},
"proration": false,
"quantity": 1,
"subscription": null,
"subscription_item": "si_CBbgZxCVF3Ha7P",
"type": "subscription"
}
],
"has_more": false,
"object": "list",
"url": "/v1/invoices/in_1BnETLGswQrCoh0X6M67Qy9c/lines"
},
"livemode": false,
"metadata": {},
"next_payment_attempt": 1516666383,
"number": "330a34b8d5-0001",
"paid": false,
"period_end": 1516662783,
"period_start": 1516662783,
"receipt_number": null,
"starting_balance": 0,
"statement_descriptor": null,
"subscription": null,
"subtotal": 0,
"tax": null,
"tax_percent": null,
"total": 0,
"webhooks_delivered_at": null
}
]
}