Creates a customer invoice object.
curl https://api.stripe.com/v1/invoices \
-u STRIPE_SECRET_KEY: \
-d customer=cus_CBbg9PmQ9sLbmo \
-X POST
var
rest: TChilkatRest;
success: Integer;
bTls: Integer;
port: Integer;
bAutoReconnect: Integer;
strResponseBody: WideString;
jsonResponse: TChilkatJsonObject;
id: WideString;
object: WideString;
amount_due: Integer;
application_fee: Integer;
attempt_count: Integer;
attempted: Integer;
billing: WideString;
charge: Integer;
closed: Integer;
currency: WideString;
customer: WideString;
date: Integer;
description: Integer;
discount: Integer;
due_date: Integer;
ending_balance: Integer;
forgiven: Integer;
linesHas_more: Integer;
linesObject: WideString;
linesUrl: WideString;
livemode: Integer;
next_payment_attempt: Integer;
number: WideString;
paid: Integer;
period_end: Integer;
period_start: Integer;
receipt_number: Integer;
starting_balance: Integer;
statement_descriptor: Integer;
subscription: Integer;
subtotal: Integer;
tax: Integer;
tax_percent: Integer;
total: Integer;
webhooks_delivered_at: Integer;
i: Integer;
count_i: Integer;
amount: Integer;
description_str: WideString;
discountable: Integer;
periodStart: Integer;
periodEnd: Integer;
plan: Integer;
proration: Integer;
quantity: Integer;
type: WideString;
begin
rest := TChilkatRest.Create(Self);
// URL: https://api.stripe.com/v1/invoices
bTls := 1;
port := 443;
bAutoReconnect := 1;
success := rest.Connect('api.stripe.com',port,bTls,bAutoReconnect);
if (success <> 1) then
begin
Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
Memo1.Lines.Add(rest.LastErrorText);
Exit;
end;
rest.SetAuthBasic('STRIPE_SECRET_KEY','');
rest.AddQueryParam('customer','cus_CBbg9PmQ9sLbmo');
strResponseBody := rest.FullRequestFormUrlEncoded('POST','/v1/invoices');
if (rest.LastMethodSuccess <> 1) then
begin
Memo1.Lines.Add(rest.LastErrorText);
Exit;
end;
jsonResponse := TChilkatJsonObject.Create(Self);
jsonResponse.Load(strResponseBody);
id := jsonResponse.StringOf('id');
object := jsonResponse.StringOf('object');
amount_due := jsonResponse.IntOf('amount_due');
application_fee := jsonResponse.IsNullOf('application_fee');
attempt_count := jsonResponse.IntOf('attempt_count');
attempted := jsonResponse.BoolOf('attempted');
billing := jsonResponse.StringOf('billing');
charge := jsonResponse.IsNullOf('charge');
closed := jsonResponse.BoolOf('closed');
currency := jsonResponse.StringOf('currency');
customer := jsonResponse.StringOf('customer');
date := jsonResponse.IntOf('date');
description := jsonResponse.IsNullOf('description');
discount := jsonResponse.IsNullOf('discount');
due_date := jsonResponse.IsNullOf('due_date');
ending_balance := jsonResponse.IsNullOf('ending_balance');
forgiven := jsonResponse.BoolOf('forgiven');
linesHas_more := jsonResponse.BoolOf('lines.has_more');
linesObject := jsonResponse.StringOf('lines.object');
linesUrl := jsonResponse.StringOf('lines.url');
livemode := jsonResponse.BoolOf('livemode');
next_payment_attempt := jsonResponse.IntOf('next_payment_attempt');
number := jsonResponse.StringOf('number');
paid := jsonResponse.BoolOf('paid');
period_end := jsonResponse.IntOf('period_end');
period_start := jsonResponse.IntOf('period_start');
receipt_number := jsonResponse.IsNullOf('receipt_number');
starting_balance := jsonResponse.IntOf('starting_balance');
statement_descriptor := jsonResponse.IsNullOf('statement_descriptor');
subscription := jsonResponse.IsNullOf('subscription');
subtotal := jsonResponse.IntOf('subtotal');
tax := jsonResponse.IsNullOf('tax');
tax_percent := jsonResponse.IsNullOf('tax_percent');
total := jsonResponse.IntOf('total');
webhooks_delivered_at := jsonResponse.IsNullOf('webhooks_delivered_at');
i := 0;
count_i := jsonResponse.SizeOfArray('lines.data');
while i < count_i do
begin
jsonResponse.I := i;
id := jsonResponse.StringOf('lines.data[i].id');
object := jsonResponse.StringOf('lines.data[i].object');
amount := jsonResponse.IntOf('lines.data[i].amount');
currency := jsonResponse.StringOf('lines.data[i].currency');
description_str := jsonResponse.StringOf('lines.data[i].description');
discountable := jsonResponse.BoolOf('lines.data[i].discountable');
livemode := jsonResponse.BoolOf('lines.data[i].livemode');
periodStart := jsonResponse.IntOf('lines.data[i].period.start');
periodEnd := jsonResponse.IntOf('lines.data[i].period.end');
plan := jsonResponse.IsNullOf('lines.data[i].plan');
proration := jsonResponse.BoolOf('lines.data[i].proration');
quantity := jsonResponse.IsNullOf('lines.data[i].quantity');
subscription := jsonResponse.IsNullOf('lines.data[i].subscription');
type := jsonResponse.StringOf('lines.data[i].type');
i := i + 1;
end;
{
"id": "in_1BnETLGswQrCoh0XR7p1RCtV",
"object": "invoice",
"amount_due": 0,
"application_fee": null,
"attempt_count": 0,
"attempted": false,
"billing": "charge_automatically",
"charge": null,
"closed": false,
"currency": "usd",
"customer": "cus_CBbg9PmQ9sLbmo",
"date": 1516662783,
"description": null,
"discount": null,
"due_date": null,
"ending_balance": null,
"forgiven": false,
"lines": {
"data": [
{
"id": "ii_1BnETLGswQrCoh0XsAcSzoLf",
"object": "line_item",
"amount": 0,
"currency": "usd",
"description": "My First Invoice Item (created for API docs)",
"discountable": true,
"livemode": false,
"metadata": {},
"period": {
"start": 1516662783,
"end": 1516662783
},
"plan": null,
"proration": false,
"quantity": null,
"subscription": null,
"type": "invoiceitem"
}
],
"has_more": false,
"object": "list",
"url": "/v1/invoices/in_1BnETLGswQrCoh0XR7p1RCtV/lines"
},
"livemode": false,
"metadata": {},
"next_payment_attempt": 1516666383,
"number": "36eba31eaa-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
}