I am setting up PayFlowLink in Magento. It requires an Authorization transaction when the customer enters his/her Credit Card information. If the customer then clicks the infamous "place order" button the PayFlow module then charges the card as a Reference transaction to the initial Authorization (should use a new trans ID) instead of actually completing the initial Auth as a Sale transaction (same trans ID).
Since Reference Transactions are by default not allowed in the payflow setup, I get a "Failed Merchant Rule Check" back from Paypal.
But... if I turn on "Allow reference transactions" in the manager.paypal.com security settings, Magento sends the same transaction ID to PayPal and PayPal is expecting a new transaction ID for the reference charge. Thus, I get, "The transaction was refused as a result of a duplicate invoice ID supplied"
So... it seems to me that the Magento PayFlowLink module is trying to complete the earlier Auth transaction with a Sale, using the same ID (which is typical across all payment modules)... but that PayPal is for some reason thinking the charge as a reference charge. I hope that the PayFlow module is not that badly written, so its either configuration or some other interference from a template, etc...
Any experience from the cloud is welcome. Thanks!
Edit to add:
I cannot see how paypal can see this as a ref transaction:
2012-01-25T18:52:39+00:00 DEBUG (7): Array
(
[request] => Array
(
[user] => ****
[vendor] => p***
[partner] => PayPal
[pwd] => ****
[verbosity] => HIGH
[tender] => C
[amt] => 7.27
[currency] => USD
[trxtype] => S
[origid] => EDN*********
)
[result] => Array
(
[result] => 117
[pnref] => EWV*********
[respmsg] => Failed merchant rule check
[transtime] => 2012-01-25 10:52:39
[amt] => 7.27
[cardtype] =>
[result_code] => 117
)
[__pid] => 1****
)