How do I fix Payflow Pro "Sale" instead of "Delayed Capture"?
UPDATE: I'm changing this to a bug. After going through this with a highly expert development team, we're concluding that the OOTB behavior of Magento 1.4 is not correct when processing an "Authorization" followed by a "Delayed Capture". Instead of a "Delayed Capture" it issues a "Sale" and there is no way to change this without customization, which we have done to fix, however this is NOT an appropriate fix. See my original message below:
We recently migrated from M1 to M2 (CE 2.4) and now have an issue we can't solve. I'm turning here as a last-resort.
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”.
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.
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:
'TRXTYPE' => 'A',
'TRXTYPE' => 'S'
See the difference? ‘A’ for Authorization and ‘S’ for Sale, where ‘D’ is for Delayed Capture. All transactions should be ‘D’ not ‘S’.
Is this a flaw in Magento 2's Payflow Pro API?
"Sale" should only be done if 'Payment Action' in Magento = "Sale" otherwise, if 'Payment Action = "Authorization" the next step should be "Delayed Capture", not also "Sale".