Just a few minutes ago I ran my first successful PayCash transaction through the PHP port of the merchant scripts. The main script had syntax issues from the port from Perl. Such as, in Perl, you want to escape '@' in a string since it indicates an array. So you do '\@'. PHP doesn't need the escape, so it sees \@ as nothing special and you get \@ and not @. This will fuxx0r things like XPath statements. :-) After cleaning up the syntax issues to get through the first script, the second two scripts worked on the first try.
So the core system works. That still leaves a lot of testing for the error cases, etc. And then all the additional logic used in the Kiosk context and not in PayCash.
But, considering the amount of *real* time I've been able to spend porting, I'm very pleased with myself.