Need a shopping Cart with discount code generation facilities

I need a shopping cart which can deal can deal with two type of products:-


  1. Goods \ Products :- For these just a discount will be offered and the product will be shipped to the

    customer address.The payment mode can be online or cash on delivery.




  2. Service sort of :- For these the user needs to pay say Rs. X to B-Better and the rest to the

    merchant.





    Having this framework, I could think of a complex scenario as mentioned below:-



    Say user wants to order for the following 4 things:-


  3. Service X from MerchantA (Pay $50 online and rest $200 to MerchantA)
  4. Service Y from MerchantA (Pay $90 online and rest $150 to MerchantA ) - User wants to order 2 Units of this.
  5. Service Z from MerchantB (Pay $60 online and rest $100 to MerchantB)
  6. Digital Thermometer (Just pay $80 via Internet Banking \ Cash on Delivery option)



    [In short the scenario is user has ordered two services (Service X and Service Y) from MerchantA out of which he wants 2 units of Service Y,

    another service ( Service Z ) from MerchantB and a product (Digital Thermometer) ]



    So the user needs to pay :-
  7. $50
  8. $180 (90*2)
  9. $60
  10. $80 (this can be an online payment or Cash on Delivery)

    __________

    $370.



    Notes:- There should also be facilities for discount redemption wherein the user can use separate discount codes\offers to reduce the amount ($370).



    Once the payment is done a mail will be sent to the user with the unique coupon codes for all apart from the 4th product which is a Thermometer.



    Coupon:-
  11. Coupon_Service X - 1XYZ
  12. a. Coupon_Service X - 1ABCD

    b. Coupon_Service X - 2ABCE


  13. Coupon_Service Z - 1DFRT



    Once this is complete, the user needs to use this coupons codes as per his wish.



    Is there ant shopping cart framework available which is capable enough of handling the above scenarios?



    Please help.