Delphi ActiveX Requires Chilkat v11.0.0+
Delphi ActiveX
PayPal: Revise a draft invoice from its full billing record
See more PayPal Examples
PUT replaces the invoice. This example revises the quantity on the simple two-inspection draft to three. Rebuild the complete editable document from your billing record; omitted items, terms or recipients can be lost. Do not use this body for an unrelated invoice.
Chilkat Delphi ActiveX Downloads
var
success: Integer;
http: TChilkatHttp;
resp: TChilkatHttpResponse;
body: TChilkatJsonObject;
errorInfo: TChilkatJsonObject;
result: TChilkatJsonObject;
parsed: Integer;
begin
success := 0;
// See Unlock Chilkat before making requests.
// For the merchant's internal backoffice application. Load the sandbox token
// from the merchant's credential store. Keep it out of publicly distributed apps.
// See Get a PayPal access token.
http := TChilkatHttp.Create(Self);
http.AuthToken := 'SANDBOX_ACCESS_TOKEN';
resp := TChilkatHttpResponse.Create(Self);
// Use only the ID of the matching draft from the create example, while it is still a
// draft. Preserve all of your real draft fields, including any custom invoice number.
http.SetUrlVar('id','INVOICE_ID');
http.SetRequestHeader('Prefer','return=representation');
body := TChilkatJsonObject.Create(Self);
body.UpdateString('detail.currency_code','USD');
body.UpdateString('detail.payment_term.term_type','NET_30');
body.UpdateString('primary_recipients[0].billing_info.email_address','buyer@example.com');
body.UpdateString('items[0].name','Equipment inspection');
body.UpdateString('items[0].quantity','3');
body.UpdateString('items[0].unit_amount.currency_code','USD');
body.UpdateString('items[0].unit_amount.value','45.00');
success := http.HttpJson('PUT','https://api-m.sandbox.paypal.com/v2/invoicing/invoices/{$id}',body.ControlInterface,'application/json',resp.ControlInterface);
if (success <> 1) then
begin
Memo1.Lines.Add('No HTTP response: ' + http.LastErrorText);
Exit;
end;
if ((resp.StatusCode < 200) or (resp.StatusCode >= 300)) then
begin
errorInfo := TChilkatJsonObject.Create(Self);
errorInfo.Load(resp.BodyStr);
Memo1.Lines.Add('HTTP ' + IntToStr(resp.StatusCode) + ' ' + errorInfo.StringOf('name') + ' ' + errorInfo.StringOf('details[0].issue'));
Memo1.Lines.Add('PayPal debug ID: ' + errorInfo.StringOf('debug_id'));
Exit;
end;
result := TChilkatJsonObject.Create(Self);
parsed := result.Load(resp.BodyStr);
if (parsed <> 1) then
begin
Memo1.Lines.Add('Expected a JSON response; HTTP ' + IntToStr(resp.StatusCode));
Exit;
end;
Memo1.Lines.Add('ID: ' + result.StringOf('id'));
Memo1.Lines.Add('Status: ' + result.StringOf('status'));
Memo1.Lines.Add('New total: ' + result.StringOf('amount.value'));
Memo1.Lines.Add('Currency: ' + result.StringOf('amount.currency_code'));