<%
Dim strSessionMsg
Dim strFirstName
Dim strLastName
Dim strAddress1
Dim strAddress2
Dim strCity
Dim strState
Dim strZip
Dim strEmail
Dim strPhone
Dim strSalutation
Dim strDonationAmount
Dim strInMemoryOf
Dim strDonationType
Dim strApplyToOther
Dim bApplyToCWTCFoundation
Dim bApplyToResidentialFamilySupport
Dim bApplyToCommunityEmployment
Dim bApplyToOther
Dim strApplyToOtherText
If Session("SessionExpired") = True Then
strSessionMsg = "For your protection, your session expired after 20 minutes of inactivity. To complete your donation, please re-submit your information. Thank you!"
Session("SessionExpired") = ""
End If
'Session("DonationID") = 74
Session("CompletedDonationID") = "" '* reset this if for some reason they went back to the donations page after submitting a donation
If Request.Form("DonationSubmitted") = "Yes" Then
'Response.Write "save pledge"
'REsponse.End()
SavePledge
If ValidatePledge Then
Response.Redirect("ConfirmDonation.asp")
End If
End If
If Session("DonationID") <> "" Then
GetPledgeInfo
End If
Public Function GetPledgeInfo
Dim strSQL
strSQL = "SELECT * FROM Donations WHERE DonationID = " + CStr(Session("DonationID"))
rsCommon.LockType = adLockOptimistic
rsCommon.Open strSQL, adoMyCon
With rsCommon
strSalutation = .Fields("Salutation")
strFirstName = .Fields("FirstName")
strLastName = .Fields("LastName")
strAddress1 = .Fields("Address1")
strAddress2 = .Fields("Address2")
strCity = .Fields("City")
strState = .Fields("State")
strZip = .Fields("Zip")
strEmail = .Fields("Email")
strPhone = .Fields("Phone")
'If Request.Form("PledgeType") = "DONATION" Then
If Nz(.Fields("DonationAmount")) <> "" Then
strDonationAmount = Right(FormatCurrency(.Fields("DonationAmount")), Len(FormatCurrency(.Fields("DonationAmount"))) -1)
End If
strInMemoryOf = .Fields("InMemoryOf")
strDonationType = .Fields("DonationType")
bApplyToCWTCFoundation = .Fields("ApplyToCWTCFoundation")
bApplyToResidentialFamilySupport = .Fields("ApplyToResidentialFamilySupport")
bApplyToCommunityEmployment = .Fields("ApplyToCommunityEmployment")
bApplyToOther = .Fields("ApplyToOther")
strApplyToOtherText = .Fields("ApplyToOtherText")
'strApplyTo = .Fields("ApplyTo")
strApplyToOther = "other"
'If InStr(Request.Form("ApplyTo"), "Other") > 1 Then
' .Fields("ApplyTo") = Left(.Fields("ApplyTo") + ": " + Request.Form("Other"), 200)
'End If
.Close
End With
End Function
Public Sub RequireField (strFieldName, strReadable)
If Request.Form(strFieldName) = "" Then
Session("ErrorMessage") = Session("ErrorMessage") + "* " + strReadable + " is a required field. " + vbCrLf
End If
End Sub
Public Function ValidateBillingForm
Session("ErrorMessage") = ""
RequireField "BillFirstName", "Billing first name"
RequireField "BillLastName", "Billing last name"
RequireField "BillCompanyName", "Billing company name"
RequireField "BillCity", "Billing city"
RequireField "BillAddress1", "Billing address 1"
RequireField "BillZipCode", "Billing zip code"
RequireField "BillEMail", "Billing email address"
RequireField "BillPhone", "Billing phone"
If Session("ErrorMessage") = "" Then
ValidateBillingForm = True
Else
Session("ErrorMessage") = Session("ErrorMessage") + " "
ValidateBillingForm = False
End If
End Function
Public Function ValidatePledge ()
Session("ErrorMessage") = ""
'* to do: put various tests for form data in here
RequireField "FirstName", "First name"
RequireField "LastName", "Last name"
RequireField "Address1", "Address 1"
RequireField "City", "City"
RequireField "State", "State"
RequireField "Zip", "Zip code"
RequireField "Email", "Email address"
RequireField "Phone", "Phone number"
RequireField "DonationAmount", "Donation amount"
If Session("ErrorMessage") = "" Then
ValidatePledge = True
Else
ValidatePledge = False
End If
' If Request.Form("PledgeType") = "DONATION" Then
' ValidatePledge = True
' Else
' ValidatePledge = True
' End If
End Function
Public Function ChargeCreditCard
ChargeCreditCard = True
End Function
Public Function SavePledge ()
Dim strSQL
If Session("DonationID") = "" Then
strSQL = "EXEC sp_NewDonation"
Set rsLocal = adoMyCon.Execute(strSQL)
Session("DonationID") = rsLocal(0)
rsLocal.Close
End If
'* update new record
strSQL = "SELECT * FROM Donations WHERE DonationID = " + CStr(Session("DonationID"))
rsCommon.LockType = adLockOptimistic
rsCommon.Open strSQL, adoMyCon
'Response.Write strSQL
With rsCommon
.Fields("Salutation") = Request.Form("Salutation")
.Fields("FirstName") = Request.Form("FirstName")
.Fields("LastName") = Request.Form("LastName")
.Fields("Address1") = Request.Form("Address1")
.Fields("Address2") = Request.Form("Address2")
.Fields("City") = Request.Form("City")
.Fields("State") = Request.Form("State")
.Fields("Zip") = Request.Form("Zip")
.Fields("Email") = Request.Form("Email")
.Fields("Phone") = Request.Form("Phone")
'If Request.Form("PledgeType") = "DONATION" Then
.Fields("DonationAmount") = Request.Form("DonationAmount")
'.Fields("PledgeFrequency") = ""
'Else
' .Fields("DonationAmount") = Request.Form("PledgeAmount")
' .Fields("PledgeFrequency") = Request.Form("PledgeCycle")
'End If
'.Fields("ResponseCode") = ""
'.Fields("CC_Masked") = Request.Form("CardNumber")
'.Fields("CC_Name") = Request.Form("NameOnCard")
'.Fields("CC_Expiration") = Request.Form("CardMonth") + "/" + Request.Form("CardYear")
'.Fields("CC_CCV") = Request.Form("CCV")
.Fields("InMemoryOf") = Request.Form("InMemoryOf")
.Fields("DonationType") = Request.Form("PledgeType")
.Fields("ApplyToCWTCFoundation") = GetCheckState("ApplyToCWTCFoundation")
.Fields("ApplyToResidentialFamilySupport") = GetCheckState("ApplyToResidentialFamilySupport")
.Fields("ApplyToCommunityEmployment") = GetCheckState("ApplyToCommunityEmployment")
.Fields("ApplyToOther") = GetCheckState("ApplyToOther")
.Fields("ApplyToOtherText") = Request.Form("ApplyToOtherText")
If InStr(Request.Form("ApplyTo"), "Other") > 1 Then
.Fields("ApplyTo") = Left(.Fields("ApplyTo") + ": " + Request.Form("Other"), 200)
End If
'.Fields("") = Request.Form("")
'.Fields("") = Request.Form("")
'.Fields("") = Request.Form("")
'.Fields("") = Request.Form("")
'.Fields("") = Request.Form("")
'.Fields("") = Request.Form("")
.Update
.Close
End With
End Function
%>
<%
'Dim intDonationID
'Dim strFirstName
'Dim strLastName
'Dim strAddress1
'Dim strAddress2
'Dim strCity
'Dim strState
'Dim strZip
'Dim strEmail
'Dim strPhone
'Dim strInMemoryOf
'Dim strOther
'Dim strApplyTo
Dim strDonationType
Dim strDonationAmount
Dim strPledgeFrequency
Dim strCreditCardName
Dim strCreditCardNumber
Dim strCreditCardMonth
Dim strCreditCardYear
Dim strCCV
Dim strError
%> <%
If Session("DonationID") = "" Then
Session("SessionExpired") = True
Response.Redirect("index.asp")
End If
GetDonationInfo
If Request.Form("submit") = "< Back" Then
SaveCCInfo
Response.Redirect("Online.asp")
ElseIf Request.Form("ConfirmDonation") = "Yes" Then
SaveCCInfo
If ValidateCC Then
If AuthorizeCreditCard Then
SetDonationApprovalDate
'Session("DonationID") = ""
Session("CompletedDonationID") = Session("DonationID")
Response.Redirect("ThankYou.asp")
Else
strError = "Your credit card transaction could not be completed. Reason: " + Session("ReasonDenied")
End If
End If
ElseIf Request.Form("ConfirmPledge") = "Yes" Then
SetDonationApprovalDate
'Session("DonationID") = ""
Session("CompletedDonationID") = Session("DonationID")
Response.Redirect("ThankYou.asp")
End If
Public Function ValidateCC
strError = ""
If Len(Request.Form("NameOnCard")) = 0 Then
strError = strError + "* Credit card name is blank."
End If
If Not IsNumeric(Request.Form("CardNumber")) Then
strError = strError + " * Credit card may only contain numbers (0-9)."
End If
'If Len(Request.Form("CardNumber")) < 15 Then
' strError = strError + " * Credit card number must be at least 15 digits in length."
'End If
'If Len(Request.Form("CardNumber")) > 16 Then
' strError = strError + " * Credit card number must be no more than 16 digits in length."
'End If
If Len(Request.Form("CCV")) <> 3 And Len(Request.Form("CCV")) <> 4 Then
strError = strError + " * Credit card CCV is missing or invalid."
End If
If strError = "" Then
ValidateCC = True
Else
ValidateCC = False
End If
End Function
Public Function AuthorizeCreditCard
Dim strSQL
Dim OrderGrandTotal
Dim AuthNetRqst
Dim AuthNetResp
Dim RespAr
Dim AuthNetLogin, AuthNetPassword
'Session("OrderID") = 189
'strSQL = "UPDATE OrderHeader SET DateApproved = '" + CStr(Now) + "' WHERE OrderID = " + CStr(Session("OrderID"))
'Response.Write Session("OrderID") & "
"
'Response.Write "*************" + CStr(OrderGrandTotal) + "**********"
AuthNetLogin = "9Km9UB2sy4z"
AuthNetPassword = "99z5uW2U2qu7Y4mt" 'rs.fields("AuthorizeDotNet_Password")
' === Store Response Information in DB regardless of response state
strSQL = "SELECT * FROM Donations WHERE DonationID = " + CStr(Session("DonationID"))
Set rsCommon = adoMyCon.Execute (strSQL)
With rsCommon
OrderGrandTotal = .Fields("DonationAmount")
If OrderGrandTotal > 0 Then ' do not try to charge credit card if amount is 0 (or less than, i guess)
'*ProcessRecordSet session("dbname"), "SELECT TOP 1 * FROM systemVariables", "LoadAuthNetVars"
'AuthNetRqst = AuthNET_BuildSubmissionRequest()
'Response.End()
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_company", Request.ServerVariables("REMOTE_ADDR"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_address", .Fields("Address1") + " " + .Fields("Address2"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_city", .Fields("City"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_state", .Fields("State"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_zip", .Fields("Zip"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_country", "USA", AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_phone", .Fields("Phone"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_email", .Fields("EMail"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_version", "3.1", AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_method", "CC", AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_freight", "0", AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_tax", "0", AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_invoice_num", Session("DonationID"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_amount", CStr(.Fields("DonationAmount")), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_card_num", .Fields("CC_Masked"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_exp_date", .Fields("CC_Month") + "/" + .Fields("CC_Year"), AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_card_code", .Fields("CC_CCV"), AuthNetRqst)
If Request.ServerVariables("REMOTE_ADDR") = "66.73.153.250" Then
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_test_request", "TRUE", AuthNetRqst)
End If
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_delim_data", "TRUE", AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_login", AuthNetLogin, AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_password", AuthNetPassword, AuthNetRqst)
AuthNetRqst = AuthNet_AddToSubmissionRequest("x_type", "AUTH_CAPTURE", AuthNetRqst)
AuthNetRqst = Replace(AuthNetRqst, "|", ":") ' Clean Request of the field delimeter
AuthNetResp = AuthNet_SubmitTransaction(AuthNetRqst)
RespAr = AuthNet_SplitTransactionResponse(AuthNetResp, "|", "*")
'Response.Write AuthNetResp
'Response.End()
IF RespAr(x_invoice_num) = "" THEN
' figure out exactly why this happens
Else
strSQL = "UPDATE Donations SET " & _
"x_auth_code = '" & RespAr(x_auth_code) & "', " & _
"x_trans_id = '" & RespAr(x_trans_id) & "', " & _
"x_resp_code = '" & RespAr(x_Response_code) & "', " & _
"x_resp_subCode = '" & RespAr(x_Response_subCode) & "', " & _
"x_resp_reason_code = '" & RespAr(x_Response_reason_code) & "', " & _
"x_resp_reason_text = '" & RespAr(x_Response_reason_text) & "', " & _
"x_avs_code = '" & RespAr(x_avs_code) & "', " & _
"x_amount = '" & RespAr(x_amount) & "' " & _
" WHERE DonationID = " & Session("DonationID")
adoMyCon.Execute strSQL
End IF
If RespAr(x_Response_Code) = 1 Then
'Response.Write "Order approved"
AuthorizeCreditCard = True
ELSE
stDeniedReason = RespAr(x_Response_reason_text)
Session("ReasonDenied") = stDeniedReason
'Response.Write "order denied: " + stDeniedReason
AuthorizeCreditCard = False
END IF
Else ' order amount was 0 or less - automatically approve
AuthorizeCreditCard = True
'Session("OrderApproved") = TRUE
End If
End With
rsCommon.Close
'ApproveOrder = False
End Function
'Public Function StoreProcessorResponse (intDonationID, strResponse)
'
' Dim strSQL
'
' strSQL = "SELECT * FROM Donations WHERE DonationID = " + CStr(DonationID)
' rsCommon.LockType = adLockOptimistic
' rsCommon.Open strSQL, adoMyCon
'
'
'End Function
Public Function SetDonationApprovalDate
Dim strSQL
strSQL = "UPDATE Donations SET ApprovalDate = '" + CStr(Now) + "' WHERE DonationID = " + CStr(Session("DonationID"))
adoMyCon.Execute strSQL
End Function
Public Function SaveCCInfo
Dim strSQL
strSQL = "SELECT * FROM Donations WHERE DonationID = " + CStr(Session("DonationID"))
rsCommon.LockType = adLockOptimistic
rsCommon.Open strSQL, adoMyCon
With rsCommon
If .Fields("DonationType") = "PLEDGE" Then
.Fields("PledgeFrequency") = Request.Form("PledgeFrequency")
Else
.Fields("CC_Masked") = Request.Form("CardNumber")
.Fields("CC_Name") = Request.Form("NameOnCard")
.Fields("CC_Month") = Request.Form("CreditCardMonth")
.Fields("CC_Year") = Request.Form("CreditCardYear")
.Fields("CC_CCV") = Request.Form("CCV")
End If
.Update
.Close
End With
End Function
Public Function GetDonationInfo
Dim strSQL
strSQL = "SELECT * FROM Donations WHERE DonationID = " + CStr(Session("DonationID"))
rsCommon.LockType = adLockOptimistic
rsCommon.Open strSQL, adoMyCon
With rsCommon
intDonationID = .Fields("DonationID")
strDonationType = .Fields("DonationType")
strDonationAmount = .Fields("DonationAmount")
strPledgeFrequency = .Fields("PledgeFrequency")
strCreditCardName = Nz(.Fields("CC_Name"))
strCreditCardNumber = Nz(.Fields("CC_Masked"))
strCreditCardMonth = Nz(.Fields("CC_Month"))
strCreditCardYear = Nz(.Fields("CC_Year"))
strCCV = Nz(.Fields("CC_CCV"))
.Close
End With
End Function
Public Function Nz(strData)
If IsNull(strData) Then
Nz = ""
Else
Nz = strData
End If
End Function
Public Sub WriteMonthSelect ()
Dim intX
Response.Write ""
End Sub
Public Sub WriteYearSelect ()
Dim intStart
Dim intStop
intStart = Year(Date)
intStop = Year(Date) + 10
Response.Write ""
End Sub
Public Sub WriteField (strName, strSize, strDefaultValue, strMaxLen, strOption)
Response.Write ""
End Sub
%>