Delphi ActiveX
Delphi ActiveX
Quickbooks Create a New Customer
See more QuickBooks Examples
Demonstrates how to create a new customer via the Quickbooks REST API.Chilkat Delphi ActiveX Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
jsonToken: TChilkatJsonObject;
rest: TChilkatRest;
bTls: Integer;
port: Integer;
bAutoReconnect: Integer;
sbAuth: TChilkatStringBuilder;
jsonReq: TChilkatJsonObject;
sbRequestBody: TChilkatStringBuilder;
sbResponseBody: TChilkatStringBuilder;
respStatusCode: Integer;
jsonResponse: TChilkatJsonObject;
CustomerDomain: WideString;
CustomerPrimaryEmailAddrAddress: WideString;
CustomerDisplayName: WideString;
CustomerCurrencyRefName: WideString;
CustomerCurrencyRefValue: WideString;
CustomerDefaultTaxCodeRefValue: WideString;
CustomerPreferredDeliveryMethod: WideString;
CustomerGivenName: WideString;
CustomerFullyQualifiedName: WideString;
CustomerBillWithParent: Integer;
CustomerTitle: WideString;
CustomerJob: Integer;
CustomerBalanceWithJobs: Integer;
CustomerPrimaryPhoneFreeFormNumber: WideString;
CustomerTaxable: Integer;
CustomerMetaDataCreateTime: WideString;
CustomerMetaDataLastUpdatedTime: WideString;
CustomerBillAddrCity: WideString;
CustomerBillAddrCountry: WideString;
CustomerBillAddrLine1: WideString;
CustomerBillAddrPostalCode: WideString;
CustomerBillAddrCountrySubDivisionCode: WideString;
CustomerBillAddrId: WideString;
CustomerMiddleName: WideString;
CustomerNotes: WideString;
CustomerActive: Integer;
CustomerBalance: Integer;
CustomerSyncToken: WideString;
CustomerSuffix: WideString;
CustomerCompanyName: WideString;
CustomerFamilyName: WideString;
CustomerPrintOnCheckName: WideString;
CustomerSparse: Integer;
CustomerId: WideString;
time: WideString;
begin
success := 0;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// First get our previously obtained OAuth2 access token.
jsonToken := TChilkatJsonObject.Create(Self);
success := jsonToken.LoadFile('qa_data/tokens/qb-access-token.json');
rest := TChilkatRest.Create(Self);
// Connect to the REST server.
bTls := 1;
port := 443;
bAutoReconnect := 1;
success := rest.Connect('sandbox-quickbooks.api.intuit.com',port,bTls,bAutoReconnect);
sbAuth := TChilkatStringBuilder.Create(Self);
sbAuth.Append('Bearer ');
sbAuth.Append(jsonToken.StringOf('access_token'));
rest.Authorization := sbAuth.GetAsString();
// --------------------------------------------------------------------------
// Note: The above code to setup the initial REST connection
// can be done once. After connecting, any number of REST calls can be made.
// If the connection is lost, the next REST method call will automatically
// reconnect if needed.
// --------------------------------------------------------------------------
// Create the following JSON:
// {
// "FullyQualifiedName": "King Groceries",
// "PrimaryEmailAddr": {
// "Address": "jdrew@myemail.com"
// },
// "DisplayName": "King's Groceries",
// "Suffix": "Jr",
// "Title": "Mr",
// "MiddleName": "B",
// "Notes": "Here are other details.",
// "FamilyName": "King",
// "PrimaryPhone": {
// "FreeFormNumber": "(555) 555-5555"
// },
// "CompanyName": "King Groceries",
// "BillAddr": {
// "CountrySubDivisionCode": "CA",
// "City": "Mountain View",
// "PostalCode": "94042",
// "Line1": "123 Main Street",
// "Country": "USA"
// },
// "GivenName": "James"
// }
//
// Use the this online tool to generate the code from sample JSON:
// Generate Code to Create JSON
jsonReq := TChilkatJsonObject.Create(Self);
jsonReq.UpdateString('FullyQualifiedName','King Groceries');
jsonReq.UpdateString('PrimaryEmailAddr.Address','jdrew@myemail.com');
jsonReq.UpdateString('DisplayName','King''s Groceries');
jsonReq.UpdateString('Suffix','Jr');
jsonReq.UpdateString('Title','Mr');
jsonReq.UpdateString('MiddleName','B');
jsonReq.UpdateString('Notes','Here are other details.');
jsonReq.UpdateString('FamilyName','King');
jsonReq.UpdateString('PrimaryPhone.FreeFormNumber','(555) 555-5555');
jsonReq.UpdateString('CompanyName','King Groceries');
jsonReq.UpdateString('BillAddr.CountrySubDivisionCode','CA');
jsonReq.UpdateString('BillAddr.City','Mountain View');
jsonReq.UpdateString('BillAddr.PostalCode','94042');
jsonReq.UpdateString('BillAddr.Line1','123 Main Street');
jsonReq.UpdateString('BillAddr.Country','USA');
jsonReq.UpdateString('GivenName','James');
sbRequestBody := TChilkatStringBuilder.Create(Self);
jsonReq.EmitSb(sbRequestBody.ControlInterface);
rest.AddHeader('Content-Type','application/json');
rest.AddHeader('Accept','application/json');
rest.AllowHeaderFolding := 0;
sbResponseBody := TChilkatStringBuilder.Create(Self);
success := rest.FullRequestSb('POST','/v3/company/<realmID>/customer',sbRequestBody.ControlInterface,sbResponseBody.ControlInterface);
if (success <> 1) then
begin
Memo1.Lines.Add(rest.LastErrorText);
Exit;
end;
respStatusCode := rest.ResponseStatusCode;
// Success is indicated by a 200 response status code.
Memo1.Lines.Add('response status code = ' + IntToStr(respStatusCode));
jsonResponse := TChilkatJsonObject.Create(Self);
jsonResponse.LoadSb(sbResponseBody.ControlInterface);
jsonResponse.EmitCompact := 0;
Memo1.Lines.Add(jsonResponse.Emit());
if (rest.ResponseStatusCode <> 200) then
begin
Memo1.Lines.Add('Failed.');
Exit;
end;
// Sample output...
// (See the parsing code below..)
//
// Use the this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// {
// "Customer": {
// "domain": "QBO",
// "PrimaryEmailAddr": {
// "Address": "jdrew@myemail.com"
// },
// "DisplayName": "King's Groceries",
// "CurrencyRef": {
// "name": "United States Dollar",
// "value": "USD"
// },
// "DefaultTaxCodeRef": {
// "value": "2"
// },
// "PreferredDeliveryMethod": "Print",
// "GivenName": "James",
// "FullyQualifiedName": "King's Groceries",
// "BillWithParent": false,
// "Title": "Mr",
// "Job": false,
// "BalanceWithJobs": 0,
// "PrimaryPhone": {
// "FreeFormNumber": "(555) 555-5555"
// },
// "Taxable": true,
// "MetaData": {
// "CreateTime": "2015-07-23T10:58:12-07:00",
// "LastUpdatedTime": "2015-07-23T10:58:12-07:00"
// },
// "BillAddr": {
// "City": "Mountain View",
// "Country": "USA",
// "Line1": "123 Main Street",
// "PostalCode": "94042",
// "CountrySubDivisionCode": "CA",
// "Id": "112"
// },
// "MiddleName": "B",
// "Notes": "Here are other details.",
// "Active": true,
// "Balance": 0,
// "SyncToken": "0",
// "Suffix": "Jr",
// "CompanyName": "King Groceries",
// "FamilyName": "King",
// "PrintOnCheckName": "King Groceries",
// "sparse": false,
// "Id": "67"
// },
// "time": "2015-07-23T10:58:12.099-07:00"
// }
//
CustomerDomain := jsonResponse.StringOf('Customer.domain');
CustomerPrimaryEmailAddrAddress := jsonResponse.StringOf('Customer.PrimaryEmailAddr.Address');
CustomerDisplayName := jsonResponse.StringOf('Customer.DisplayName');
CustomerCurrencyRefName := jsonResponse.StringOf('Customer.CurrencyRef.name');
CustomerCurrencyRefValue := jsonResponse.StringOf('Customer.CurrencyRef.value');
CustomerDefaultTaxCodeRefValue := jsonResponse.StringOf('Customer.DefaultTaxCodeRef.value');
CustomerPreferredDeliveryMethod := jsonResponse.StringOf('Customer.PreferredDeliveryMethod');
CustomerGivenName := jsonResponse.StringOf('Customer.GivenName');
CustomerFullyQualifiedName := jsonResponse.StringOf('Customer.FullyQualifiedName');
CustomerBillWithParent := jsonResponse.BoolOf('Customer.BillWithParent');
CustomerTitle := jsonResponse.StringOf('Customer.Title');
CustomerJob := jsonResponse.BoolOf('Customer.Job');
CustomerBalanceWithJobs := jsonResponse.IntOf('Customer.BalanceWithJobs');
CustomerPrimaryPhoneFreeFormNumber := jsonResponse.StringOf('Customer.PrimaryPhone.FreeFormNumber');
CustomerTaxable := jsonResponse.BoolOf('Customer.Taxable');
CustomerMetaDataCreateTime := jsonResponse.StringOf('Customer.MetaData.CreateTime');
CustomerMetaDataLastUpdatedTime := jsonResponse.StringOf('Customer.MetaData.LastUpdatedTime');
CustomerBillAddrCity := jsonResponse.StringOf('Customer.BillAddr.City');
CustomerBillAddrCountry := jsonResponse.StringOf('Customer.BillAddr.Country');
CustomerBillAddrLine1 := jsonResponse.StringOf('Customer.BillAddr.Line1');
CustomerBillAddrPostalCode := jsonResponse.StringOf('Customer.BillAddr.PostalCode');
CustomerBillAddrCountrySubDivisionCode := jsonResponse.StringOf('Customer.BillAddr.CountrySubDivisionCode');
CustomerBillAddrId := jsonResponse.StringOf('Customer.BillAddr.Id');
CustomerMiddleName := jsonResponse.StringOf('Customer.MiddleName');
CustomerNotes := jsonResponse.StringOf('Customer.Notes');
CustomerActive := jsonResponse.BoolOf('Customer.Active');
CustomerBalance := jsonResponse.IntOf('Customer.Balance');
CustomerSyncToken := jsonResponse.StringOf('Customer.SyncToken');
CustomerSuffix := jsonResponse.StringOf('Customer.Suffix');
CustomerCompanyName := jsonResponse.StringOf('Customer.CompanyName');
CustomerFamilyName := jsonResponse.StringOf('Customer.FamilyName');
CustomerPrintOnCheckName := jsonResponse.StringOf('Customer.PrintOnCheckName');
CustomerSparse := jsonResponse.BoolOf('Customer.sparse');
CustomerId := jsonResponse.StringOf('Customer.Id');
time := jsonResponse.StringOf('time');
end;