I've sorted out the parsing of the return from BMS; the program has to decide whether the answer it gets back means that the card was successfully billed, or not. You'd think that would be easy, but again I ran head-on into a thicket of contradictory and absent documentation.
Here's a useless but interesting fact. The code I use to mean "Card approved" is 0111800. This random-looking collection of digits is a fossil. My billing system has been through many incarnations; Barclays, Royal Bank of Scotland, Nat West (because RBS took them over), Commedia and then back to Barclays, with a side-order of Streamline. Somewhere along that lot, one of them was using 0111800, so I started using it, and I've just never changed it to the more obvious value of "0". Why so many changes? Because when I'm someone's customer and they start making life difficult for me, or think that as I'm tied to them they can hike up the prices, it's Goodnight Gracie and suddenly they lost a customer.
The four links that should have led to the definitive list of error codes, just don't work, and the information in part 3.2 of the IGSSS manual is contradicted by the example given a couple of inches above it.
But I did a bit of Googling, and there's some code publicly available, which I suspect at least one of the companies that has it didn't mean to make publicly available, but I don't know that, so I'm not breaking the law, which gave me a bit of help. I've emailed BMS tech support with the additional documentation issues.
I now think that I've got working, on their test platform, one of the three programs that I need to convert, the billthedoubtfuls.cgi. And the other two will be a doddle, I'll just copy what I did for billthedoubtfuls.cgi. But before I do that copying I want to check that my parsing of the response from BMS is correct, and for that, I need the full and accurate documentation.
If anyone is struggling with Barclays Merchant Services DirectLink, or indeed any Ogone-based system, I can offer help, although my daily charging rates are eye-wateringly high because making sense of this stuff is head-achingly difficult.