Use an input field which triggers the numeric keyboard. Users will be familiar to this as it is a UI that is native to their device.
When using this method don't forget that the chrome desktop browser will display a spinner control. The spinner can be hidden using a bit of css:
If you want to show the keypad on the actual page itself (which is often done as a security measure against keyboard loggers) then I would still suggest your option 1 as it is the same as both a phone input (which people probably use more than a keyboard keypad) and the same as an ATM and EFTPOS keypad layout (which will have a natural association with credit cards).
Of course this is all just my opinion. The best option would be to do some tests with actual end users (probably A/B testing) and get some hard data on which is best.