The tricky bit is that the credit-card processing itself is being done by a third party gateway. We pass a request to the third party to go collect a payment for $X and let us know when that is approved. The user's credit card number never actually passes through our system, which is a great way to avoid dealing with PCI-DSS.
But the card number isn't known at the time we pass $X to the gateway. So there's no way to apply a different surcharge percentage to different types of card.
If you have a traditional merchant account, there's no way you know what the fee will be beforehand anyway. Passing on the actual fee to the customer is impossible. The interchange rate for a basic card is different from the interchange rate for a rewards card, for a hotel card, for a signature card, for a business card, etc. There are hundreds of different classifications and no way to know which a card is until after you've charged it.
If you're not dealing with a merchant account, but a 3rd party processor, then you're almost always paying a flat fee regardless of card type. So why would you need to pass on different rates?
The tricky bit is that the credit-card processing itself is being done by a third party gateway. We pass a request to the third party to go collect a payment for $X and let us know when that is approved. The user's credit card number never actually passes through our system, which is a great way to avoid dealing with PCI-DSS.
But the card number isn't known at the time we pass $X to the gateway. So there's no way to apply a different surcharge percentage to different types of card.