Sample code for 30+ languages & platforms
PureBasic

CardConnect Authorization

See more CardConnect Examples

Demonstrates how to send an Authorization request.
Authorization is the initial step in accepting payment from a cardholder. This action "authorizes" or requests permission from the bank to transfer money from the cardholder to the merchant.

See https://developer.cardconnect.com/cardconnect-api#authorization

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttp::setCkBasicAuth(http, 1)
    CkHttp::setCkLogin(http, "API_USERNAME")
    CkHttp::setCkPassword(http, "API_PASSWORD")

    ; Build and send the following JSON:

    ; Note: The CardConnect online documentation might use an expiry that is in the past, such as "1218".
    ; This causes the request to fail.  Use a month/year that is in the future..
    ; (Likewise, this example will have an invalid month/year after Dec 2021)

    ; {
    ;   "merchid": "MERCHANT_ID",
    ;   "accttype": "VISA",
    ;   "orderid": "AB-11-9876",
    ;   "account": "4111111111111111",
    ;   "expiry": "1221",
    ;   "amount": "0",
    ;   "currency": "USD",
    ;   "name": "TOM JONES",
    ;   "address": "123 MAIN STREET",
    ;   "city": "anytown",
    ;   "region": "NY",
    ;   "country": "US",
    ;   "postal": "55555",
    ;   "profile": "Y",
    ;   "ecomind": "E",
    ;   "cvv2": "123",
    ;   "track": null,
    ;   "capture": "Y"
    ; }

    ; Use this online tool to generate the code from sample JSON: 
    ; Generate Code to Create JSON
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"merchid","MERCHANT_ID")
    CkJsonObject::ckUpdateString(json,"accttype","VISA")
    CkJsonObject::ckUpdateString(json,"orderid","AB-11-9876")
    CkJsonObject::ckUpdateString(json,"account","4111111111111111")
    CkJsonObject::ckUpdateString(json,"expiry","1221")
    CkJsonObject::ckUpdateString(json,"amount","20")
    CkJsonObject::ckUpdateString(json,"currency","USD")
    CkJsonObject::ckUpdateString(json,"name","TOM JONES")
    CkJsonObject::ckUpdateString(json,"address","123 MAIN STREET")
    CkJsonObject::ckUpdateString(json,"city","anytown")
    CkJsonObject::ckUpdateString(json,"region","NY")
    CkJsonObject::ckUpdateString(json,"country","US")
    CkJsonObject::ckUpdateString(json,"postal","55555")
    CkJsonObject::ckUpdateString(json,"profile","Y")
    CkJsonObject::ckUpdateString(json,"ecomind","E")
    CkJsonObject::ckUpdateString(json,"cvv2","123")
    CkJsonObject::ckUpdateNull(json,"track")
    CkJsonObject::ckUpdateString(json,"capture","Y")

    url.s = "https://<site>.cardconnect.com:<port>/cardconnect/rest/auth"

    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpStr(http,"PUT",url,CkJsonObject::ckEmit(json),"utf-8","application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; 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.
    Debug "response status code = " + Str(CkHttpResponse::ckStatusCode(resp))

    jsonResp.i = CkJsonObject::ckCreate()
    If jsonResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(jsonResp,CkHttpResponse::ckBodyStr(resp))
    CkJsonObject::setCkEmitCompact(jsonResp, 0)

    Debug "response JSON:"
    Debug CkJsonObject::ckEmit(jsonResp)

    ; Sample error:

    ; {
    ;   "respproc": "PPS",
    ;   "amount": "0.00",
    ;   "resptext": "Invalid amount",
    ;   "cardproc": "FNOR",
    ;   "acctid": "1",
    ;   "retref": "112804260418",
    ;   "respstat": "C",
    ;   "respcode": "43",
    ;   "account": "41XXXXXXXXXX1111",
    ;   "defaultacct": "Y",
    ;   "merchid": "MERCHANT_ID",
    ;   "token": "9418594164541111"
    ; }

    ; A successful response looks like this:

    ; {
    ;   "amount": "0.20",
    ;   "resptext": "Approval",
    ;   "acctid": "1",
    ;   "commcard": " C ",
    ;   "cvvresp": "M",
    ;   "respcode": "00",
    ;   "batchid": "1900942291",
    ;   "avsresp": "Z",
    ;   "entrymode": "ECommerce",
    ;   "defaultacct": "Y",
    ;   "merchid": "MERCHANT_ID",
    ;   "token": "9418594164541111",
    ;   "authcode": "PPS158",
    ;   "respproc": "FNOR",
    ;   "bintype": "",
    ;   "profileid": "16618402968441604028",
    ;   "retref": "112989260941",
    ;   "respstat": "A",
    ;   "account": "41XXXXXXXXXX1111"
    ; }

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

    amount.s = CkJsonObject::ckStringOf(jsonResp,"amount")
    resptext.s = CkJsonObject::ckStringOf(jsonResp,"resptext")
    acctid.s = CkJsonObject::ckStringOf(jsonResp,"acctid")
    commcard.s = CkJsonObject::ckStringOf(jsonResp,"commcard")
    cvvresp.s = CkJsonObject::ckStringOf(jsonResp,"cvvresp")
    respcode.s = CkJsonObject::ckStringOf(jsonResp,"respcode")
    batchid.s = CkJsonObject::ckStringOf(jsonResp,"batchid")
    avsresp.s = CkJsonObject::ckStringOf(jsonResp,"avsresp")
    entrymode.s = CkJsonObject::ckStringOf(jsonResp,"entrymode")
    defaultacct.s = CkJsonObject::ckStringOf(jsonResp,"defaultacct")
    merchid.s = CkJsonObject::ckStringOf(jsonResp,"merchid")
    token.s = CkJsonObject::ckStringOf(jsonResp,"token")
    authcode.s = CkJsonObject::ckStringOf(jsonResp,"authcode")
    respproc.s = CkJsonObject::ckStringOf(jsonResp,"respproc")
    bintype.s = CkJsonObject::ckStringOf(jsonResp,"bintype")
    profileid.s = CkJsonObject::ckStringOf(jsonResp,"profileid")
    retref.s = CkJsonObject::ckStringOf(jsonResp,"retref")
    respstat.s = CkJsonObject::ckStringOf(jsonResp,"respstat")
    account.s = CkJsonObject::ckStringOf(jsonResp,"account")


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(jsonResp)


    ProcedureReturn
EndProcedure