DataFlex
DataFlex
QuickBooks - Full Update an Account
See more QuickBooks Examples
Demonstrates how to update any of the writable fields of an existing account. The example first reads the JSON data for the account, makes some changes, and then POST's the updated JSON to update the account.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Token Handle hoJsonToken
Handle hoRest
Boolean iBAutoReconnect
Handle hoSbAuth
String sResponseBody
Handle hoJson
Variant vUpdateJson
Handle hoUpdateJson
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Get our previously obtained OAuth2 access token, which should contain JSON like this:
// {
// "expires_in": 3600,
// "x_refresh_token_expires_in": 8726400,
// "refresh_token": "L011546037639r ... 3vR2DrbOmg0Sdagw",
// "access_token": "eyJlbmMiOiJBMTI4Q0 ... oETJEMbeggg",
// "token_type": "bearer"
// }
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
If (Not(IsComObjectCreated(hoJsonToken))) Begin
Send CreateComObject of hoJsonToken
End
Get ComLoadFile Of hoJsonToken "qa_data/tokens/qb-access-token.json" To iSuccess
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
// Connect using TLS.
// A single REST object, once connected, can be used for many Quickbooks REST API calls.
// The auto-reconnect indicates that if the already-established HTTPS connection is closed,
// then it will be automatically re-established as needed.
Move True To iBAutoReconnect
Get ComConnect Of hoRest "sandbox-quickbooks.api.intuit.com" 443 True iBAutoReconnect To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbAuth
If (Not(IsComObjectCreated(hoSbAuth))) Begin
Send CreateComObject of hoSbAuth
End
Get ComAppend Of hoSbAuth "Bearer " To iSuccess
Get ComStringOf Of hoJsonToken "access_token" To sTemp1
Get ComAppend Of hoSbAuth sTemp1 To iSuccess
Get ComGetAsString Of hoSbAuth To sTemp1
Set ComAuthorization Of hoRest To sTemp1
Get ComAddHeader Of hoRest "Accept" "application/json" To iSuccess
Set ComAllowHeaderFolding Of hoRest To False
// First get the full JSON for the account we'll be updating..
// The company ID is the 123146096291789
// The account ID is 29
Get ComFullRequestNoBody Of hoRest "GET" "/v3/company/123146096291789/account/29?minorversion=45" To sResponseBody
Get ComLastMethodSuccess Of hoRest To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// We should expect a 200 response if successful.
Get ComResponseStatusCode Of hoRest To iTemp1
If (iTemp1 <> 200) Begin
Showln "Request Header: "
Get ComLastRequestHeader Of hoRest To sTemp1
Showln sTemp1
Showln "----"
Get ComResponseStatusCode Of hoRest To iTemp1
Showln "Response StatusCode = " iTemp1
Get ComResponseStatusText Of hoRest To sTemp1
Showln "Response StatusLine: " sTemp1
Showln "Response Header:"
Get ComResponseHeader Of hoRest To sTemp1
Showln sTemp1
Showln sResponseBody
Procedure_Return
End
// Load the JSON response into a JSON object for parsing/updating
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComLoad Of hoJson sResponseBody To iSuccess
// Show the JSON..
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
Showln "----"
// The JSON passed in the HTTP POST for updating is the inner content of the Account
Get Create (RefClass(cComChilkatJsonObject)) To hoUpdateJson
If (Not(IsComObjectCreated(hoUpdateJson))) Begin
Send CreateComObject of hoUpdateJson
End
Get pvComObject of hoUpdateJson to vUpdateJson
Get ComObjectOf2 Of hoJson "Account" vUpdateJson To iSuccess
// Add or update the Description.
// (If a Description already exists, it is replace, otherwise the Description is added.)
Get ComUpdateString Of hoUpdateJson "Description" "Description added during update." To iSuccess
// Examine the JSON we'll be sending in the body of the POST.
Set ComEmitCompact Of hoUpdateJson To False
Get ComEmit Of hoUpdateJson To sTemp1
Showln sTemp1
Showln "----"
// Now we're going to POST the changes to update the Quickbooks account.
Get ComClearAllHeaders Of hoRest To iSuccess
Get ComGetAsString Of hoSbAuth To sTemp1
Set ComAuthorization Of hoRest To sTemp1
Get ComAddHeader Of hoRest "Accept" "application/json" To iSuccess
Get ComAddHeader Of hoRest "Content-Type" "application/json" To iSuccess
// The updated JSON is passed as the HTTP request body.
Get ComEmit Of hoUpdateJson To sTemp1
Get ComFullRequestString Of hoRest "POST" "/v3/company/123146096291789/account?minorversion=45" sTemp1 To sResponseBody
Get ComLastMethodSuccess Of hoRest To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// We should expect a 200 response if successful.
Get ComResponseStatusCode Of hoRest To iTemp1
If (iTemp1 <> 200) Begin
Showln "Request Header: "
Get ComLastRequestHeader Of hoRest To sTemp1
Showln sTemp1
Showln "----"
Get ComResponseStatusCode Of hoRest To iTemp1
Showln "Response StatusCode = " iTemp1
Get ComResponseStatusText Of hoRest To sTemp1
Showln "Response StatusLine: " sTemp1
Showln "Response Header:"
Get ComResponseHeader Of hoRest To sTemp1
Showln sTemp1
Showln sResponseBody
Procedure_Return
End
// Load the JSON response into a JSON object to emit in indented form..
Get ComLoad Of hoJson sResponseBody To iSuccess
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
Showln "Success."
End_Procedure