Pascal (Lazarus/Delphi)
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
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.