Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

CardConnect Capture Level 3 Data

See more CardConnect Examples

Demonstrates how to send a CardConnect Capture request with Lavel 3 line item data.
If available, Level 3 line item data can be sent with the capture request, particularly for any commercial or corporate payment cards. To qualify for Level 3 Interchange rates, Level 2 data must also be provided. ...

See https://developer.cardconnect.com/cardconnect-api#capture-level-3-data

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

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

  final http = CkHttp();

  http.basicAuth = true;
  http.login = 'API_USERNAME';
  http.password = 'API_PASSWORD';

  // Build and send the following JSON:

  // The "retref" is the value returned in the JSON response for the Authorization request.

  // {
  //   "retref": "2880000333",
  //   "shiptozip": "11111-1111",
  //   "shipfromzip": "99999-9999",
  //   "amount": "596.00",
  //   "items": [
  //     {
  //       "discamnt": "0",
  //       "unitcost": "900",
  //       "uom": "CS",
  //       "lineno": "1",
  //       "description": "DESCRIPTION-1",
  //       "taxamnt": "117",
  //       "quantity": "1000",
  //       "upc": "UPC-1",
  //       "netamnt": "150",
  //       "material": "MATERIAL-1"
  //     },
  //     {
  //       "discamnt": "0",
  //       "unitcost": "450",
  //       "uom": "CS",
  //       "lineno": "2",
  //       "description": "DESCRIPTION-2",
  //       "taxamnt": "117",
  //       "quantity": "2000",
  //       "upc": "UPC-1",
  //       "netamnt": "300",
  //       "material": "MATERIAL-2"
  //     }
  //   ],
  //   "taxamount": "40.00",
  //   "merchid": "123456789012",
  //   "account": "4111111111111111",
  //   "ponumber": "PO-0736332"
  // }
  // 
  // Use this online tool to generate the code from sample JSON: 
  // Generate Code to Create JSON

  final json = CkJsonObject();
  json.updateString('retref', '112989260941');
  json.updateString('shiptozip', '11111-1111');
  json.updateString('shipfromzip', '99999-9999');
  json.updateString('amount', '596.00');
  json.updateString('items[0].discamnt', '0');
  json.updateString('items[0].unitcost', '900');
  json.updateString('items[0].uom', 'CS');
  json.updateString('items[0].lineno', '1');
  json.updateString('items[0].description', 'DESCRIPTION-1');
  json.updateString('items[0].taxamnt', '117');
  json.updateString('items[0].quantity', '1000');
  json.updateString('items[0].upc', 'UPC-1');
  json.updateString('items[0].netamnt', '150');
  json.updateString('items[0].material', 'MATERIAL-1');
  json.updateString('items[1].discamnt', '0');
  json.updateString('items[1].unitcost', '450');
  json.updateString('items[1].uom', 'CS');
  json.updateString('items[1].lineno', '2');
  json.updateString('items[1].description', 'DESCRIPTION-2');
  json.updateString('items[1].taxamnt', '117');
  json.updateString('items[1].quantity', '2000');
  json.updateString('items[1].upc', 'UPC-1');
  json.updateString('items[1].netamnt', '300');
  json.updateString('items[1].material', 'MATERIAL-2');
  json.updateString('taxamount', '40.00');
  json.updateString('merchid', 'MERCHANT_ID');
  json.updateString('account', '4111111111111111');
  json.updateString('ponumber', 'PO-0736332');

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

  final resp = CkHttpResponse();
  try {
    http.httpStr('PUT', url, json.emit(), 'utf-8', 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // 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.
  print('response status code = ${resp.statusCode}');

  final jsonResp = CkJsonObject();
  jsonResp.load(resp.bodyStr);
  jsonResp.emitCompact = false;

  print('response JSON:');
  print(jsonResp.emit());

  // A successful response looks like this:

  // {
  //   "amount": "596.00",
  //   "resptext": "Approval",
  //   "setlstat": "Queued for Capture",
  //   "commcard": " C ",
  //   "respcode": "00",
  //   "batchid": "1900942291",
  //   "merchid": "MERCHANT_ID",
  //   "token": "9418594164541111",
  //   "authcode": "PPS158",
  //   "respproc": "FNOR",
  //   "retref": "112989260941",
  //   "respstat": "A",
  //   "account": "9418594164541111"
  // }

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

  final amount = jsonResp.stringOf('amount');
  final resptext = jsonResp.stringOf('resptext');
  final setlstat = jsonResp.stringOf('setlstat');
  final commcard = jsonResp.stringOf('commcard');
  final respcode = jsonResp.stringOf('respcode');
  final batchid = jsonResp.stringOf('batchid');
  final merchid = jsonResp.stringOf('merchid');
  final token = jsonResp.stringOf('token');
  final authcode = jsonResp.stringOf('authcode');
  final respproc = jsonResp.stringOf('respproc');
  final retref = jsonResp.stringOf('retref');
  final respstat = jsonResp.stringOf('respstat');
  final account = jsonResp.stringOf('account');
}