Hi,
It was done like that because normally this never happens and thus avoids the creation of orders which will never be confirmed (when the credit card is refused for example).
You're the first one reporting an issue which could potentially come from that.
As all the processing happens on the page with FirstData, when the debug mode is turned on the debug data is displayed directly on the screen and not in the payment log file. The payment log file is used for payment methods where the only way you can get to see the data sent back by the server is to store it in a file to be able to read it.
So it's normal that you don't read anything in the payment log for Firstdata.
I don't see any other way this could happen unless you were receiving payments from somewhere else than HikaShop (and thus it's normal that it wouldn't store an order in HikaShop).
Try to change the line:
function onBeforeOrderCreate(&$order, &$do) {
to:
function onAfterOrderCreate(&$order) {
in the file plugins/hikashoppayment/firstdata/firstdata.php
That way, orders will be created regardless of whether the payment is valid or not and only the orders with the payment valid will have their status changed to "confirmed" (allowing you to distinguish ones from the others).
And that will prevent a payment to happen and the corresponding order to be created if another plugin cancels it. In that case, the order won't be created and the payment won't be processed.