Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

CardConnect Create Profile

See more CardConnect Examples

Demonstrates how to create a profile.
A PUT call to the profile endpoint creates a new profile or adds a new account to an existing profile. ...

See https://developer.cardconnect.com/cardconnect-api?lang=json#create-update-profile-request

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  json: TJsonObject;
  url: string;
  resp: THttpResponse;
  jsonResp: TJsonObject;
  country: string;
  address: string;
  resptext: string;
  city: string;
  acctid: string;
  respcode: string;
  defaultacct: string;
  accttype: string;
  token: string;
  license: string;
  respproc: string;
  phone: string;
  profileid: string;
  name: string;
  auoptout: string;
  postal: string;
  expiry: string;
  region: string;
  ssnl4: string;
  respstat: string;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  http.BasicAuth := True;
  http.Login := 'API_USERNAME';
  http.Password := 'API_PASSWORD';

  //  Build and send the following JSON:

  //  {
  //    "region": "AK",
  //    "phone": "7778789999",
  //    "accttype": "VISA",
  //    "postal": "19090",
  //    "ssnl4": "3655",
  //    "expiry": "0214",
  //    "city": "ANYTOWN",
  //    "country": "US",
  //    "address": "123 MAIN STREET",
  //    "merchid": "496400000840",
  //    "name": "TOM JONES",
  //    "account": "4444333322221111",
  //    "license": "123451254",
  //  }

  json := TJsonObject.Create;
  json.UpdateString('region','AK');
  json.UpdateString('phone','7778789999');
  json.UpdateString('accttype','VISA');
  json.UpdateString('postal','19090');
  json.UpdateString('ssnl4','3655');
  json.UpdateString('expiry','0214');
  json.UpdateString('city','ANYTOWN');
  json.UpdateString('country','US');
  json.UpdateString('address','123 MAIN STREET');
  json.UpdateString('merchid','MERCHANT_ID');
  json.UpdateString('name','TOM JONES');
  json.UpdateString('account','4444333322221111');
  json.UpdateString('license','123451254');

  url := 'https://<site>.cardconnect.com:<port>/cardconnect/rest/profile';

  resp := THttpResponse.Create;
  success := http.HttpStr('PUT',url,json.Emit(),'utf-8','application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  //  A response status of 200 indicates potential success.  The JSON response body
  //  must be examined to determine if it was truly successful or an error.
  WriteLn('response status code = ' + resp.StatusCode);

  jsonResp := TJsonObject.Create;
  jsonResp.Load(resp.BodyStr);
  jsonResp.EmitCompact := False;

  WriteLn('response JSON:');
  WriteLn(jsonResp.Emit());

  //  A successful response looks like this:

  //  {
  //    "country": "US",
  //    "address": "123 MAIN STREET",
  //    "resptext": "Profile Saved",
  //    "city": "ANYTOWN",
  //    "acctid": "1",
  //    "respcode": "09",
  //    "defaultacct": "Y",
  //    "accttype": "VISA",
  //    "token": "9441149619831111",
  //    "license": "123451254",
  //    "respproc": "PPS",
  //    "phone": "7778789999",
  //    "profileid": "16392957457306633141",
  //    "name": "TOM JONES",
  //    "auoptout": "N",
  //    "postal": "19090",
  //    "expiry": "0214",
  //    "region": "AK",
  //    "ssnl4": "3655",
  //    "respstat": "A"
  //  }

  //  Use this online tool to generate parsing code from sample JSON: 
  //  Generate Parsing Code from JSON

  country := jsonResp.StringOf('country');
  address := jsonResp.StringOf('address');
  resptext := jsonResp.StringOf('resptext');
  city := jsonResp.StringOf('city');
  acctid := jsonResp.StringOf('acctid');
  respcode := jsonResp.StringOf('respcode');
  defaultacct := jsonResp.StringOf('defaultacct');
  accttype := jsonResp.StringOf('accttype');
  token := jsonResp.StringOf('token');
  license := jsonResp.StringOf('license');
  respproc := jsonResp.StringOf('respproc');
  phone := jsonResp.StringOf('phone');
  profileid := jsonResp.StringOf('profileid');
  name := jsonResp.StringOf('name');
  auoptout := jsonResp.StringOf('auoptout');
  postal := jsonResp.StringOf('postal');
  expiry := jsonResp.StringOf('expiry');
  region := jsonResp.StringOf('region');
  ssnl4 := jsonResp.StringOf('ssnl4');
  respstat := jsonResp.StringOf('respstat');


  http.Free;
  json.Free;
  resp.Free;
  jsonResp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.