Нужно хранить карточные данные в базе , точнее операцию и потом когда активируется, с помощью него списать
Операция появляется, когда прошло через платёжную систему. Что бы не хранить данные карт и др (ну и по логике - подарок куплен) - логичнее произвести покупку, а если подарок был отклонен - произвести возврат покупки и денег