Forum .LRN Q&A: Re: Paying for classes
you'll have to write custom code which hooks into the ecommerce package to achieve #1.
For #2 you could use the ecommerce classes. Within ecommerce you can define your own user classes and each class can have a different price for a product. Custom code would place a student in the appropriate class. If the price is not dependent on the type of student then I see no other option but to create 2 different products. One for credit and another for audit.
Be aware that ecommece only supports 3 levels of categories and not any deeper. The limitation is in the data model rewriting will be rather involved.
Ecommerce doesn't keep track of inventory which means no head start to build avialability with.