Payflow in magento 1610 is creating reference charges... why?

1k Views Asked by At

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****

)

0

There are 0 best solutions below