<%
'Work Fields
dim strReply
dim objHttp
dim httpStatus
dim httpResponseText
dim formattedDateTime
dim ordertotal
'Values sent by PayPal
dim payment_status
dim receiver_email
dim item_number
dim amount
'Database
dim mySQL
dim conntemp
dim rstemp
dim rstemp2
'Session
dim idOrder
dim idCust
'************************************************************************
'Open Database Connection
call openDb()
'Store Configuration
if loadConfig() = false then
call errorDB(LangText("ErrConfig",""),"")
end if
'Get a Date and Time formatted to the user's specifications
formattedDateTime = formatTheDate(currDateTime("DT",timeOffSet)) & " " & currDateTime("T",timeOffSet)
'Read post from PayPal system and add 'cmd'
strReply = Request.Form & "&cmd=_notify-validate"
'Extract some info we will need to update the Database if "VERIFIED"
payment_status = trim(Request.Form("payment_status"))
receiver_email = trim(Request.Form("receiver_email"))
item_number = trim(Request.Form("item_number"))
amount = trim(Request.Form("mc_gross"))
'Check the item_number and Order Status
if len(item_number) = 0 or not isNumeric(item_number) then
Response.Clear
Response.Write "PayPal IPN : Invalid value in Item_Number field."
Response.End
else
'Check that the order status is "Pending"
mySQL = "SELECT orderStatus, total " _
& "FROM cartHead " _
& "WHERE idOrder = " & validSQL(item_number,"I")
set rsTemp = openRSexecute(mySQL)
if rsTemp.eof then
Response.Clear
Response.Write "PayPal IPN : Order could not be located."
Response.End
else
if rsTemp("orderStatus") <> "0" then
Response.Clear
Response.Write "PayPal IPN : Order status must be pending."
Response.End
end if
end if
OrderTotal = rsTemp("total")
call closeRS(rsTemp)
end if
'Create XML object
on error resume next
set objHttp = server.Createobject(MSXMLprogID)
if err.number <> 0 then
Response.Clear
Response.Write "PayPal IPN : Could not create XML HTTP object."
Response.End
end if
on error goto 0
'Open connection to LIVE server (PayPal)
if payModePayPal = "0" then
objHttp.open "POST", "[URL unfurl="true"]https://www.paypal.com/cgi-bin/webscr",[/URL] false
else
objHttp.open "POST", "[URL unfurl="true"]https://www.sandbox.paypal.com/cgi-bin/webscr",false[/URL]
end if
'Send reply
objHttp.Send strReply
'Get response
httpStatus = objHttp.status
httpResponseText = UCase(trim(objHttp.responseText))
set objHttp = nothing
'Validate response
if httpStatus <> 200 then
call updOrderPrivate(item_number,"DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : HTTP Error " & httpStatus)
Response.Write "PayPal IPN : HTTP Error " & httpStatus
else
if httpResponseText = "VERIFIED" then
if lCase(payPalMemberID) = lCase(receiver_email) then
if lCase(payment_status) = "completed" then
if request.form("test_ipn") = 1 then item_number = -item_number
if CCur(OrderTotal) = CCur(amount) then
call updOrderStatus(item_number,"1","Y","Y","DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : Status = " & payment_status)
Response.Write "PayPal IPN : Status = " & payment_status
else
call updOrderPrivate(item_number,"DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : Amount: " & amount & vbCrLf & "Order: " & ordertotal)
Response.Write "PayPal IPN : Amount (" & amount & ") does not equal order total (" & ordertotal & ").<br>"
end if
else
call updOrderPrivate(item_number,"DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : Status = " & payment_status)
Response.Write "PayPal IPN : Status = " & payment_status
end if
else
call updOrderPrivate(item_number,"DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : Invalid Email = " & receiver_email)
Response.Write "PayPal IPN : Invalid Email = " & receiver_email
end if
else
if httpResponseText = "INVALID" then
call updOrderPrivate(item_number,"DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : INVALID Response")
Response.Write "PayPal IPN : INVALID Response"
else
call updOrderPrivate(item_number,"DATE : " & formattedDateTime & vbCrLf & "PayPal IPN : ERROR Response")
Response.Write "PayPal IPN : ERROR Response"
end if
end if
end if
'Close Database connection
call closeDB()
%>