Delphi ActiveX Requires Chilkat v11.0.0+
Delphi ActiveX
PayPal: Reconcile a transaction ID in a reporting window
See more PayPal Examples
Supply the reporting transaction ID and a window containing the activity. Return all matches: transaction IDs are not necessarily unique in the report. Include non-balance-affecting records when reconciling an event.
Chilkat Delphi ActiveX Downloads
var
success: Integer;
http: TChilkatHttp;
resp: TChilkatHttpResponse;
dt: TCkDateTime;
query: TChilkatJsonObject;
page: Integer;
lastPage: Integer;
errorInfo: TChilkatJsonObject;
result: TChilkatJsonObject;
parsed: Integer;
i: Integer;
count: 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 the UTC window containing the transaction (at most 31 days per request).
dt := TCkDateTime.Create(Self);
dt.SetFromCurrentSystemTime();
query := TChilkatJsonObject.Create(Self);
query.UpdateString('end_date',dt.GetAsTimestamp(0));
dt.AddDays(-1);
query.UpdateString('start_date',dt.GetAsTimestamp(0));
query.UpdateString('fields','transaction_info');
query.UpdateInt('page_size',100);
query.UpdateString('transaction_id','REPORT_TRANSACTION_ID');
query.UpdateString('balance_affecting_records_only','N');
page := 1;
lastPage := 1;
while (page <= lastPage) do
begin
query.UpdateInt('page',page);
success := http.HttpParams('GET','https://api-m.sandbox.paypal.com/v1/reporting/transactions',query.ControlInterface,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;
i := 0;
count := result.SizeOfArray('transaction_details');
while (i < count) do
begin
result.I := i;
Memo1.Lines.Add(result.StringOf('transaction_details[i].transaction_info.transaction_id') + ' ' + result.StringOf('transaction_details[i].transaction_info.transaction_event_code')
+ ' ' + result.StringOf('transaction_details[i].transaction_info.transaction_status'));
Memo1.Lines.Add(' ' + result.StringOf('transaction_details[i].transaction_info.transaction_amount.value') + ' ' + result.StringOf('transaction_details[i].transaction_info.transaction_amount.currency_code'));
i := i + 1;
end;
lastPage := result.IntOf('total_pages');
page := page + 1;
end;