The plugin code matches their code sample, and "XXXX" is sent instead of the real expirationDate:
var creditCard = new creditCardType
{
cardNumber = lastFourDigitsCardNumber,
expirationDate = "XXXX"
};
https://github.com/nopSolutions/Authorize.Net-plugin-for-nopcommerce/blob/nopcommerce-4.30/Nop.Plugin.Payments.AuthorizeNet/AuthorizeNetPaymentProcessor.cs#L521
https://github.com/AuthorizeNet/sample-code-csharp/blob/master/PaymentTransactions/RefundTransaction.cs#L27
It worked fine in Dev/Sandbox, but fails in Prod.
Plugin API credentials are correct.
Nothing in the plugin code modifies the expirationDate after it is set to "XXXX", and it's unclear how "XXXXXXXXXXXXX..." is being sent, but maxLength == 4:
expirationDate Required.
The card's expiration date, masked for refunds.
String, four characters.
For refunds, use XXXX instead of the card expiration date
Not mission critical as we can do refunds manually, I just don't have time to do any debugging today.
Has anyone ever seen this error?