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.
<input type="number">
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:
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
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.