'm using the below code based on salesfront on Windows Server 2003.
During the checkout, I get the following error.
Msxml3.dllerror '800c0008'
System error: -2146697208.
/odtmaps/ssl/SFLib/processor.
Error occurs at objHTTP.send strPost
Below is the full code.
Appreciate if anyone can give me directions in resolving the issue.
<% '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' The following constant, proc_live, controls the status of ' all payment processors supported: ' ' Const proc_live = 1 is 'live' mode ' Const proc_live = 0 is 'test' mode ' ' Before your store goes live, you are encouraged to run ' an order through with the constant set to 0 for testing. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '@BEGINVERSIONINFO '@APPVERSION: 50.4014.0.7 '@FILENAME: processor.asp '@DESCRIPTION: Processes orders based on payment types '@STARTCOPYRIGHT 'The contents of this file is protected under the United States 'copyright laws and is confidential and proprietary to 'LaGarde, Incorporated. Its use or disclosure in whole or in part without the 'expressed written permission of LaGarde, Incorporated is expressly prohibited. ' '(c) Copyright 2000,2001 by LaGarde, Incorporated. All rights reserved. '@ENDCOPYRIGHT ' #321 - MS '@ENDVERSIONINFO Function getProcStat(vData) Dim tSQL, rsProcStatus, proc_status tSQL = "SELECT trnsmthTestServerPath FROM sfTransactionMethods WHERE trnsmthdID = " & makeInputSafe(vdata) Set rsProcStatus = cnn.execute (tSQL) getProcStat = Trim(rsProcStatus("trnsmthTestServerPath")) closeobj(rsProcStatus) End Function '------------------------------------------------------------------- ' CyberCash subroutine ' Requirement: CYCHMCK.DLL 2.0 or higher ' Last edited : October 3, 2000 '------------------------------------------------------------------- Function CyberCash(proc_live) Dim Config, ccInput, Output, SocketObject, strMessage, CCID, MERCHANT_KEY, iProcResponse, ProcErrMsg Dim ProcCustNumber, ProcAddlData, ProcRefCode, ProcAuthCode, ProcMerchNumber, ProcActionCode, ProcErrLoc Dim ProcErrCode, ProcAvsCode, ProcAVSMsg Set Config = Server.CreateObject("CyberCashMCK.MessageBlock") Set ccInput = Server.CreateObject("CyberCashMCK.MessageBlock") Set Output = Server.CreateObject("CyberCashMCK.MessageBlock") ProcErrMsg = "" strMessage = "m" & sMercType CCID = trim(sLogin) MERCHANT_KEY = trim(sPassword) If trim(sPaymentServer) = "" or isNull(sPaymentServer) Then sPaymentServer = "http://cr.cybercash.com/cgi-bin/cr21api.cgi/" End If 'Provide the config parameters required for CyberCash Transaction processing Config.Add "CYBERCASH_ID", CCID Config.Add "MERCHANT_KEY", MERCHANT_KEY Config.Add "CCPS_HOST", sPaymentServer & trim(strMessage) if len(trim(sCustCardExpiry)) > 5 then sCustCardExpiry= left(sCustCardExpiry,3) & right(sCustCardExpiry,2) end if 'Provide the input parameters required for the CyberCash message (see developers guide) ccInput.Add "card-number", sCustCardNumber ccInput.Add "card-exp", sCustCardExpiry ccInput.Add "card-name", sCustCardName ccInput.Add "card-Address", sCustAddress1 & "," & sCustAddress2 ccInput.Add "card-city", sCustCity ccInput.Add "card-state", sCustState ccInput.Add "card-zip", sCustZip ccInput.Add "card-country", sCustCountry ccInput.Add "order-id", iOrderID ccInput.Add "amount", "usd " & REPLACE(sGrandTotal,",","") Set SocketObject = Server.CreateObject("CyberCashMCK.socket.1") Set Output = SocketObject.SendMessageBlock(Config, ccInput) ProcResponse = Output.Item("MStatus") 'Approved/declined If ProcResponse = "success" Then ProcResponse = "approved" iProcResponse = 1 Else ProcResponse = "failed" iProcResponse = 0 End If ProcMessage = Replace(Output.Item("aux-msg"),"'","''") 'Detailed Info ProcCustNumber = Replace(Output.Item("cust-txn"),"'","''") 'Trans Number ProcAddlData = Replace(Output.Item("addnl-response-data"),"'","''") ' AdditionalData ProcRefCode = Replace(Output.Item("ref-code"),"'","''") ProcAuthCode = Replace(Output.Item("auth-code"),"'","''") 'Authorization Code ProcMerchNumber = Replace(Output.Item("merch-txn"),"'","''") 'Merch Trans Number ProcActionCode = Replace(Output.Item("action-code"),"'","''") ProcErrMsg = Replace(Output.Item("MErrMsg"),"'","''") 'Detailed info on failure ProcErrLoc = Replace(Output.Item("MErrLoc"),"'","''") 'Location error occured ProcErrCode = Replace(Output.Item("MErrCode"),"'","''") 'CyberCash error codes ProcAvsCode = Replace(Output.Item("avs-code"),"'","''") 'CyberCash AVS code ProcAVSMsg = AVSMsg(ProcAvsCode) Call setResponse("cybercash",iOrderID,ProcCustNumber,ProcMerchNumber,ProcAvsCode,ProcAVSMsg,ProcErrCode,ProcAuthCode,ProcRefCode,ProcErrMsg,iProcResponse) Set Config = Nothing Set ccInput = Nothing Set Output = Nothing CyberCash = ProcErrMsg End Function Function AuthNet(proc_live, iType) Dim objHTTP, sCustAddress, sShipCustAddress, strPost, MType, iResponseCode, iProcResponse, sResponseReasonText, sFailedReason, sErrorMessage, iAVSCode, iTransactionID, iAuthCode, GrandTotal, sAVSMsg, sTstRqst, sTax Dim ProcCustNumber, ProcAddlData, ProcRefCode, ProcAuthCode, ProcMerchNumber, ProcActionCode, ProcErrLoc Dim ProcErrCode, ProcAvsCode, ProcAVSMsg If sMercType = "authonly" Then MType = "AUTH_ONLY" If sMercType = "authcapture" Then MType = "AUTH_CAPTURE" sCustCardName = sCustCardName iOrderID =iOrderID sShipInstructions = sShipInstructions 'Response.Write "proc_live = "& proc_live If proc_live = 1 Then sTstRqst = "false" ElseIf proc_live = 0 Then sTstRqst = "true" End If ' Customer Info sCustFirstName = sCustFirstName sCustLastName = sCustLastName sCustName = sCustName sCustCompany = sCustCompany sCustAddress1 = sCustAddress1 sCustAddress2 = sCustAddress2 sCustAddress = sCustAddress1 & ";" & sCustAddress2 sCustCity = sCustCity sCustState = sCustState sCustCountry = sCustCountry sCustZip = sCustZip sCustPhone = sCustPhone sCustFax = sCustFax sCustEmail = sCustEmail ' Payment variables sPaymentMethod = sPaymentMethod sCustCardType = sCustCardType sCustCardNumber = Replace(sCustCardNumber," ","") sCustCardNumber = Replace(sCustCardNumber,"-","") sCustCardExpiry = Replace(sCustCardExpiry,"/","") 'sCustCardExpiry = Right(sCustCardExpiry,2) sBankName = sBankName iRoutingNumber = iRoutingNumber iCheckingAccountNumber = iCheckingAccountNumber iPONumber = iPONumber iCheckNumber = iCheckNumber ' Shipping Variables sShipCustFirstName = sShipCustFirstName sShipCustLastName = sShipCustLastName sShipCustName = sShipCustName sShipCustCompany = sShipCustCompany sShipCustAddress1 = sShipCustAddress1 sShipCustAddress2 = sShipCustAddress2 sShipCustAddress = sShipCustAddress1 & ";" & sShipCustAddress2 sShipCustCity = sShipCustCity sShipCustState = sShipCustState sShipCustCountry = sShipCustCountry sShipCustZip = sShipCustZip sShipCustPhone = sShipCustPhone sLogin = sLogin iShipMethod = iShipMethod sShipping = (cDbl(sHandling) + cDbl(sShipping)) sTax = (cDbl(iSTax) + cDbl(iCTax)) iCustID = Request.Cookies("sfCustomer")("custID") GrandTotal = FormatNumber(REPLACE(sGrandTotal,",",""),2) ' post string If iType = 1 Then strPost = "x_login=" & sLogin & "&x_tran_key=" & sPassword & "&x_method=cc&x_type=" & mtype & "&x_amount=" & GrandTotal & "&x_card_num=" & sCustCardNumber & "&x_exp_date=" & sCustCardExpiry & "&x_version=3.1&x_relay_response=FALSE" & "&x_cust_id=" & iCustID & "&x_description=storefront web store order&&x_first_name=" & sCustfirstname & "&x_last_name=" & sCustlastname & "&x_company=" & sCustcompany & "&x_address=" & sCustAddress & "&x_city=" & sCustcity & "&x_state=" & sCuststate & "&x_zip=" & sCustzip & "&x_country=" & sCustcountry & "&x_phone=" & sCustphone & "&x_fax=" & sCustfax & "&x_ship_to_first_name=" _& sShipcustfirstname & "&x_ship_to_last_name=" & sShipCustlastname & "&x_ship_to_company=" & sShipCustcompany & "&x_ship_to_address=" & sShipCustAddress & "&x_ship_to_city=" & sShipCustcity & "&x_ship_to_state=" & sShipCuststate & "&x_ship_to_zip=" & sShipCustzip & "&x_ship_to_country=" & sShipCustcountry & "&x_email=" & sCustEmail & "&x_delim_data=TRUE&x_delim_char=|" ElseIf iType = 2 Then strPost = "x_login=" & sLogin & "&x_tran_key=" & sPassword & "&x_method=ECHECK&x_type=AUTH_CAPTURE&x_amount=" & sGrandTotal & "&x_bank_aba_code=" & iRoutingNumber & "&x_bank_acct_num=" & iCheckingAccountNumber & "&x_bank_acct_type=CHECKING&x_bank_name" & sBankname & "x_bank_acct_name" & sCustName & "&x_version=3.1&x_relay_response=FALSE" & "&x_cust_id=" & iCustID & "&x_description=storefront web store order&&x_first_name=" & sCustfirstname & "&x_last_name=" & sCustlastname & "&x_company=" & sCustcompany & "&x_address=" & sCustAddress & "&x_city=" & sCustcity & "&x_state=" & sCuststate & "&x_zip=" & sCustzip & "&x_country=" & sCustcountry & "&x_phone=" & sCustphone & "&x_fax=" & sCustfax & "&x_ship_to_first_name=" _& sShipcustfirstname & "&x_ship_to_last_name=" & sShipCustlastname & "&x_ship_to_company=" & sShipCustcompany & "&x_ship_to_address=" & sShipCustAddress & "&x_ship_to_city=" & sShipCustcity & "&x_ship_to_state=" & sShipCuststate & "&x_ship_to_zip=" & sShipCustzip & "&x_ship_to_country=" & sShipCustcountry & "&x_email=" & sCustEmail & "&x_delim_data=TRUE&x_delim_char=|" End If Set objHTTP=server.CreateObject("MSXML2.XMLHTTP") objHTTP.Open "post", "https://secure.authorize.net/gateway/transact.dll", False objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objHTTP.send strPost Dim strReturn strReturn = objHTTP.responseText Dim arResponse arResponse = Split(strReturn, "|") 'Used for Debugging 'dim i 'for i=0 to UBound(arResponse) ' Response.write "i=" & i & " " & arResponse(i) & "<BR>" 'next 'Response.end If UBound(arResponse) > 0 Then ProcActionCode = arResponse(0) ProcAddlData = arResponse(1) ProcErrCode = arResponse(2) ProcMessage = arResponse(3) procAuthCode = arResponse(4) ProcAvsCode = arResponse(5) ProcRefCode = arResponse(6) ProcMerchNumber = arResponse(37) '#787 DJP If IsNumeric(ProcActionCode) then If ProcActionCode = 1 Then iProcResponse = 1 ElseIf ProcActionCode = 2 Then iProcResponse = 0 sErrorMessage = arResponse(3) ElseIf ProcActionCode = 3 Then iProcResponse = 0 sErrorMessage = arResponse(3) Else ' no connection iProcResponse = 0 sErrorMessage = "There was an error on the transaction processing network.Please check the account and resubmit the order.<BR> Additional Information from the Processor: " & ProcMessage End If Else ' no connection iProcResponse = 0 sErrorMessage = "There was an error on the transaction processing network.Please check the account and resubmit the order.<BR> Additional Information from the Processor: " & ProcMessage End if 'End #787 DJP Else ' no connection iProcResponse = 0 sErrorMessage = "no connection error" End If ' write to payment ObjResponse table Call setResponse("authorizenet", iOrderID, "", ProcMerchNumber , ProcAvsCode, ProcMessage, ProcErrCode, procAuthCode, ProcRefCode, ProcErrMsg, ProcActionCode) AuthNet = sErrorMessage End Function '--------------------------------------------------------------------- ' AuthorizeNet Send Sub-Routine ' Com Object 1.0 '--------------------------------------------------------------------- Function AuthNetOLD(proc_live,iType) Dim AuthObj, sCustAddress, sShipCustAddress, strPost, MType, iResponseCode, iProcResponse, sResponseReasonText, sFailedReason, sErrorMessage, iAVSCode, iTransactionID, iAuthCode, GrandTotal, sAVSMsg, sTstRqst, sTax Dim ProcCustNumber, ProcAddlData, ProcRefCode, ProcAuthCode, ProcMerchNumber, ProcActionCode, ProcErrLoc Dim ProcErrCode, ProcAvsCode, ProcAVSMsg Set AuthObj = Server.CreateObject("AuthNetSSLConnect.SSLPost") If sMercType = "authonly" Then MType = "AUTH_ONLY" If sMercType = "authcapture" Then MType = "AUTH_CAPTURE" sCustCardName = sCustCardName iOrderID =iOrderID sShipInstructions = sShipInstructions 'Response.Write "proc_live = "& proc_live If proc_live = 1 Then sTstRqst = "false" ElseIf proc_live = 0 Then sTstRqst = "true" End If ' Customer Info sCustFirstName = sCustFirstName sCustLastName = sCustLastName sCustName = sCustName sCustCompany = sCustCompany sCustAddress1 = sCustAddress1 sCustAddress2 = sCustAddress2 sCustAddress = sCustAddress1 & ";" & sCustAddress2 sCustCity = sCustCity sCustState = sCustState sCustCountry = sCustCountry sCustZip = sCustZip sCustPhone = sCustPhone sCustFax = sCustFax sCustEmail = sCustEmail ' Payment variables sPaymentMethod = sPaymentMethod sCustCardType = sCustCardType sCustCardNumber = Replace(sCustCardNumber," ","") sCustCardNumber = Replace(sCustCardNumber,"-","") sCustCardExpiry = Replace(sCustCardExpiry,"/","") 'sCustCardExpiry = Right(sCustCardExpiry,2) sBankName = sBankName iRoutingNumber = iRoutingNumber iCheckingAccountNumber = iCheckingAccountNumber iPONumber = iPONumber iCheckNumber = iCheckNumber ' Shipping Variables sShipCustFirstName = sShipCustFirstName sShipCustLastName = sShipCustLastName sShipCustName = sShipCustName sShipCustCompany = sShipCustCompany sShipCustAddress1 = sShipCustAddress1 sShipCustAddress2 = sShipCustAddress2 sShipCustAddress = sShipCustAddress1 & ";" & sShipCustAddress2 sShipCustCity = sShipCustCity sShipCustState = sShipCustState sShipCustCountry = sShipCustCountry sShipCustZip = sShipCustZip sShipCustPhone = sShipCustPhone sLogin = sLogin iShipMethod = iShipMethod sShipping = (cDbl(sHandling) + cDbl(sShipping)) sTax = (cDbl(iSTax) + cDbl(iCTax)) iCustID = Request.Cookies("sfCustomer")("custID") GrandTotal = FormatNumber(REPLACE(sGrandTotal,",",""),2) ' Post String If iType = 1 Then strPost = "x_Login="&sLogin&",x_Amount="&sGrandTotal&",x_Freight="&sShipping&",x_Tax="&sTax&",x_Card_Num="&sCustCardNumber&",x_Exp_Date="&sCustCardExpiry&",x_Password="&sPassword&",x_Method=CC,x_Type="&MType&",x_Cust_ID="&iCustID&",x_Test_Request="&sTstRqst&",x_Cust_ID="&iCustID&",x_Description=StoreFront Web Store Order,x_First_Name="&sCustFirstName&",x_Last_Name="&sCustLastName&",x_Company="&sCustCompany&",x_Address="&sCustAddress&",x_City="&sCustCity&",x_State="&sCustState&",x_Zip="&sCustZip&",x_Country="&sCustCountry&",x_Phone="&sCustPhone&",x_Fax="&sCustFax&",x_Ship_To_First_Name="&sShipCustFirstName&",x_Ship_To_Last_Name="&sShipCustLastName&",x_Ship_To_Company="&sShipCustCompany&",x_Ship_To_Address="&sShipCustAddress&",x_Ship_To_City="&sShipCustCity&",x_Ship_To_State="&sShipCustState&",x_Ship_To_Zip="&sShipCustZip&",x_Ship_To_Country="&sShipCustCountry&",x_Email="&sCustEmail ElseIf iType = 2 Then strPost = "x_Login="&sLogin&",x_Amount="&sGrandTotal&",x_Freight="&sShipping&",x_Tax="&sTax&"x_Card_Num="&sCustCardNumber&",x_Exp_Date="&sCustCardExpiry&",x_Password="&sPassword & ",x_Method=ECHECK,x_Type=" & sMercType & ",x_Bank_Name=" & sBankName & ",x_Bank_ABA_Code=" & iRoutingNumber & ",x_Bank_Acct_Num=" & iCheckingAccountNumber & ",x_Test_Request=" & sTstRqst & ",x_Cust_ID="&iCustID&",x_Description=StoreFront Web Store Order,x_First_Name="&sCustFirstName&",x_Last_Name="&sCustLastName&",x_Company="&sCustCompany&",x_Address="&sCustAddress&",x_City="&sCustCity&",x_State="&sCustState&",x_Zip="&sCustZip&",x_Country="&sCustCountry&",x_Phone="&sCustPhone&",x_Fax="&sCustFax&",x_Ship_To_First_Name="&sShipCustFirstName&",x_Ship_To_Last_Name="&sShipCustLastName&",x_Ship_To_Company="&sShipCustCompany&",x_Ship_To_Address="&sShipCustAddress&",x_Ship_To_City="&sShipCustCity&",x_Ship_To_State="&sShipCustState&",x_Ship_To_Zip="&sShipCustZip&",x_Ship_To_Country="&sShipCustCountry&",x_Email="&sCustEmail End If AuthObj.doSSLPost strPost sShipping = sShipping - sHandling '#430 ' Error Response If AuthObj.ErrorCode = 0 Then If AuthObj.NumFields > 1 Then ProcActionCode = AuthObj.GetField(1) ProcAddlData = AuthObj.GetField(2) ProcErrCode = AuthObj.GetField(3) ProcMessage = AuthObj.GetField(4) ProcAuthCode = AuthObj.GetField(5) ProcAvsCode = AuthObj.GetField(6) ProcRefCode = AuthObj.GetField(7) If ProcActionCode = 1 Then iProcResponse = 1 ElseIf ProcActionCode = 2 Then iProcResponse = 0 sErrorMessage = "The transaction has been declined. Please check the account and resubmit, try another account or contact the card issuing bank. Thank You.<br> Additional Information from the Processor: " & ProcMessage ElseIf ProcActionCode = 3 Then iProcResponse = 0 sErrorMessage = "There was an error on the transaction processing network. Please check the account and resubmit the order.<br> Additional Information from the Processor: " & ProcMessage End If Else ' No connection iProcResponse = 0 sFailedReason = "Connection Error" sErrorMessage = "No Connection Error" End If Else Select Case AuthObj.ErrorCode Case -1 sErrorMessage = "A connection could not be established with the authorization network." Case -2 sErrorMessage = "A connection could not be established with the authorization network." Case -3 sErrorMessage = "A connection could not be established with the authorization." Case Else sErrorMessage = "An error occured during processing." End Select End If ' Write to payment response table Call setResponse("AuthorizeNet",iOrderID,"","",ProcAvsCode,ProcMessage,ProcErrCode,ProcAuthCode,ProcRefCode,ProcErrMsg,ProcActionCode) closeobj(AuthObj) AuthNet = sErrorMessage End Function '----------------------------------------------------------------------------- ' PSIGate Payment Processor ' COM object integration '----------------------------------------------------------------------------- Function PSIGate(proc_live) Dim objPsiGate, iChargeType, nRetCode, sApproved, iProcResponse, sErrorMessage, iAuthNo, iTransactionID, sFailedReason, sPemPath ' First set the response to 0 iProcResponse = 0 ' Determine chargetype If sMercType = "authonly" Then iChargeType = 1 Elseif sMercType = "authcapture" Then iChargeType = 0 ' #738 End If If trim(sPaymentServer) = "" or isNull(sPaymentServer) Then sPaymentServer = "secure.psigate.com" End If Set objPsiGate = CreateObject("MyServer.PsiGate") ' Get Path to PEM file. sPemPath = Server.MapPath(".") '#474 sPemPath = sPemPath & "\Private\" & sPassword ' Set up the request object objPsiGate.Configfile = sLogin objPsiGate.Keyfile = sPemPath objPsiGate.Host = sPaymentServer objPsiGate.Port = 1139 If proc_live = 1 Then objPsiGate.Result = 0 'live ElseIf proc_live = 0 Then objPsiGate.Result = 1 'good 'objPsiGate.Result = 2 'duplicate 'objPsiGate.Result = 3 'declined End If ' Required Customer Info objPsiGate.Bname = sCustName objPsiGate.Baddr1 = sCustAddress1 objPsiGate.Baddr2 = sCustAddress2 objPsiGate.Bcity = sCustCity objPsiGate.Bstate = sCustState objPsiGate.Bzip = sCustZip objPsiGate.Bcountry = sCustCountry objPsiGate.Oid = iOrderID objPsiGate.Userid = sCustemail objPSIgate.Email = sCustEmail '# 325 ' Credit Card Info objPsiGate.Cardnumber = sCustCardNumber objPsiGate.Chargetype = iChargeType objPsiGate.Expmonth = sCustCardExpiryMonth objPsiGate.Expyear = right(trim(sCustCardExpiryYear),2) '#324 ' Required Shipping Info objPsiGate.Items = 1 objPsiGate.Carrier = 1 nRetCode = objPsiGate.AddItem("StoreFront","StoreFront Purchase", Cdbl(sGrandTotal),1,"",0,"") If Not nRetCode = 1 Then iProcResponse = 0 ElseIf nRetCode = 1 Then iProcResponse = 1 End If ' Send the order to PSiGate nRetCode = objPsiGate.ProcessOrder() ' Error Checking If Not nRetCode = 1 Then iProcResponse = 0 ElseIf nRetCode = 1 Then iProcResponse = 1 End If ' Get Response sApproved = objPsiGate.Appr iAuthNo = objPsiGate.Code iTransactionID = objPsiGate.RefNo sFailedReason = objPsiGate.Err sErrorMessage = objPsiGate.ErrMsg ' If error occured If trim(sFailedReason) <> "" or trim(sErrorMessage) <> "" Then iProcResponse = 0 End If ' Write to response table Call setResponse("PSIGate",iOrderID,iTransactionID,"","",sFailedReason,"",iAuthNo,"",sErrorMessage,iProcResponse) Set objPsiGate = nothing PSIGate = sFailedReason & " " & sErrorMessage End Function '------------------------------------------------------------ ' LinkPoint '------------------------------------------------------------ Function LinkPoint(proc_live) '---------------------------------------------------------------------- ' Modification for ASP by Dave Lambert, dlambert@infoponic.com ' Modified for StoreFront by LaGarde Inc. ' Created from ccapi_error.h from API 3.8 '---------------------------------------------------------------------- ON ERROR RESUME NEXT Const Fail = 0 Const Succeed = 1 'Created from ccapi_client.h from API 3.8 'Request types possible for OrderField_Chargetype Const Chargetype_Auth = 0 Const Chargetype_Sale = 0 Const Chargetype_Preauth = 1 Const Chargetype_Postauth = 2 Const Chargetype_Credit = 3 Const Chargetype_Error = 0 'Result types possible for OrderField_Result Const Result_Live = 0 Const Result_Good = 1 Const Result_Duplicate = 2 Const Result_Decline = 3 'ESD types for ItemField_Esdtype Const Esdtype_None = 0 Const Esdtype_Softgood = 1 Const Esdtype_Key = 2 ' OrderField_t Const OrderField_Oid = 0 Const OrderField_Userid = 1 Const OrderField_Bcompany = 2 Const OrderField_Bcountry = 3 Const OrderField_Bname = 4 Const OrderField_Baddr1 = 5 Const OrderField_Baddr2 = 6 Const OrderField_Bcity = 7 Const OrderField_Bstate = 8 Const OrderField_Bzip = 9 Const OrderField_Sname = 10 Const OrderField_Saddr1 = 11 Const OrderField_Saddr2 = 12 Const OrderField_Scity = 13 Const OrderField_Sstate = 14 Const OrderField_Szip = 15 Const OrderField_Scountry = 16 Const OrderField_Phone = 17 Const OrderField_Fax = 18 Const OrderField_Refer = 19 Const OrderField_Shiptype = 20 Const OrderField_Shipping = 21 Const OrderField_Tax = 22 Const OrderField_Subtotal = 23 Const OrderField_Vattax = 24 Const OrderField_Comments = 25 Const OrderField_MaxItems = 26 Const OrderField_Email = 27 Const OrderField_Cardnumber = 28 Const OrderField_Expmonth = 29 Const OrderField_Expyear = 30 Const OrderField_Chargetype = 31 Const OrderField_Chargetotal = 32 Const OrderField_Referencenumber = 33 Const OrderField_Result = 34 Const OrderField_Addrnum = 35 Const OrderField_Ip = 36 ' Responses Const OrderField_R_Time = 37 Const OrderField_R_Ref = 38 Const OrderField_R_Approved = 39 Const OrderField_R_Code = 40 Const OrderField_R_Ordernum = 41 Const OrderField_R_Error = 42 Const OrderField_R_FraudCode = 43 ' ReqField_t Const ReqField_Configfile = 0 Const ReqField_Keyfile = 1 Const ReqField_Appname = 2 Const ReqField_Host = 3 Const ReqField_Port = 4 ' ItemField_t Const ItemField_Itemid = 0 Const ItemField_Description = 1 Const ItemField_Price = 2 Const ItemField_Quantity = 3 Const ItemField_Softfile = 4 Const ItemField_Esdtype = 5 Const ItemField_Serial = 6 Const ItemField_MaxOptions = 7 ' ShippingField_t Const ShippingField_Country = 0 Const ShippingField_State = 1 Const ShippingField_Total = 2 Const ShippingField_Items = 3 Const ShippingField_Weight = 4 Const ShippingField_Carrier = 5 ' Responses Const ShippingField_R_Total = 6 ' TaxField_t Const TaxField_State = 0 Const TaxField_Zip = 1 Const TaxField_Total = 2 ' Responses Const TaxField_R_Total = 3 ' OptionField_t Const OptionField_Option = 0 Const OptionField_Choice = 1 Dim total, ApiDriver, OrderCtx, ItemCtx, OptionCtx, ReqCtx, PemPath, Flag, ProcResponse, iProcResponse, ProcErrMessage Dim ProcMessage, ProcActionCode, ProcResponseCode, ProcAuthCode, ProcErrMsg, ProcCustNumber Dim ProcRefCode, ProcAvsCode, ProcAvsMsg, Result_Type, ProcAuth Set ApiDriver = Server.CreateObject("ComApi_3_8.ComApi") 'Set ApiDriver = Server.CreateObject("ComApi_3_8.ComApi.1") If sPaymentServer = "" or IsNull(sPaymentServer) Then 'If proc_live = 1 Then sPaymentServer = "secure.linkpt.net" ' ElseIf proc_live = 0 Then ' sPaymentServer = "staging.linkpt.net" ' End If End If OrderCtx = ApiDriver.csi_order_alloc() ReqCtx = ApiDriver.csi_req_alloc() ' Get Path to PEM file. PemPath = Server.MapPath(".") '#474 PemPath = PemPath & "\Private\sf.pem" PemPath = Replace(PemPath, "\\", "\") Flag = ApiDriver.csi_req_set(ReqCtx, ReqField_Configfile, CStr(sLogin)) Flag = ApiDriver.csi_req_set(ReqCtx, ReqField_Keyfile, CStr(PemPath)) Flag = ApiDriver.csi_req_set(ReqCtx, ReqField_Host, CStr(sPaymentServer)) Flag = ApiDriver.csi_req_set(ReqCtx, ReqField_Port, 1139) Flag = ApiDriver.csi_order_setrequest(OrderCtx, ReqCtx) If ApiDriver.bStat <> Succeed Then ProcResponse = "fail" iProcResponse = 0 ProcErrMessage = "Error: " & ApiDriver.csi_util_errorstr(ApiDriver.csi_order_error(OrderCtx)) 'Set ApiDriver = nothing 'Exit Function End If Dim sAddrNum Dim iPosit sAddrNum = Trim(sCustAddress1) iPosit = InStr(sAddrNum, " ") If iPosit > 0 Then sAddrNum = Left(sAddrNum,iPosit - 1) End If If Not IsNumeric(sAddrNum) then sAddrNum = "0000" End If ' Get expiration date of credit card sCustCardExpiry = Replace(sCustCardExpiry,"/","") sCustCardExpiry = Replace(sCustCardExpiry,"-","") sCustCardExpiry = Replace(sCustCardExpiry," ","") Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Userid, CStr(iOrderID)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Bname, CStr(sCustCardName)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Bcompany, CStr(sCustCompany)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Baddr1, CStr(sCustAddress1)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Bcity, CStr(sCustCity)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Bstate, CStr(sCustState)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Bzip, CStr(sCustZip)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Bcountry, CStr(sCustCountry)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Sname, CStr(sShipCustName)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Saddr1, CStr(sShipCustAddress1)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Scity, CStr(sShipCustCity)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Sstate, CStr(sShipCustState)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Szip, CStr(sShipCustZip)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Scountry, CStr(sShipCustCountry)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Phone, CStr(sCustPhone)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Fax, CStr(sCustFax)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Comments, CStr(sShipInstructions)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Cardnumber, CStr(sCustCardNumber)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Addrnum, sAddrNum) 'Set Flag for Authorization Only or Charge If sMercType = "authonly" Then Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_ChargeType, Chargetype_Preauth) ElseIf sMercType = "authcapture" Then Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_ChargeType, Chargetype_Sale) End If Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Expmonth, CStr(sCustCardExpiryMonth)) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Expyear, CStr(right(sCustCardExpiryYear,2))) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Email, CStr(sCustEmail)) ' Testing or Live switch If proc_live = 1 Then Result_Type = Result_Live ElseIf proc_live = 0 Then Result_Type = Result_Good End If Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Result, 0) Flag = ApiDriver.csi_order_set(OrderCtx, OrderField_Chargetotal, CDbl(sGrandTotal)) Flag = ApiDriver.csi_order_process(OrderCtx) If ApiDriver.bStat <> Succeed Then ProcResponse = "fail" iProcResponse = 0 ProcErrMessage = "Error: " & ApiDriver.csi_util_errorstr(ApiDriver.csi_order_error(OrderCtx)) 'Set ApiDriver = nothing 'Exit Function Else ProcMessage = ApiDriver.csi_order_get(OrderCtx, OrderField_R_Time) ProcActionCode = ApiDriver.csi_order_get(OrderCtx, OrderField_R_Ref) ProcResponseCode = ApiDriver.csi_order_get(OrderCtx, OrderField_R_Approved) ProcAuth = ApiDriver.csi_order_get(OrderCtx, OrderField_R_Code) ProcErrMessage = ApiDriver.csi_order_get(OrderCtx, OrderField_R_Error) ProcCustNumber = ApiDriver.csi_order_get(OrderCtx, OrderField_R_Ordernum) End If If ProcResponseCode = "APPROVED" Then ProcResponse = "approve" iProcResponse = 1 ProcAuthCode = Mid(ProcAuth, 1, 6) ProcRefCode = Mid(ProcAuth, 7, 10) ProcAvsCode = Mid(ProcAuth, 17, 3) ProcAvsMsg = AVSMsg(ProcAvsCode) Else ProcResponse = "fail" ProcErrMessage ="Your transaction was NOT successful. Please verify your payment information and try again." 'ProcErrMessage = "Error: " & ApiDriver.csi_util_errorstr(ApiDriver.csi_order_error(OrderCtx)) iProcResponse = 1 End If Flag = ApiDriver.csi_order_drop(OrderCtx) Flag = ApiDriver.csi_req_drop(ReqCtx) Set ApiDriver = nothing Call setResponse("LinkPoint",iOrderID,ProcCustNumber,"",ProcAvsCode,ProcAvsMsg,ProcActionCode,ProcAuthCode,ProcResponseCode,ProcErrMessage,iProcResponse) LinkPoint = ProcErrMessage End Function '---------------------------------------------------------------------------- ' PayPal Transaction Processing '---------------------------------------------------------------------------- Function PayPal Dim sPath, ppPath, ppCmd, sPaymentServer, ppAmount, iShipID Dim sReturn, ppBusiness, ppItem_Name, ppQuantity, PaymentString, SndPayment Dim ppOrderID, ppCustom, ppReturn, ppItem_Number, sInstructions 'ADMIN VARIABLES FOR PAYPAL If sPaymentServer = "" Then '#462 sPaymentServer = "https://www.paypal.com/xclick/?" End If sPath = "http://"&Request.ServerVariables("HTTP_HOST")&Request.ServerVariables("URL") sPath = Replace(sReturn,"verify.asp","/admin/sfReports1.asp?OrderID=" & iOrderID) If Request.ServerVariables("HTTPS") = "off" Then sReturn = "http://"&Request.ServerVariables("HTTP_HOST")&Request.ServerVariables("URL") Else sReturn = "https://"&Request.ServerVariables("HTTP_HOST")&Request.ServerVariables("URL") End If sReturn = Replace(sReturn,"verify.asp","confirm.asp") ppCmd = "_xclick" ppBusiness = sLogin ppReturn = sReturn ppItem_Name = Server.URLEncode(C_STORENAME & " Order") ppQuantity = "1" ppItem_Number = Session("SessionID") ppReturn = sReturn ppAmount = FormatCurrency(cDbl(sTotalPrice) + cDbl(sHandling) + cDbl(sShipping) + cDbl(iSTax) + cDbl(iCTax)) ppOrderID = Server.URLEncode(iOrderID) '#504 om line 663 ppCustom = Server.URLEncode(sCustCompany)&"|"&Server.URLEncode(sCustPhone)&_"|"&bCustSubscribed&"|"&Server.URLEncode(sShipCustName)&_"|"&Server.URLEncode(sShipCustCompany) &"|"&Server.URLEncode(sShipCustAddress1)&_"|"&Server.URLEncode(sShipCustAddress2)&"|"&Server.URLEncode(sShipCustState)&_"|"&Server.URLEncode(sShipCustCity)&"|"&Server.URLEncode(sShipCustZip)&_"|"&Server.URLEncode(sShipCustCountry)&"|"&Server.URLEncode(sShipCustPhone)&_"|"&Server.URLEncode(sShipCustFax)&"|"&Server.URLEncode(sShipCustEmail)&_"|"&Server.URLEncode(sShipInstructions)&"|"&Server.URLEncode(iShipMethod)&_"|"&Server.URLEncode(sShipMethodName)&"|"&Server.URLEncode(iPremiumShipping)&_"|"&Server.URLEncode(sLogin)&"|"&Server.URLEncode(sPassword)&"|"&iAddrID PaymentString = "cmd="&ppCmd&"&business="&ppBusiness&"&return="&ppReturn PaymentString = PaymentString&"&item_name="&ppItem_Name&"&amount="&ppAmount PaymentString = PaymentString&"&item_number="&ppItem_Number PaymentString = PaymentString&"¬ify_url="&ppReturn&"&custom="&ppCustom PaymentString = sPaymentServer&PaymentString 'response.redirect PaymentString Response.Write "<SCRIPT LANGUAGE=javascript>" & vbCrlf Response.Write "<!--" & vbCrlf Response.Write " window.location =" & Chr(34) & PaymentString & chr(34) & vbcrlf Response.Write "//-->" & vbcrlf Response.Write "</SCRIPT>" Response.End End Function '------------------------------------------------------------------- ' PayPal Response Function '------------------------------------------------------------------- Sub PayPalResp(iFlag) iCustID = Trim(Request.Cookies("sfCustomer")("custID")) sCustFirstName = Trim(Request.Form("first_name")) sCustMiddleInitial = Trim(Request.Form("last_name")) sCustAddress1 = Trim(Request.Form("address_street")) sCustCity = Trim(Request.Form("address_city")) sCustState = Trim(Request.Form("address_state")) sCustZip = Trim(Request.Form("address_zip")) sCustCountry = Trim(Request.Form("address_country")) sCustEmail = Trim(Request.Form("payer_email")) sPaymentMethod = "PayPal Transaction" Session("SessionID") = Trim(Request.Form("item_number")) arrCustom = Request.Form("Custom") arrCustom = Split(Request.Form("Custom"),"|") sCustCompany = Replace(arrCustom(0),"|","") sCustPhone = Replace(arrCustom(1),"|","") bCustSubscribed = Replace(arrCustom(2),"|","") sShipCustName = Replace(arrCustom(3),"|","") sShipCustCompany = Replace(arrCustom(4),"|","") sShipCustAddress1 = Replace(arrCustom(5),"|","") sShipCustAddress2 = Replace(arrCustom(6),"|","") sShipCustState = Replace(arrCustom(7),"|","") sShipCustCity = Replace(arrCustom(8),"|","") sShipCustZip = Replace(arrCustom(9),"|","") sShipCustCountry = Replace(arrCustom(10),"|","") sShipCustPhone = Replace(arrCustom(11),"|","") sShipCustFax = Replace(arrCustom(12),"|","") sShipCustEmail = Replace(arrCustom(13),"|","") sShipInstructions = Replace(arrCustom(14),"|","") iShipMethod = Replace(arrCustom(15),"|","") sShipMethodName = Replace(arrCustom(16),"|","") iPremiumShipping = Replace(arrCustom(17),"|","") sLogin = Replace(arrCustom(18),"|","") sPassword = Replace(arrCustom(19),"|","") iAddrID = Replace(arrCustom(20),"|","") Dim ProcErrMsg, ProcResponse, iProcResponse, ProcMerchNumber, iTransactionID, ProcRefCode, ProcAvsCode, ProcAvsMsg If Request.Form("payment_status") = "Failed" Then ProcErrMsg = "This Pay Pal transaction has failed. Please re-try your payment" ElseIf Request.Form("payment_status") = "Completed" OR Request.Form("payment_status") = "Pending" Then ProcResponse = Request.Form("payment_status") ProcMerchNumber = Request.Form("verify_sign") iTransactionID = Request.Form("txn_id") ProcRefCode = Request.Form("txn_id") ProcAvsCode = "not applicable" ProcAvsMsg = "not applicable" End If ' Write to response table ' #321 Added the If Condition If Trim(iFlag) = "2" Then Call setResponse("paypal", iOrderID, iTransactionID, ProcMerchNumber, ProcAvsCode, ProcAvsMsg, ProcResponse, ProcRefCode, "", ProcErrMsg, iProcResponse) End If ' Call setResponse("PayPal",iOrderID,iTransactionID,ProcMerchNumber ,ProcAvsCode,ProcAVSMsg,ProcResponse,ProcRefCode,"",ProcErrMsg,iProcResponse) ProcErrMsg = ProcErrMsg End Sub '----------------------------------------------------------------------------- ' WorldPay Processing Function ' Update on Oct 19,2001 'Compatible with version 1.07 '----------------------------------------------------------------------------- Function WorldPay(proc_live) Dim wpAmount, wpOrderID, wpCustom, FromDate, ToDate, From, ToD, wpContinue, wpDescription, sTstRqst, sfprotocal Dim purchase, setInstallationId, setCartId, setShopperId, setCurrencyISOCode, setAmount, setAuthMode, setValidDates, setTestMode, process, hadError, hasMoreErrors Dim csCompany, csName, csAddress, csCity, csState, csCountry, csZip, csPhone, csFax, csEmail, sReturn, iShipID csCompany = sCustCompany csName = sCustFirstName & " " & sCustLastName csAddress = sCustAddress1 & " " & sCustAddress2 & " " & sCustCity & " " & sCustState csCountry = sCustCountry csZip = sCustZip csPhone = sCustPhone csFax = sCustFax csEmail = sCustEmail If Request.ServerVariables("HTTPS") = "off" Then sReturn = "http://"&Request.ServerVariables("HTTP_HOST")&Request.ServerVariables("URL") sfprotocal = "0" sReturn = Replace(sReturn,"verify.asp","confirm.asp") sReturn = Replace(sReturn,"http://","") Else sReturn = "https://"&Request.ServerVariables("HTTP_HOST")&Request.ServerVariables("URL") sfprotocal = "1" sReturn = Replace(sReturn,"verify.asp","confirm.asp") sReturn = Replace(sReturn,"https://","") End If If proc_live = 1 Then sTstRqst = "0" ElseIf proc_live = 0 Then sTstRqst = "100" End If wpDescription = C_STORENAME & " Order" wpAmount = cDbl(sTotalPrice) + cDbl(sHandling) + cDbl(sShipping) + cDbl(iSTax) + cDbl(iCTax) wpOrderID = Server.URLEncode(iOrderID) set purchase = Server.CreateObject("WorldPay.COMpurchase") Call purchase.init("") Call purchase.setInstallationId(sLogin) 'Call purchase.setCartId(Session("SessionID")) Call purchase.setShopperId(wpOrderID) Call purchase.setCurrencyISOCode(CurrencyISO) Call purchase.setAmount(wpAmount) Call purchase.setDescription(wpDescription) Call purchase.setName(csName) Call purchase.SetAddress(csAddress) Call purchase.setCountryISOCode(csCountry) Call purchase.SetPostCode(csZip) Call purchase.SetTelephone(csPhone) Call purchase.SetFax(csFax) Call purchase.SetEmail(csEmail) Call purchase.SetParameter("M_sFName",sCustFirstName) Call purchase.SetParameter("M_sLName",sCustLastName) Call purchase.SetParameter("M_sCompany",sCustCompany) Call purchase.SetParameter("M_sAddress1",sCustAddress1) Call purchase.SetParameter("M_sAddress2",sCustAddress2) Call purchase.SetParameter("M_sCity",sCustCity) Call purchase.SetParameter("M_sState",sCustState) Call purchase.SetParameter("M_sCountry",sCustCountry) Call purchase.SetParameter("M_sFax",sCustFax) Call purchase.SetParameter("M_iShipID",iAddrID) Call purchase.SetParameter("M_sShipName",sShipCustFirstName&"|"&sShipCustLastName) Call purchase.SetParameter("M_sShipCompany",sShipCustCompany) Call purchase.SetParameter("M_sShipAddress",sShipCustAddress1&"|"&sShipCustAddress2) Call purchase.SetParameter("M_sShipCity",sShipCustCity) Call purchase.SetParameter("M_sShipState",sShipCustState) Call purchase.SetParameter("M_sShipCountry",sShipCustCountry) Call purchase.SetParameter("M_sShipZip",sShipCustZip) Call purchase.SetParameter("M_sShipPhone",sShipCustPhone) Call purchase.SetParameter("M_ShipMethod",iShipMethod&"|"&sShipMethodName) Call purchase.SetParameter("M_bPremiumShipping",bPremiumShipping) Call purchase.SetParameter("M_sShipInstructions",sShipInstructions) Call purchase.SetParameter("M_merchURL",sfprotocal&"|"&sReturn) Call purchase.setAuthMode(purchase.AUTHMODE_full) From = Year(FromDate) & "-" & Month(FromDate) & "-" & Day(FromDate) & "/" & Hour(FromDate) & ":" & Minute(FromDate) & ":" & Second(FromDate) ToD = Year(ToDate) & "-" & Month(ToDate) & "-" & Day(ToDate) & "/" & Hour(ToDate) & ":" & Minute(ToDate) & ":" & Second(ToDate) Call purchase.setValidDates(From, ToD) ' Use test mode? Call purchase.setTestMode(sTstRqst) purchase.process() If purchase.hadError() then REM -- Display the errors Response.Write("<UL>") While purchase.hasMoreErrors() Response.Write "<LI>" & purchase.getNextError() & "</LI>" Wend Response.Write("</UL>") Response.End End If 'response.redirect purchase.produce 'begin #671 DJP Response.Write "<form id='WorldPay' name='WorldPay' ></form>" & vbcrlf Response.Write "<SCRIPT LANGUAGE=javascript>" & vbCrlf Response.Write "<!--" & vbCrlf 'Response.Write " window.location =" & Chr(34) & purchase.produce & chr(34) & vbcrlf Response.Write "window.document.forms('WorldPay').method = 'post';" & vbcrlf Response.Write "window.document.forms('WorldPay').action = '" & purchase.produce & "';" & vbcrlf Response.Write "window.document.forms('WorldPay').submit();" & vbcrlf Response.Write "//-->" & vbcrlf Response.Write "</SCRIPT>" Response.end 'end #671 DJP End Function '---------------------------------------------------------------------------- ' WorldPay Response Function '---------------------------------------------------------------------------- Sub WorldPayResp(iFlag) Dim sShipCustAddress, sShipCustName, ShipMethod sPaymentMethod = "WorldPay" iCustID = Trim(Request.Cookies("sfCustomer")("custID")) sCustName = Trim(Request.QueryString("sCustName")) sCustCompany = Trim(Request.QueryString("sCustCompany")) sCustAddress1 = Trim(Request.QueryString("sCustAddress1")) sCustAddress2 = Trim(Request.QueryString("sCustAddress2")) sCustCity = Trim(Request.QueryString("sCustCity")) sCustState = Trim(Request.QueryString("sCustState")) sCustZip = Trim(Request.QueryString("sCustZip")) sCustCountry = Trim(Request.QueryString("sCustCountry")) sCustPhone = Trim(Request.QueryString("sCustPhone")) sCustFax = Trim(Request.QueryString("sCustFax")) sCustEmail = Trim(Request.QueryString("CustomerEmail")) bCustSubscribed = Trim(Request.QueryString("bCustSubscribed")) iPremiumShipping = Trim(Request.QueryString("iPremiumShipping")) sShipCustName = Split(Request.QueryString("sShipCustName"),"|") sShipCustFirstName = sShipCustName(0) sShipCustLastName = sShipCustName(1) sShipCustCompany = Trim(Request.QueryString("sShipCustCompany")) sShipCustAddress = Split(Request.QueryString("sShipCustAddress"),"|") sShipCustAddress1 = sShipCustAddress(0) sShipCustAddress2 = sShipCustAddress(1) sShipCustCity = Trim(Request.QueryString("sShipCustCity")) sShipCustState = Trim(Request.QueryString("sShipCustState")) sShipCustZip = Trim(Request.QueryString("sShipCustZip")) sShipCustCountry = Trim(Request.QueryString("sShipCustCountry")) sShipCustPhone = Trim(Request.QueryString("sShipCustPhone")) sShipCustFax = Trim(Request.QueryString("sShipCustFax")) sShipCustEmail = Trim(Request.QueryString("sShipCustEmail")) ShipMethod = Split(Request.QueryString("ShipMethod"),"|") iShipMethod = ShipMethod(0) sShipMethodName = ShipMethod(1) sShipInstructions = Trim(Request.QueryString("sShipInstructions")) iAddrID = Trim(Request.QueryString("iShipID")) Dim ProcErrMsg, ProcResponse, iProcResponse, ProcMerchNumber, iTransactionID, ProcRefCode, ProcAvsCode, ProcAvsMsg, Auth, TransTime, AuthMode iTransactionID = Request.QueryString("TransID") ProcResponse = Request.QueryString("RawAuthMessage") ProcRefCode = Request.QueryString("RawAuthCode") TransTime = Request.QueryString("TransTime") AuthMode = Request.QueryString("AuthMode") Auth = Request.QueryString("Auth") ProcMerchNumber = Request.QueryString("InstID") iCustID = Trim(Request.Cookies("sfCustomer")("custID")) If Auth Then ProcResponse = ProcResponse ProcMerchNumber = ProcMerchNumber iTransactionID = iTransactionID ProcRefCode = ProcRefCode ProcAvsCode = "not applicable" ProcAvsMsg = "not applicable" Else ProcErrMsg = "This transaction has failed. Please re-try your payment" End If ' Write to response table If iFlag = "2" Then Call setResponse("WorldPay",iOrderID,iTransactionID,ProcMerchNumber ,ProcAvsCode,ProcAVSMsg,ProcResponse,ProcRefCode,"",ProcErrMsg,iProcResponse) ProcErrMsg = ProcErrMsg End If Dim oCustRow Set oCustRow = getRow("sfCustomers", "custid", iCustID, cnn) if (oCustRow.EOF = False) then sPassword = oCustRow("custPasswd") end if End Sub '----------------------------------------------------------------------------- ' Verisign's Signio PayProFlow Subroutine '----------------------------------------------------------------------------- Function SignioPayProFlow(proc_live) Dim ccExp_Date, obj, ccAddress, Amt, TrxType, ObjResult, i, aPos, GrandTotal, iProcResponse, ProcRspMsg, ProcFailedMsg, strIn, aTemp,iTransactionID, iAuthCode, sAVSMsg Dim sAVSADDR, sAVSZIP, sAVSMsg1, sAVSMsg2, ParmList, Ctx1, ProcMerchTransNum GrandTotal = FormatCurrency(sGrandTotal,2) ccExp_Date = sCustCardExpiryMonth & right(sCustCardExpiryYear,2) 'Issue #271 ccAddress = sCustAddress1 & " " & sCustAddress2 Amt = GrandTotal Amt = Mid(Amt,2) sMercType = UCase(sMercType) If sMercType = "AUTHCAPTURE" Then TrxType = "S" ElseIf sMercType = "AUTHONLY" Then TrxType = "A" End If ' New for Faud Checking 'ParmList = "TRXTYPE=" & TrxType & "&TENDER=C&USER=" & sLogin & "&PWD=" & sPassword & "&ACCT=" & sCustCardNumber & "&EXPDATE=" & ccExp_Date & "&AMT=" & Amt & "&ZIP=" & sCustZip & "&STREET=" & sCustAddress1 'Issue #260 ParmList = "TRXTYPE=" & TrxType & "&TENDER=C&USER=" & sLogin & "&PWD=" & sPassword & "&ACCT=" & sCustCardNumber & "&EXPDATE=" & ccExp_Date & "&AMT=" & Amt & "&ZIP=" & sCustZip & "&City=" & sCustCity & "&State="& sCustState & "&STREET="& sCustAddress1 & "&PhoneNum="& sCustPhone & "&Country=" & sCustCountry & "&CUSTIP="& aReferer(2) & "&EMAIL=" & sCustEmail & "&FirstName=" & sCustFirstName & "&LastName="& sCustLastName & "&ShipFirstName=" & sShipCustFirstName & "&ShipLastName=" & sShipCustLastName & "&ShiptoCountry=" & sShipCustCountry & "&ShipToCity=" & sShipCustCity & "&ShiptoState=" & sShipCustState & "&ShipToZip=" & sShipCustZip 'Issue #260 If sTransMethod = "17" Then Set obj = Server.CreateObject("PFProSSControl.PFProSSControl2.1") If trim(sPaymentServer) = "" or isNull(sPaymentServer) Then If proc_live = 1 Then sPaymentServer = "payflow.verisign.com" ElseIf proc_live = 0 Then sPaymentServer = "test-payflow.verisign.com" End If End If Ctx1 = obj.CreateContext(sPaymentServer, 443, 30, "", 0, "", "") strIn = obj.SubmitTransaction(Ctx1, ParmList, Len(ParmList)) obj.DestroyContext (Ctx1) ElseIf sTransMethod = "3" Then Set obj = Server.CreateObject("PFProSSControl.PFProSSControl.1") If trim(sPaymentServer) = "" or isNull(sPaymentServer) Then If proc_live = 1 Then sPaymentServer = "payflow.verisign.com" ElseIf proc_live = 0 Then sPaymentServer = "test-payflow.verisign.com" End If End If ' Create object and process it obj.HostAddress = sPaymentServer obj.HostPort = 443 obj.TimeOut = 30 obj.DebugMode = 1 obj.ParmList = ParmList obj.PNInit() obj.ProcessTransaction() strIn = obj.Response obj.PNCleanup End If aPos = split(strIn, "&") For i = 0 to UBOUND(aPos) If Instr(aPos(i),"RESULT") > 0 Then aTemp = split(aPos(i),"=") ProcResponse = Trim(aTemp(1)) End If If Instr(aPos(i),"RESPMSG") > 0 Then aTemp = split(aPos(i),"=") ProcRspMsg = Trim(aTemp(1)) End If If Instr(aPos(i),"PNREF") > 0 Then aTemp = split(aPos(i),"=") iTransactionID = Trim(aTemp(1)) End If If Instr(aPos(i),"AUTHCODE") > 0 Then aTemp = split(aPos(i),"=") iAuthCode = Trim(aTemp(1)) End If If Instr(aPos(i),"ERRMSG") > 0 Then aTemp = split(aPos(i),"=") ProcErrMsg = Trim(aTemp(1)) End If If Instr(aPos(i),"AVSADDR") > 0 Then aTemp = split(aPos(i),"=") sAVSADDR = Trim(aTemp(1)) sAVSMsg1 = AVSMsg(sAVSADDR) End If If Instr(aPos(i),"AVSZIP") > 0 Then aTemp = split(aPos(i),"=") sAVSZIP = ProcAvsCode & Trim(aTemp(1)) sAVSMsg2 = AVSMsg(sAVSZIP) End If ' Added for Faud Checking If Instr(aPos(i),"ERRCODE") > 0 Then aTemp = split(aPos(i),"=") ProcFailedMsg = Trim(aTemp(1)) End If If Instr(aPos(i),"FRAUDCODE") > 0 Then aTemp = split(aPos(i),"=") ProcMerchTransNum = "<br>FraudCode: " & Trim(aTemp(1)) ' Item4 End If If Instr(aPos(i),"SCORE") > 0 Then aTemp = split(aPos(i),"=") ProcMerchTransNum = ProcMerchTransNum & "<br>Score: " & Trim(aTemp(1)) 'Item4 End If If Instr(aPos(i),"FRAUDMSG") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = "Fraud Msg: " & Trim(aTemp(1)) End If If Instr(aPos(i),"REASON1") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActioncode & "<br>Reason 1: " & Trim(aTemp(1)) End If If Instr(aPos(i),"REASON2") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Reason 2: " & Trim(aTemp(1)) End If If Instr(aPos(i),"REASON3") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Reason 3: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION1") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 1: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION2") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 2: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION3") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 3: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION4") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 4: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION5") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 5: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION6") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 6: " & Trim(aTemp(1)) End If If Instr(aPos(i),"EXCEPTION7") > 0 Then aTemp = split(aPos(i),"=") ProcActionCode = ProcActionCode & "<br>Exception 7: " & Trim(aTemp(1)) End If Next ' The AVSCode is a combination of ADDR and ZIP AVS codes ProcAvsCode = sAVSADDR & sAVSZIP sAVSMsg = sAVSMsg1 & ";" & sAVSMsg2 ' Failed or not If ProcResponse = 0 Then iProcResponse = 1 Else iProcResponse = 0 If ProcResponse = "-1" Then ProcFailedMsg = "Server Socket Unavailable" ElseIf ProcResponse = "-2" Then ProcFailedMsg = "Hostname lookup failed" ElseIf ProcResponse = "-3" Then ProcFailedMsg = "Server Timed Out" ElseIf ProcResponse = "-4" Then ProcFailedMsg = "Socket Initialization Error" ElseIf ProcResponse = "-5" Then ProcFailedMsg = "SSL Context Initialization Failed" ElseIf ProcResponse = "-6" Then ProcFailedMsg = "SSL Verification Policy Failure" ElseIf ProcResponse = "-7" Then ProcFailedMsg = "SSL Verify Location Failed" ElseIf ProcResponse = "-8" Then ProcFailedMsg = "X509 Certification Verification Error" Else ProcFailedMsg = "General Processing Error - Please try to notify the merchant" End If ProcFailedMsg = ProcFailedMsg & " " & ProcErrMsg & " " & ProcRspMsg End If Set obj = Nothing ' Write to response table Call setResponse("Signio PFP",iOrderID,iTransactionID,ProcMerchTransNum,ProcAvsCode,sAVSMsg,ProcActionCode,iAuthCode,"",ProcFailedMsg ,iProcResponse) SignioPayProFlow = ProcFailedMsg End Function '-------------------------------------------------------------------------- ' SecurePay Function '-------------------------------------------------------------------------- Function SecurePay(proc_live) Dim objOrder, sActionCode, iProcResponse, iTransactionID, sErrorMessage, iAVSCode, sAvsMsg, orderAVSREQ Dim SPCOM_Response, sNewVar, sSP_Array, sReturn_Code, sApprov_Num, sCard_Response, sAVS_Response, sTr_Type If trim(sPaymentServer) = "" or isNull(sPaymentServer) Then sPaymentServer = "https://processing.securepay.net/secure1/index.asp" End If ' Testing or live mode If proc_live = 1 Then orderAVSREQ = "1" ElseIf proc_live = 0 Then orderAVSREQ = "4" 'Set the transaction type. Added multiple Tr_types 12/11/2002 TR if sMercType <> "" Then select case uCase(sMercType) case "AUTHONLY" sTr_Type="PREAUTH" case "AUTHCREDIT" sTr_Type="CREDIT" case else sTr_Type="SALE" end select else sTr_Type="SALE" end if End If 'create instance of component Set objOrder = Server.CreateObject("SPCOM.clsSecureSend") objOrder.URL = sPaymentServer objOrder.Amount = FormatNumber(sGrandTotal,2,0,0,0) objOrder.AVSREQ = orderAVSREQ objOrder.Street = sCustAddress1 & " " & sCustAddress2 objOrder.City = sCustCity objOrder.State = sCustState objOrder.Zip = sCustZip objOrder.NameOnCard = sCustCardName objOrder.CreditCardNumber = sCustCardNumber objOrder.Email = sCustEmail objOrder.Month = sCustCardExpiryMonth objOrder.Year = right(sCustCardExpiryYear,2) objOrder.Merch_ID = sLogin objOrder.tr_type = sTr_Type objOrder.Send SPCOM_Response = objOrder.ReturnCode Set objOrder = Nothing if instr(1,SPCOM_Response,",") then sNewVar = cStr(SPCOM_Response) sSP_Array = Split(sNewVar, ",") sActionCode = sSP_Array(0) sApprov_Num = sSP_Array(1) sCard_Response = sSP_Array(2) sAVS_Response = sSP_Array(3) else sCard_Response=SPCOM_Response end if If sActionCode = "Y" Then iProcResponse = 1 Else iProcResponse = 0 sErrorMessage = sCard_Response End If iTransactionID = sApprov_Num iAVSCode = sAVS_Response sAvsMsg = AVSMsg(iAvsCode) Call setResponse("SecurePay",iOrderID,iTransactionID,"",iAVSCode,sAvsMsg,sActionCode,"","",sErrorMessage,iProcResponse) SecurePay = sErrorMessage End Function '------------------------------------------------------------------------------------- ' SurePay Sub-routine '------------------------------------------------------------------------------------- Function SurePay(proc_live) Dim objXML, pp, auth, credit, addr, ship_addr, lineitem, ordertext, strXML, strMode, strDTD, ISO, strHeader, strResponse Dim TOTAL, PROD_ID, PROD_DESC, PROD_QUANTITY, PROD_UNIT, strInsert, xmlResponse, strBool, objElement Dim ProcErrMsg, ProcMessage, ProcErrLoc, ProcErrCode, ProcCustNumber, ProcMerchNumber, ProcAddlData, ProcRefCode, ProcAVSZip Dim iProcResponse, strAuth, authMsg, iAVSCode, sAVSMsg, iTransactionID Dim ORDER_TEXT ' Fix up the total ISO = FindCurrencyIso(getLCID()) TOTAL = trim(sGrandTotal & ISO) 'workaround for lineitem in XML PROD_ID = iOrderID PROD_QUANTITY = "1" PROD_UNIT = TOTAL PROD_DESC = "StoreFront Purchase" ' check to see if there is a ship message or supply a default one If sShipInstructions <> "" Then ORDER_TEXT = mid(sShipInstructions,1,20) Else ORDER_TEXT = "No Order Text" End if If proc_live = 1 Then If trim(sPaymentServer) = "" or isNull(sPaymentServer) Then sPaymentServer = "https://xml.surepay.com" End If ElseIf proc_live = 0 Then sPaymentServer = "https://xml.test.surepay.com" sLogin = "5555" sPassword = "password" End If 'Create the XML object Set objXML = Server.CreateObject("MSXML.DOMDocument") strHeader= "<!DOCTYPE pp.request PUBLIC """& chr(45) & chr(47)&chr(47) &"IMALL" & chr(47) &chr(47) &"DTD PUREPAYMENTS 1.0" & chr(47)&chr(47) & "EN"""_&" ""http:" & chr(47)&chr(47) & "www.purepayments.com" & chr(47) & "dtd" & chr(47) & "purepayments.dtd"">" 'Set up XML Set pp = objXML.createElement("pp.request") pp.SetAttribute "merchant", sLogin pp.SetAttribute "password", sPassword Set auth = objXML.createElement("pp.auth") auth.SetAttribute "ordernumber", iOrderID pp.appendChild auth Set credit = objXML.createElement("pp.creditcard") credit.SetAttribute "number", sCustCardNumber credit.SetAttribute "expiration", sCustCardExpiry auth.appendChild credit Set addr = objXML.createElement("pp.address") addr.SetAttribute "type", "billing" addr.SetAttribute "fullname", sCustCardName addr.SetAttribute "address1", sCustAddress1 addr.SetAttribute "address2", sCustAddress2 addr.SetAttribute "city", sCustCity addr.SetAttribute "state", sCustState addr.SetAttribute "zip", sCustZip addr.SetAttribute "country", sCustCountry addr.SetAttribute "phone", sCustPhone addr.SetAttribute "email", sCustEmail credit.appendChild addr Set ship_addr = objXML.createElement("pp.address") ship_addr.SetAttribute "type", "shipping" ship_addr.SetAttribute "fullname", sShipCustName ship_addr.SetAttribute "address1", sShipCustAddress1 ship_addr.SetAttribute "address2", sShipCustAddress2 ship_addr.SetAttribute "city", sShipCustCity ship_addr.SetAttribute "state", sShipCustState ship_addr.SetAttribute "zip", sShipCustZip ship_addr.SetAttribute "country", sShipCustCountry ship_addr.SetAttribute "phone", sShipCustPhone ship_addr.SetAttribute "email", sShipCustEmail auth.appendChild ship_addr Set lineitem = objXML.createElement("pp.lineitem") lineitem.SetAttribute "sku", iOrderID lineitem.SetAttribute "quantity", PROD_QUANTITY lineitem.SetAttribute "description", PROD_DESC lineitem.SetAttribute "unitprice", TOTAL lineitem.SetAttribute "taxrate", "0" auth.appendChild lineitem Set ordertext = objXML.createElement("pp.ordertext") ordertext.SetAttribute "type", "description" ordertext.text = ORDER_TEXT auth.appendChild ordertext objXML.appendChild pp ' Server encode the string to Post strXML = "xml= " & Server.URLencode(strHeader) & Server.URLEncode(objXML.xml) strResponse = SubmitXML(strXML, sPaymentServer) strInsert = mid(strResponse,118) Set xmlResponse = CreateObject("MSXML.DOMDocument") strBool = xmlResponse.loadXML(strInsert) ' Error checking and Response handling ' check to see if the xml has been successfully loaded If Not strBool Then iProcResponse = 0 ProcErrMsg = "loadXML has failed. Check the xml response string" Else ' check if xmlResponse has content If (xmlResponse.hasChildNodes) Then ' get back the authresponse message Set objElement = xmlResponse.documentElement.selectSingleNode("pp.authresponse") If (objElement.getAttribute("failure") = "true") Then iProcResponse = 0 strAuth = objElement.getAttribute("authstatus") ' Get Authorization Status Select Case strAuth Case "DCL" AuthMsg = "Authorization Declined" ProcAuthCode = objElement.getAttribute("transactionid") Case "ERR" AuthMsg = "Error occurred in Authorization" ProcAuthCode = objElement.getAttribute("transactionid") Case "REF" AuthMsg = "Referred Authorization" ProcAuthCode = objElement.getAttribute("transactionid") Case Else AuthMsg = "Unknown Authresponse occured" ProcAuthCode = "" End Select ProcMessage = AuthMsg ProcErrMsg = objElement.Text ProcCustNumber = objElement.getAttribute("ordernumber") ProcMerchNumber = objElement.getAttribute("merchant") Else ' success iProcResponse = 1 strAuth = objElement.getAttribute("authstatus") iTransactionID = objElement.getAttribute("transactionid") ProcCustNumber = objElement.getAttribute("ordernumber") ProcMerchNumber = objElement.getAttribute("merchant") End if ' Get AVS info iAVScode = objElement.getAttribute("avs") sAVSMsg = AVSMsg(iAVScode) Else ProcErrMsg = "No response came from SurePay" iProcResponse = 0 End If End If ' close objects Set objXML = Nothing Set xmlResponse = Nothing Set objElement = Nothing Call setResponse("SurePay",iOrderID,iTransactionID,ProcMerchNumber,iAVSCode,sAVSMsg,strAuth,"","",ProcErrMsg,iProcResponse) SurePay = ProcErrMsg End Function '------------------------------------------------------------------------------------- ' Function to submit the XML object, returning a response string '------------------------------------------------------------------------------------- Function SubmitXML(strXML, strPostURL) Dim XMLHttpRequest, strResponse Set XMLHttpRequest = Server.CreateObject("Microsoft.XMLHTTP") XMLHttpRequest.Open "POST", strPostURL , "false" , "" ,"" XMLHttpRequest.Send strXML strResponse = XMLHttpRequest.responseText Set XMLHttpRequest = Nothing SubmitXML = strResponse End Function '------------------------------------------------------------------------------------- ' ISO Function and getLCID function '------------------------------------------------------------------------------------- Function FindCurrencyISO(LCID) Dim SQL, rsCurr, SelCurrency SQL = "SELECT slctvalCurrencyISO FROM sfSelectValues WHERE slctvalLCID = '" & makeInputSafe(LCID) & "' " Set rsCurr = cnn.execute (SQL) SelCurrency = rsCurr("slctvalCurrencyISO") If (isNull(SelCurrency)) Then Response.Write("Sorry, that country does not have an ISO currency type assigned to it") Response.End End If closeobj(rsCurr) FindCurrencyISO = SelCurrency End Function Function getLCID Dim SQL, rsAdmin, LCID SQL = "SELECT adminLCID FROM sfAdmin" Set rsAdmin = cnn.execute (SQL) LCID = rsAdmin("adminLCID") closeobj(rsAdmin) getLCID = LCID End Function '----------------------------------------------------------------------------- ' AVS decoding function ' Returns the corresponding AVS message '----------------------------------------------------------------------------- Function AVSMsg(ProcAvsCode) Select Case ProcAvsCode Case "A" AVSMsg = "Address matches, ZIP does not. (Code A)" Case "E" AVSMsg = "Ineligible transaction. (Code E)" Case "N" AVSMsg = "Neither address nor ZIP matches. (Code N)" Case "R" AVSMsg = "Retry (system unavailable or timed out). (Code R)" Case "S" AVSMsg = "Card type not supported. (Code S)" Case "U" AVSMsg = "Address information unavailable. (Code U)" Case "W" AVSMsg = "9 digit zip match, address does not. (Code W)" Case "X" AVSMsg = "Exact match (9 digit zip and address). (Code X)" Case "Y" AVSMsg = "Address and 5 digit zip match. (Code Y)" Case "Z" AVSMsg = "5 digit zip matches, address does not. (Code Z)" Case Else AVSMsg = "Unknown AVS Code." End Select End Function '----------------------------------------------------------------------------- ' Write to payment response table after processing a transaction ' Returns nothing '----------------------------------------------------------------------------- Sub setResponse(sProcType,iOrderID,iTransactionID,iMercTransNo,iAVSCode,sAUXMsg,sActionCode,iAuthNo,iRetrievalCode,sErrorMessage,iProcResponse) Dim rsResponse Set rsResponse = Server.CreateObject("ADODB.RecordSet") rsResponse.Open "sfTransactionResponse", cnn, adOpenDynamic, adLockOptimistic, adCmdTable rsResponse.AddNew rsResponse.Fields("trnsrspOrderId") = iOrderID rsResponse.Fields("trnsrspCustTransNo") = iTransactionID rsResponse.Fields("trnsrspMerchTransNo") = iMercTransNo rsResponse.Fields("trnsrspAVSCode") = iAVSCode rsResponse.Fields("trnsrspAUXMsg") = sAUXMsg rsResponse.Fields("trnsrspActionCode") = sActionCode rsResponse.Fields("trnsrspRetrievalCode") = iRetrievalCode rsResponse.Fields("trnsrspAuthNo") = iAuthNo rsResponse.Fields("trnsrspErrorMsg") = sErrorMessage rsResponse.Fields("trnsrspErrorLocation") = sProcType rsResponse.Fields("trnsrspSuccess") = iProcResponse rsResponse.Update closeobj(rsResponse) End Sub %>