VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "clsCCProc" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit Public Enum eInternalerror ieNoError = 0 ieCouldNotConnect = 1 ieInvalidZip = 2 ieInvalidExp = 3 ieInvalidAmount = 4 End Enum 'Public Enum eResponseCode ' ieApproved = "Approved" ' ieDeclined = "Declined" ' ieInvalidCCNumber = "201 Invalid CC Number" 'End Enum Private mbCompleted As Boolean Private mbError As Boolean Private msStatusCode As String Private msStatusMessage As String Private msResponseCode As String Private msResponseMessage As String Private miInternalError As eInternalerror Private msAuthCode As String Private msAVSCode As String Private msAVSMessage As String Private WithEvents mobjPaymentPlus As PaymentPlusClientXControl.PaymentPlusClientX Attribute mobjPaymentPlus.VB_VarHelpID = -1 Private WithEvents mobjFrmMain As frmMain Attribute mobjFrmMain.VB_VarHelpID = -1 Private Const mDIVISION As String = "259044" Private Const mDESCRIPTOR_COMPANY As String = "iGo Corporation, www.igo.com" Private Const mDESCRIPTOR_CITY_PHONE As String = "1-800-228-8374" Private Const mCUSTOMER_TYPE As String = "B" Private Const mCURRENCY As String = "USD" Public Event evProcessManual(sOrderID As String, sUserID As String, sFirstName As String, _ sLastName As String, sAddress As String, sCity As String, _ sState As String, sZip As String, sCCNumber As String, _ sCCExp As String, cuCCAmount As Currency, iChargeType As Integer, sAuthCode As String) Public Event evProcessAuto(sOrderID As String, sUserID As String, sFirstName As String, _ sLastName As String, sAddress As String, sCity As String, _ sState As String, sZip As String, sCCNumber As String, _ sCCExp As String, cuCCAmount As Currency, iChargeType As Integer, sAuthCode As String) Public Property Get pobjFrmMain() As frmMain Set pobjFrmMain = mobjFrmMain End Property Public Property Let pobjFrmMain(ByVal objFrmMain As frmMain) Set mobjFrmMain = objFrmMain End Property Public Property Get psStatusCode() As String psStatusCode = msStatusCode End Property Public Property Get psStatusMsg() As String psStatusMsg = msStatusMessage End Property Public Property Get psResponseCode() As String psResponseCode = msResponseCode End Property Public Property Get psResponseMsg() As String psResponseMsg = msResponseMessage End Property Public Property Get psAuthCode() As String psAuthCode = msAuthCode End Property Public Property Get psAVSCode() As String psAVSCode = msAVSCode End Property Public Property Get psAVSMsg() As String psAVSMsg = msAVSMessage End Property Public Property Get peInternalError() As eInternalerror peInternalError = miInternalError End Property Private Sub Class_Initialize() On Error GoTo ErrorHandler '*** Instantiate the ActiveX control and attempt connection. Return error if connection fails, dj Set mobjPaymentPlus = frmMain.objPaymentPlusClientX mbCompleted = False mbError = False mobjPaymentPlus.Connect Do Until mbCompleted Or mbError '*** mbCompleted = OnConnect or OnResponse, dj DoEvents Loop If mbError Then miInternalError = ieCouldNotConnect End If CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.Class_Initialize", Err.Description) GoTo CommonExit End Sub Private Sub Class_Terminate() On Error GoTo ErrorHandler mobjPaymentPlus.Disconnect Set mobjPaymentPlus = Nothing CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.Class_Terminate", Err.Description) GoTo CommonExit End Sub Private Function fnsGetZip(sZip As String) As String On Error GoTo ErrorHandler '*** Format U.S. zip codes for 5 digit or Zip+4, only numeric and "-" are valid '*** Currently PaymentTech only supports AVS for U.S. issued cards, dj 2/3/2000 '*** See PaymentTech: Fraud Awareness, p. D-1.0, Rev. 11/20/98 Select Case Len(sZip) Case 5 If IsNumeric(sZip) Then fnsGetZip = sZip Else mbError = True miInternalError = ieInvalidZip End If Case 10 If IsNumeric(Left$(sZip, 5)) And IsNumeric(Right$(sZip, 4)) And Mid$(sZip, 6, 1) = "-" Then fnsGetZip = sZip Else mbError = True miInternalError = ieInvalidZip End If Case 9 If IsNumeric(sZip) Then fnsGetZip = Left$(sZip, 5) & "-" & Right$(sZip, 4) Else mbError = True miInternalError = ieInvalidZip End If Case Else mbError = True miInternalError = ieInvalidZip End Select CommonExit: Exit Function ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.fnsGetZip", Err.Description) GoTo CommonExit End Function Private Function fnsGetExp(sExp As String) As String Dim lsTempExpDate As String On Error GoTo ErrorHandler '*** Make sure expiration is numeric with 4 digits, otherwise return an error Select Case Len(sExp) Case 3 If IsNumeric(sExp) Then fnsGetExp = "0" & sExp Else mbError = True miInternalError = ieInvalidExp End If Case 4 If IsNumeric(sExp) Then fnsGetExp = sExp Else mbError = True miInternalError = ieInvalidExp End If Case 10 lsTempExpDate = Left$(sExp, 2) & Mid$(sExp, 9, 2) If IsNumeric(lsTempExpDate) Then fnsGetExp = lsTempExpDate Else mbError = True miInternalError = ieInvalidExp End If Case Else mbError = True miInternalError = ieInvalidExp End Select CommonExit: Exit Function ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.fnsGetExp", Err.Description) GoTo CommonExit End Function Private Function fncuGetAmount(cAmount As Currency) As Currency On Error GoTo ErrorHandler '*** Do not allow transactions greater or equal to $100,000.00 If cAmount > 99999.99 Then mbError = True miInternalError = ieInvalidAmount Else fncuGetAmount = cAmount End If CommonExit: Exit Function ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.fncuGetAmount", Err.Description) GoTo CommonExit End Function Public Function fnbProcess(sOrderID As String, sUserID As String, sFirstName As String, _ sLastName As String, sAddress As String, sCity As String, _ sState As String, sZip As String, sCCNumber As String, _ sCCExp As String, cuAmount As Currency, iChargeType As Integer, _ ByVal psAuthCode As String) As Boolean On Error GoTo ErrorHandler mbCompleted = False mbError = False '*** Clear the class properties msStatusCode = "" msStatusMessage = "" msResponseCode = "" msResponseMessage = "" miInternalError = ieNoError 'msAuthCode = "" msAVSCode = "" msAVSMessage = "" '*** Assign the ActiveX control properties, then execute With mobjPaymentPlus .Clear .OrderID = sOrderID .Division = mDIVISION .UserID = sUserID .DescriptorCompany = mDESCRIPTOR_COMPANY .DescriptorCityPhone = mDESCRIPTOR_CITY_PHONE .CustomerType = mCUSTOMER_TYPE .CustomerFirstName = sFirstName .CustomerLastName = sLastName .CustomerAddress1 = sAddress .CustomerCity = sCity .CustomerStateProvince = sState .CustomerZip = fnsGetZip(sZip) .MethodType = "??" .AccountNumber = sCCNumber .CardExpirationDate = fnsGetExp(sCCExp) .AuthCode = psAuthCode .Currency = mCURRENCY .Amount = fncuGetAmount(cuAmount) If Not mbError Then Select Case iChargeType Case Is = 3 If Trim$(.AuthCode) = "" Then ' .Execute "OC" '*** Online Conditional Deposit (Authorize and Deposit with next batch) Else .Execute "BD" '*** Batch Deposit (For PRE-authorized deposits) End If Case Is = 4 .Execute "BR" '*** Batch Refund (Submit refund with next batch) Case Else .Execute "OA" '*** Online Authorization (Authorize Only) End Select Do Until mbCompleted Or mbError '*** mbCompleted = OnConnect or OnResponse DoEvents Loop End If fnbProcess = mbError End With CommonExit: Exit Function ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.fnbProcess", Err.Description) GoTo CommonExit End Function Private Sub mobjFrmMain_evProcessAuto(sOrderID As String, sUserID As String, sFirstName As String, _ sLastName As String, sAddress As String, sCity As String, _ sState As String, sZip As String, sCCNumber As String, _ sCCExp As String, cuCCAmount As Currency, iChargeType As Integer, _ sAuthCode As String) On Error GoTo ErrorHandler '*** Run common routine to process authorization fnbProcess sOrderID, sUserID, sFirstName, sLastName, sAddress, sCity, _ sState, sZip, sCCNumber, sCCExp, cuCCAmount, iChargeType, sAuthCode Debug.Print "Internal Error: " & peInternalError Debug.Print "Response: " & psResponseCode & " - " & psResponseMsg Debug.Print "Status: " & psStatusCode & " - " & psStatusMsg Debug.Print "AVS Code: " & psAVSCode Debug.Print "Auth Code: " & psAuthCode CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.mobjFrmMain_evProcessAuto", Err.Description) GoTo CommonExit End Sub Public Function fniGetStatus(eReturnCode As eInternalerror, sResponseMsg As String) As Integer On Error GoTo ErrorHandler Select Case eReturnCode Case ieNoError Select Case sResponseMsg Case "Approved" fniGetStatus = PendingPreauthorized Case "Declined" fniGetStatus = CreditCardDeclined Case "201 Invalid CC Number" fniGetStatus = InvalidCreditCardNumber Case Else fniGetStatus = DidNotConnectToCCAuthorizer End Select Case ieCouldNotConnect fniGetStatus = DidNotConnectToCCAuthorizer Case ieInvalidZip fniGetStatus = InvalidBillingAddress Case ieInvalidExp fniGetStatus = InvalidExpirationDate Case ieInvalidAmount fniGetStatus = InvalidOrderAmount Case Else fniGetStatus = DidNotConnectToCCAuthorizer End Select CommonExit: Exit Function ErrorHandler: fniGetStatus = -11 Call sbErrorHandler(Err.Number, "clsCCProc.fniGetStatus", Err.Description) GoTo CommonExit End Function Private Sub mobjFrmMain_evProcessManual(sOrderID As String, sUserID As String, sFirstName As String, _ sLastName As String, sAddress As String, sCity As String, _ sState As String, sZip As String, sCCNumber As String, _ sCCExp As String, cuCCAmount As Currency, iChargeType As Integer, _ sAuthCode As String) On Error GoTo ErrorHandler '*** Run common routine to process authorization fnbProcess sOrderID, sUserID, sFirstName, sLastName, sAddress, sCity, _ sState, sZip, sCCNumber, sCCExp, cuCCAmount, iChargeType, sAuthCode '*** Display the results of the authorization mobjFrmMain.sbShowResults peInternalError, psStatusCode & " - " & psStatusMsg, _ psResponseCode & " - " & psResponseMsg, psAVSCode, psAuthCode Debug.Print "Internal Error: " & peInternalError Debug.Print "Response: " & psResponseCode & " - " & psResponseMsg Debug.Print "Status: " & psStatusCode & " - " & psStatusMsg Debug.Print "AVS Code: " & psAVSCode Debug.Print "Auth Code: " & psAuthCode CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.mobjFrmMain_evProcessManual", Err.Description) GoTo CommonExit End Sub Private Sub mobjPaymentPlus_OnConnect() On Error GoTo ErrorHandler '*** mbCompleted true for OnConnect or OnResponse mbCompleted = True CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.mobjPaymentPlus_OnConnect", Err.Description) GoTo CommonExit End Sub Private Sub mobjPaymentPlus_OnError(ByVal errorCode As String, ByVal errorMessage As String) On Error GoTo ErrorHandler '*** If there's an error, set the StatusCode and StatusMessage properties '*** Other properties cleared at start of Process sub mbError = True msStatusCode = errorCode msStatusMessage = errorMessage CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.mobjPaymentPlus_OnError", Err.Description) GoTo CommonExit End Sub Private Sub mobjPaymentPlus_OnResponse(ByVal OrderID As String, ByVal status As String, ByVal StatusMessage As String, ByVal ResponseMessage As String, ByVal ResponseDate As String, ByVal responseTime As String, ByVal AuthCode As String, ByVal avsCode As String) On Error GoTo ErrorHandler msStatusCode = status msStatusMessage = StatusMessage msResponseCode = ResponseMessage msAuthCode = AuthCode msAVSCode = avsCode msAVSMessage = avsCode '*** the response message mbCompleted = True CommonExit: Exit Sub ErrorHandler: Call sbErrorHandler(Err.Number, "clsCCProc.mobjPaymentPlus_OnResponse", Err.Description) GoTo CommonExit End Sub