Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Handle hoJson
    String sUrl
    Variant vResp
    Handle hoResp
    Handle hoJsonResp
    String sAmount
    String sResptext
    String sSetlstat
    String sCommcard
    String sRespcode
    String sBatchid
    String sMerchid
    String sToken
    String sAuthcode
    String sRespproc
    String sRetref
    String sRespstat
    String sAccount
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Set ComBasicAuth Of hoHttp To True
    Set ComLogin Of hoHttp To "API_USERNAME"
    Set ComPassword Of hoHttp To "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

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComUpdateString Of hoJson "retref" "112989260941" To iSuccess
    Get ComUpdateString Of hoJson "shiptozip" "11111-1111" To iSuccess
    Get ComUpdateString Of hoJson "shipfromzip" "99999-9999" To iSuccess
    Get ComUpdateString Of hoJson "amount" "596.00" To iSuccess
    Get ComUpdateString Of hoJson "items[0].discamnt" "0" To iSuccess
    Get ComUpdateString Of hoJson "items[0].unitcost" "900" To iSuccess
    Get ComUpdateString Of hoJson "items[0].uom" "CS" To iSuccess
    Get ComUpdateString Of hoJson "items[0].lineno" "1" To iSuccess
    Get ComUpdateString Of hoJson "items[0].description" "DESCRIPTION-1" To iSuccess
    Get ComUpdateString Of hoJson "items[0].taxamnt" "117" To iSuccess
    Get ComUpdateString Of hoJson "items[0].quantity" "1000" To iSuccess
    Get ComUpdateString Of hoJson "items[0].upc" "UPC-1" To iSuccess
    Get ComUpdateString Of hoJson "items[0].netamnt" "150" To iSuccess
    Get ComUpdateString Of hoJson "items[0].material" "MATERIAL-1" To iSuccess
    Get ComUpdateString Of hoJson "items[1].discamnt" "0" To iSuccess
    Get ComUpdateString Of hoJson "items[1].unitcost" "450" To iSuccess
    Get ComUpdateString Of hoJson "items[1].uom" "CS" To iSuccess
    Get ComUpdateString Of hoJson "items[1].lineno" "2" To iSuccess
    Get ComUpdateString Of hoJson "items[1].description" "DESCRIPTION-2" To iSuccess
    Get ComUpdateString Of hoJson "items[1].taxamnt" "117" To iSuccess
    Get ComUpdateString Of hoJson "items[1].quantity" "2000" To iSuccess
    Get ComUpdateString Of hoJson "items[1].upc" "UPC-1" To iSuccess
    Get ComUpdateString Of hoJson "items[1].netamnt" "300" To iSuccess
    Get ComUpdateString Of hoJson "items[1].material" "MATERIAL-2" To iSuccess
    Get ComUpdateString Of hoJson "taxamount" "40.00" To iSuccess
    Get ComUpdateString Of hoJson "merchid" "MERCHANT_ID" To iSuccess
    Get ComUpdateString Of hoJson "account" "4111111111111111" To iSuccess
    Get ComUpdateString Of hoJson "ponumber" "PO-0736332" To iSuccess

    Move "https://<site>.cardconnect.com:<port>/cardconnect/rest/capture" To sUrl

    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get ComEmit Of hoJson To sTemp1
    Get pvComObject of hoResp to vResp
    Get ComHttpStr Of hoHttp "PUT" sUrl sTemp1 "utf-8" "application/json" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // 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.
    Get ComStatusCode Of hoResp To iTemp1
    Showln "response status code = " iTemp1

    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonResp
    If (Not(IsComObjectCreated(hoJsonResp))) Begin
        Send CreateComObject of hoJsonResp
    End
    Get ComBodyStr Of hoResp To sTemp1
    Get ComLoad Of hoJsonResp sTemp1 To iSuccess
    Set ComEmitCompact Of hoJsonResp To False

    Showln "response JSON:"
    Get ComEmit Of hoJsonResp To sTemp1
    Showln sTemp1

    // 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

    Get ComStringOf Of hoJsonResp "amount" To sAmount
    Get ComStringOf Of hoJsonResp "resptext" To sResptext
    Get ComStringOf Of hoJsonResp "setlstat" To sSetlstat
    Get ComStringOf Of hoJsonResp "commcard" To sCommcard
    Get ComStringOf Of hoJsonResp "respcode" To sRespcode
    Get ComStringOf Of hoJsonResp "batchid" To sBatchid
    Get ComStringOf Of hoJsonResp "merchid" To sMerchid
    Get ComStringOf Of hoJsonResp "token" To sToken
    Get ComStringOf Of hoJsonResp "authcode" To sAuthcode
    Get ComStringOf Of hoJsonResp "respproc" To sRespproc
    Get ComStringOf Of hoJsonResp "retref" To sRetref
    Get ComStringOf Of hoJsonResp "respstat" To sRespstat
    Get ComStringOf Of hoJsonResp "account" To sAccount


End_Procedure