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

ClickBank Parse Instant Notification JSON

See more ClickBank Examples

Demonstrates how to parse the JSON of a ClickBank instant notification.

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.JsonObject;

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

procedure RunDemo;
var
  json: TJsonObject;
  transactionTime: string;
  receipt: string;
  transactionType: string;
  vendor: string;
  affiliate: string;
  role: string;
  totalAccountAmount: string;
  paymentMethod: string;
  totalOrderAmount: string;
  totalTaxAmount: string;
  totalShippingAmount: string;
  currency: string;
  orderLanguage: string;
  customerShippingFirstName: string;
  customerShippingLastName: string;
  customerShippingFullName: string;
  customerShippingPhoneNumber: string;
  customerShippingEmail: string;
  customerShippingAddressAddress1: string;
  customerShippingAddressAddress2: string;
  customerShippingAddressCity: string;
  customerShippingAddressCounty: string;
  customerShippingAddressState: string;
  customerShippingAddressPostalCode: string;
  customerShippingAddressCountry: string;
  customerBillingFirstName: string;
  customerBillingLastName: string;
  customerBillingFullName: string;
  customerBillingPhoneNumber: string;
  customerBillingEmail: string;
  customerBillingAddressState: string;
  customerBillingAddressPostalCode: string;
  customerBillingAddressCountry: string;
  upsellUpsellOriginalReceipt: string;
  upsellUpsellFlowId: Integer;
  upsellUpsellSession: string;
  upsellUpsellPath: string;
  hopfeedHopfeedClickId: string;
  hopfeedHopfeedApplicationId: Integer;
  hopfeedHopfeedCreativeId: Integer;
  hopfeedHopfeedApplicationPayout: string;
  hopfeedHopfeedVendorPayout: string;
  version: string;
  attemptCount: Integer;
  vendorVariablesV1: string;
  vendorVariablesV2: string;
  i: Integer;
  count_i: Integer;
  strVal: string;
  itemNo: string;
  productTitle: string;
  shippable: Boolean;
  recurring: Boolean;
  accountAmount: string;
  quantity: Integer;
  downloadUrl: string;
  lineItemType: string;

begin
  json := TJsonObject.Create;

  json.Load('{  ...  }');

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

  //  See the parsing code below..

  //  Sample notification JSON: 

  //  {
  //      "transactionTime": "2016-06-05T13:47:51-06:00",
  //      "receipt": "CWOGBZLN",
  //      "transactionType": "SALE",
  //      "vendor": "testacct",
  //      "affiliate": "affiliate1",
  //      "role": "VENDOR",
  //      "totalAccountAmount": 0.00,
  //      "paymentMethod": "VISA",
  //      "totalOrderAmount": 0.00,
  //      "totalTaxAmount": 0.00,
  //      "totalShippingAmount": 0.00,
  //      "currency": "USD",
  //      "orderLanguage": "EN",
  //      "trackingCodes": [
  //          "tracking_code"
  //      ],
  //      "lineItems": [
  //          {
  //              "itemNo": "1",
  //              "productTitle": "Product Title",
  //              "shippable": false,
  //              "recurring": false,
  //              "accountAmount": 5.00,
  //              "quantity": 1,
  //              "downloadUrl": "<download_url>"
  //              "lineItemType": "CART"
  //         }
  //          {
  //              "itemNo": "2",
  //              "productTitle": "Second Product",
  //              "shippable": false,
  //              "recurring": true,
  //              "accountAmount": 2.99,
  //              "quantity": 1,
  //              "downloadUrl": "<download_url>"
  //              "lineItemType": "CART"
  //         }
  //  
  //      ],
  //       "customer": {
  //          "shipping": {
  //              "firstName": "TEST",
  //              "lastName": "GUY",
  //              "fullName": "Test Guy",
  //              "phoneNumber": "",
  //              "email": "test@example.net",
  //              "address": {
  //                  "address1": "12 Test Lane",
  //                  "address2": "Suite 100",
  //                  "city": "LAS VEGAS",
  //                  "county": "LAS VEGAS",
  //                  "state": "NV",
  //                  "postalCode": "89101",
  //                  "country": "US"
  //              }
  //          },
  //          "billing": {
  //              "firstName": "TEST",
  //              "lastName": "GUY",
  //              "fullName": "Test Guy",
  //              "phoneNumber": "",
  //              "email": "test@example.net",
  //              "address": {
  //                  "state": "NV",
  //                  "postalCode": "89101",
  //                  "country": "US"
  //              }
  //          }
  //      },
  //       "upsell": {
  //          "upsellOriginalReceipt": "XXXXXXXX",
  //          "upsellFlowId": 55,
  //          "upsellSession": "VVVVVVVVVV",
  //          "upsellPath": "upsell_path"
  //      },
  //       "hopfeed": {
  //          "hopfeedClickId": "hopfeed_click",
  //          "hopfeedApplicationId": 0000,
  //          "hopfeedCreativeId": 0000,
  //          "hopfeedApplicationPayout": 0.00,
  //          "hopfeedVendorPayout": 0.00
  //      },
  //       "version": 6.0,
  //      "attemptCount": 1,
  //       "vendorVariables": {
  //         "v1": "variable1", 
  //         "v2": "variable2" 
  //      }
  //   }
  //  
  //  

  transactionTime := json.StringOf('transactionTime');
  receipt := json.StringOf('receipt');
  transactionType := json.StringOf('transactionType');
  vendor := json.StringOf('vendor');
  affiliate := json.StringOf('affiliate');
  role := json.StringOf('role');
  totalAccountAmount := json.StringOf('totalAccountAmount');
  paymentMethod := json.StringOf('paymentMethod');
  totalOrderAmount := json.StringOf('totalOrderAmount');
  totalTaxAmount := json.StringOf('totalTaxAmount');
  totalShippingAmount := json.StringOf('totalShippingAmount');
  currency := json.StringOf('currency');
  orderLanguage := json.StringOf('orderLanguage');
  customerShippingFirstName := json.StringOf('customer.shipping.firstName');
  customerShippingLastName := json.StringOf('customer.shipping.lastName');
  customerShippingFullName := json.StringOf('customer.shipping.fullName');
  customerShippingPhoneNumber := json.StringOf('customer.shipping.phoneNumber');
  customerShippingEmail := json.StringOf('customer.shipping.email');
  customerShippingAddressAddress1 := json.StringOf('customer.shipping.address.address1');
  customerShippingAddressAddress2 := json.StringOf('customer.shipping.address.address2');
  customerShippingAddressCity := json.StringOf('customer.shipping.address.city');
  customerShippingAddressCounty := json.StringOf('customer.shipping.address.county');
  customerShippingAddressState := json.StringOf('customer.shipping.address.state');
  customerShippingAddressPostalCode := json.StringOf('customer.shipping.address.postalCode');
  customerShippingAddressCountry := json.StringOf('customer.shipping.address.country');
  customerBillingFirstName := json.StringOf('customer.billing.firstName');
  customerBillingLastName := json.StringOf('customer.billing.lastName');
  customerBillingFullName := json.StringOf('customer.billing.fullName');
  customerBillingPhoneNumber := json.StringOf('customer.billing.phoneNumber');
  customerBillingEmail := json.StringOf('customer.billing.email');
  customerBillingAddressState := json.StringOf('customer.billing.address.state');
  customerBillingAddressPostalCode := json.StringOf('customer.billing.address.postalCode');
  customerBillingAddressCountry := json.StringOf('customer.billing.address.country');
  upsellUpsellOriginalReceipt := json.StringOf('upsell.upsellOriginalReceipt');
  upsellUpsellFlowId := json.IntOf('upsell.upsellFlowId');
  upsellUpsellSession := json.StringOf('upsell.upsellSession');
  upsellUpsellPath := json.StringOf('upsell.upsellPath');
  hopfeedHopfeedClickId := json.StringOf('hopfeed.hopfeedClickId');
  hopfeedHopfeedApplicationId := json.IntOf('hopfeed.hopfeedApplicationId');
  hopfeedHopfeedCreativeId := json.IntOf('hopfeed.hopfeedCreativeId');
  hopfeedHopfeedApplicationPayout := json.StringOf('hopfeed.hopfeedApplicationPayout');
  hopfeedHopfeedVendorPayout := json.StringOf('hopfeed.hopfeedVendorPayout');
  version := json.StringOf('version');
  attemptCount := json.IntOf('attemptCount');
  vendorVariablesV1 := json.StringOf('vendorVariables.v1');
  vendorVariablesV2 := json.StringOf('vendorVariables.v2');
  i := 0;
  count_i := json.SizeOfArray('trackingCodes');
  while i < count_i do
    begin
      json.I := i;
      strVal := json.StringOf('trackingCodes[i]');
      i := i + 1;
    end;

  i := 0;
  count_i := json.SizeOfArray('lineItems');
  while i < count_i do
    begin
      json.I := i;
      itemNo := json.StringOf('lineItems[i].itemNo');
      productTitle := json.StringOf('lineItems[i].productTitle');
      shippable := json.BoolOf('lineItems[i].shippable');
      recurring := json.BoolOf('lineItems[i].recurring');
      accountAmount := json.StringOf('lineItems[i].accountAmount');
      quantity := json.IntOf('lineItems[i].quantity');
      downloadUrl := json.StringOf('lineItems[i].downloadUrl');
      lineItemType := json.StringOf('lineItems[i].lineItemType');
      i := i + 1;
    end;



  json.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.