Sample code for 30+ languages & platforms
PureBasic

CardConnect Void

See more CardConnect Examples

Demonstrates how to send a CardConnect void request.
The void service cancels a transaction that is in either "Authorized" or "Queued for Capture" status.. ...

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

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:

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

    ; {
    ;     "retref":"112989260941",
    ;     "merchid":"MERCHANT_ID"
    ; }

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

    CkJsonObject::ckUpdateString(json,"retref","112989260941")
    CkJsonObject::ckUpdateString(json,"merchid","MERCHANT_ID")

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

    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)

    ; A successful response looks like this:

    ; {
    ;   "authcode": "REVERS",
    ;   "respproc": "FNOR",
    ;   "amount": "0.00",
    ;   "resptext": "Approval",
    ;   "currency": "USD",
    ;   "retref": "112989260941",
    ;   "respstat": "A",
    ;   "respcode": "00",
    ;   "merchid": "496160873888"
    ; }

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

    authcode.s = CkJsonObject::ckStringOf(jsonResp,"authcode")
    respproc.s = CkJsonObject::ckStringOf(jsonResp,"respproc")
    amount.s = CkJsonObject::ckStringOf(jsonResp,"amount")
    resptext.s = CkJsonObject::ckStringOf(jsonResp,"resptext")
    currency.s = CkJsonObject::ckStringOf(jsonResp,"currency")
    retref.s = CkJsonObject::ckStringOf(jsonResp,"retref")
    respstat.s = CkJsonObject::ckStringOf(jsonResp,"respstat")
    respcode.s = CkJsonObject::ckStringOf(jsonResp,"respcode")
    merchid.s = CkJsonObject::ckStringOf(jsonResp,"merchid")


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


    ProcedureReturn
EndProcedure