cancel
Showing results for 
Search instead for 
Did you mean: 

BUG: No Delayed Capture for Payflow Pro Credit Cards

BUG: No Delayed Capture for Payflow Pro Credit Cards

We have finally switched from Magento 1.x to 2.4 and found a nasty bug in the way Magento 2.4 handles calls to the Payflow Pro server. It has to be a bug because we got the correct results when processing credit cards via Magento 1.x and Payflow Pro.

 

We had to custom code a listener to "fix" it because there does not seem to be any other workaround. If there is anyone else in the community that has come across this issue, please let me know and if/how you resolved it.

 

While PayPal Express is properly doing “Delayed Capture” for every closing transaction in Magento 2,  PayFlow Pro credit card processing only seems to be issuing a “Sale”, regardless of if the 'Payment Action' is set to 'Authorization' or 'Sale'.


What a “Sale” does, according to Payflow Developer Support, is act as a NEW transaction on the customer’s credit card account, leaving the prior Authorization to be held for 72 hours (or longer depending on the credit card company) resulting in customers’ card companies sometimes declining the sale  (if double the balance is not available) or leaving the customer thinking they have been double-billed. This is particularly bad when the products are in the thousand dollars range. Say a customer has a $5,000 credit limit and they want to buy a $3,000 product from us... they'll get declined because the Auth and Sale need $6,000 available on that account!

 

The proper way is to issue an Authorization, followed by a Delayed Capture. This simply converts the hold on funds into a final capture, and it's how EVERYONE (including PayPal Express Checkout) operates.

 

Here are the codes Magento 1 would send to Payflow Pro to complete credit card transactions:

[trxtype] => A

[trxtype] => D

Here’s what we see now with Magento 2 for credit card transactions when the 'Payment Action' is set to 'Authorization':

'TRXTYPE' => 'A',

'TRXTYPE' => 'S'

See the difference? ‘A’ for Authorization and ‘S’ for Sale, where ‘D’ is for Delayed Capture. The "S" code should ONLY be used when 'Payment Action' is set to 'Sale', right?

 

Is this a flaw in Magento 2's Payflow Pro API?

 

To recap:

"Sale" should only be issued if 'Payment Action' in Magento = "Sale" otherwise, if 'Payment Action' = "Authorization" the next step should be "Delayed Capture"

 

Anyone else having this problem?

2 REPLIES 2

Re: BUG: No Delayed Capture for Payflow Pro Credit Cards

The issue with Magento 2.4's Payflow Pro integration is a bug where transactions set to 'Authorization' incorrectly send a "Sale" (TRXTYPE: S) instead of a "Delayed Capture" (TRXTYPE: D), causing unnecessary authorization holds and potential customer confusion. A custom listener can be implemented to correct this behavior by forcing the proper transaction type. Checking for Magento updates or patches, reporting the bug to Magento's GitHub repository, and consulting the community for alternative solutions are recommended steps until an official fix is released.

Re: BUG: No Delayed Capture for Payflow Pro Credit Cards

This sounds like a pretty frustrating bug! It’s surprising that Magento 2.4 would send the wrong transaction type for Payflow Pro. It definitely seems like a flaw in how the system is handling the 'Authorization' and 'Sale' actions. I hope they address this soon! In the meantime, I can’t help but think of how important the details are in all systems – kind of like DR Driving from thedrdrivingapk, where every little adjustment in the gameplay, like smooth steering or managing your speed, can make a big difference in your performance. Whether it's coding or driving, those little tweaks really matter