SagePay encryption error - encryption

I'm trying to integrate a classic asp site into SagePay 3.00 and cannot get past the Status Detail: 5080 : Form transaction registration failed error.
I've been checking my encryption (using the Sage adapted rijndael.asp files) using the example Sage provide and I get a slightly different output i.e. about the first 25% of my output matches Sage's example. Unsure where to go from here unless anyone can suggest a better or more reliable way of generating the encrypted file.
The text I'm encrypting (when not comparing to SagePay's test data) is:
spCryptTxt = "VendorTxCode="& datediff("s",DateValue("September 11, 1963"),now()) & "-" & session("****SessionId") & "&Amount=" & formatNumber(rs("totalCost"),2)_
& "&Currency=GBP"_
& "&Description=***Conferenceregistration"_
& "&CustomerName=" & rs("firstname") & rs("surname")_
& "&CustomerEMail=" & rs("email")_
& "&BillingSurname=" & rs("surname")_
& "&BillingFirstnames=" & rs("firstname")_
& "&BillingAddress1=" & rs("contactAddress1")_
& "&BillingCity=" & rs("contactCity")_
& "&BillingPostCode=" & rs("contactPostcode")_
& "&BillingCountry=GB"_
& "&DeliveryFirstnames=" & rs("firstname")_
& "&DeliverySurname=" & rs("surname")_
& "&DeliveryAddress1=" & rs("contactAddress1")_
& "&DeliveryCity=" & rs("contactCity")_
& "&DeliveryPostCode=" & rs("contactPostcode")_
& "&DeliveryCountry=GB"_
& "&SuccessURL=http://www.*****.com/****/success.asp"_
& "&FailureURL=http://www.*****.com/****//failure.asp"
and this always gives the 5080 error.
Help!

Look in My Sage Pay, under Transactions > Invalid. Instead of the generic 5080 error, it should give you a more informative error code.

Related

Rule runs manually but returns the error code "an unexpected error has occurred" when incoming mail arrives

Microsoft 365 V2205, build 15225.20204
The following VBA macro used to work, and it still works when run manually. A couple of years ago, I am guessing that a change from Microsoft occurred, and it now returns the error code "an unexpected error has occurred" when Outlook automatically runs it. Can someone show me a fix for the rule/VBA that will allow the rule/VBA to:
On an incoming email
Mark it as high importance
Update the subject
Set a category “Bill”
Set a reminder
Here is the:
Rules description
Apply this rule after the message arrives
With ‘Your credit card statement is ready’ or ‘Your statement is ready for credit card ending’
And on this computer only
Mark it as high importance
And run Damian.PendingPaid1
Here is the VBA:
Sub PendingPaid1(Item As Outlook.MailItem)
Item.Categories = "Bill"
Item.Subject = Item.Subject & " " & Chr(150) & " Pending " & Chr(150) & " PAID " & Chr(150) & " 220"
Item.ReminderSet = True
Item.FlagDueBy = Date + 1 & Space(1) & "8:45 AM" ' Remind 1 day from now.
Item.ReminderTime = Date + 1 & Space(1) & "8:45 AM" ' Remind 1 day from now.
Item.Save
End Sub

AutoIT: ADODB.Connection method 'open' missing?

I want to use AutoIT to access a Maria DB via ADODB objects.
The creation of the ADODB.Connection object seems to work properly. But for some reason I cannot find, the open method fails. I am no AutoIT expert, but to me it does not look like the object had problems with the arguments.
The relevant lines of the code are:
$objConn = ObjCreate("ADODB.Connection")
ConsoleWrite("ADODB conn Error: " & #error & " - Typ: " & VarGetType($objConn) & #crlf)
$objConn.open ("DRIVER=" & $sDriver & ";SERVER=" & $sServer & ";DATABASE=" & $sDatabase & ";UID=" & $sUsername & ";PWD=" & $sPassword)
ConsoleWrite("conn Error: " & #error & #crlf)
The second ConsoleWrite is not reached. The Output and error-message are:
ADODB conn Error: 0 - Typ: Object
"C:\Users\mischneider\Documents\Automation_Base\udf\mysql.au3" (29) : ==> The requested action with this object has failed.:
$objConn.open ("DRIVER=" & $sDriver & ";SERVER=" & $sServer & ";DATABASE=" &
$sDatabase & ";UID=" & $sUsername & ";PWD=" & $sPassword) $objConn^ ERROR
Can anyone tell what I'm doing wrong and how I can open the connection?
Many thanks in advance,
Michael
I found the reason of and could resolve the problem.
My custom function took $sDriver with following (wrong) default value:
[...]$sDriver = "(MySQL ODBC 3.51 Driver)", [...]
where parentheses () instead of braces {} were used. Correct is:
[...]$sDriver = "{MySQL ODBC 3.51 Driver}", [...]
The laptop screen is so small I didn't realize that. But inserting a working Connection string and then comparing it to the result of the concatenation char by char, I recognized the difference.
I hope this now documented accident will help others in my situation.
BR
Michael

Trouble using a For Next variable in "xxxx.Rows.Count"

In the code block below I am wishing to use a variable in a xxxx.Rows.Count line.
Specifically, I'm wanting to take the "R1200s" portion and increment it to R1201s, R1202s, R1203s and so on as the For-Next loop executes. I, of course, already have the DataTable()'s portion defined... no problem there. The code works fine if I write out every single instance but I'd like to shorten up into a simpler block of code. I've been able to use "i" in every other control with success but getting hung up on only this portion.
I've tried something like ("R120" & i & "s"), along with many variations of this but, can find no solution that works.
Any help, or a point in the right direction, is appreciated.
For i = 1 To 8
Dim Ai As Label = DirectCast(Page.FindControl("A" & ID.ToString()), Label)
Dim Si As Hyperlink = DirectCast(Page.FindControl("S" & ID.ToString()), Hyperlink)
If R1200s.Rows.Count < Slots.Rows(0)(Ri).ToString() +1 Then
Ai.Style.Add("background-color","#000000")
Si.ImageUrl = "images/" & ID & ".png"
Si.NavigateUrl = "step3.aspx?Time=" & ID & "&Date=" & Request.QueryString("Date") & "&Day=" & Request.QueryString("Day") & "&Entry=" & Request.QueryString("Entry")
End If
Next

Autoit get current caret position Or current text box position

So i am working on a project and i got stuck on this part.
I am trying to locate the position of ether the typing caret(The blinking line while typing) or the current text box that is being typed in.
The main part that is hard is i am looking to do this for every input on my computer (Firefox search, Notepad, Renaming files, writing this post...)
I am beginning to doubt that auto-it can do this, i am open to using another language that can do this. (I have not checked any other language but Auto-it yet)
I have tested "WinGetCaretPos()" and a few other random scripts, but they had the same problem, they don't return the correct position.
~Thanks
Not all controls are standard window controls that can be accessed with AutoIt functions. Many programs (especially browsers) have nonstandard controls so "every input" on the computer might be hard to get.
Here is an example of how to get the control information of any active window that is giving focus to a control AND has standard windows controls.
HotKeySet("{ESC}", "Terminate")
While 1
Sleep(500)
GetControlFocus()
WEnd
Func GetControlFocus()
Local $hWinHandle = WinGetHandle("[Active]")
Local $sControl = ControlGetFocus($hWinHandle)
Local $sText = "The active window handle is: " & $hWinHandle & #CRLF
If $sControl <> "" Then
$sText &= "The control with focus in the active window is: " & $sControl & #CRLF
Local $aPos = ControlGetPos($hWinHandle, "", $sControl)
$sText &= "Mouse position: X: " & $aPos[0] & " Y: " & $aPos[1] & #CRLF & "Size: " & $aPos[2] & ", " & $aPos[3]
Else
$sText &= "The active window is not giving focus to a control that AutoIt recognizes."
EndIf
ToolTip($sText, 0, 0)
EndFunc ;==>GetControlFocus
Func Terminate()
Exit
EndFunc ;==>Terminate
You can get the control position of other programs using IUIAutomation and this UDF. But it would not be as simple as using a few standard AutoIt functions.

When comparing two identical strings they return as different

I have the first password from a text box:
pwtextbox = TextBox2.Text
and the other one I am reading from a DB Table:
pwdatabase = SQLdr("pw")
I've tried to compare them using '=', StrComp, and strings.compare and they always, no matter what, come as different
While SQLdr.Read() 'While Data is Present
pwdatabase = SQLdr("pw") 'pwdatabase is equal db entry
Response.Write(pwtextbox & "=" & pwdatabase & "?<br>") 'is mickey=mickey?
If StrComp(pwtextbox, pwdatabase) = 0 Then
Response.Write("login successful")
Response.Write(pwdatabase & "is the pass")
Else
Response.Write("wrong password. ")
Response.Write(TextBox2.Text & " is the wrong pass. the right password is " & pwdatabase)
End If
End While
the onscreen display outputs as follow:
mickey=mickey?
wrong password.
mickey is the wrong password. the right password is mickey.
I can't seem to understand!
especially when I see on the screen that the two strings are identical, I still get this false positive...
can you see what I'm missing?

Resources