Index: main/waeup.ikoba/branches/uli-fake-gw-provider/src/waeup/ikoba/payments/interfaces.py
===================================================================
--- main/waeup.ikoba/branches/uli-fake-gw-provider/src/waeup/ikoba/payments/interfaces.py	(revision 12635)
+++ main/waeup.ikoba/branches/uli-fake-gw-provider/src/waeup/ikoba/payments/interfaces.py	(revision 12636)
@@ -20,4 +20,6 @@
 from zope import schema
 from zope.component import getUtilitiesFor
+from zope.container.interfaces import IContainer
+from zope.container.constraints import containers, contains
 from zope.interface import Interface
 from waeup.ikoba.interfaces import (
@@ -115,5 +117,46 @@
 
 
-class IPayment(IIkobaObject):
+class ICreditCard(Interface):
+    """A credit card.
+
+    A credit card is connected to a Payer.
+    """
+    credit_card_id = schema.TextLine(
+        title=u'Internal Credit Card ID',
+        required=True,
+        )
+
+
+class IPaymentItem(Interface):
+    """Something to sell.
+    """
+    item_id = schema.TextLine(
+        title=u'Payment Item ID',
+        required=True,
+        )
+
+    title = schema.TextLine(
+        title=u'Title',
+        description=u'A short title of the good sold.',
+        required=True,
+        default=u'Unnamed'
+        )
+
+    amount = schema.Decimal(
+        title=u'Amount',
+        description=u'Total amount, includung any taxes, fees, etc.',
+        required=True,
+        default=decimal.Decimal('0.00'),
+        )
+
+    currency = schema.Choice(
+        title=u'Currency',
+        source=ISO_4217_CURRENCIES_VOCAB,
+        required=True,
+        default='USD',
+        )
+
+
+class IPayment(IContainer):
     """A base representation of payments.
 
@@ -139,4 +182,6 @@
     we mark the payment 'failed'.
     """
+    contains(IPaymentItem)
+
     payment_id = schema.TextLine(
         title=u'Payment Identifier',
@@ -208,53 +253,4 @@
         """
 
-
-class IOnlinePayment(IPayment):
-    """A payment via payment gateways.
-
-    """
-
-    ac = schema.TextLine(
-        title=_(u'Activation Code'),
-        default=None,
-        required=False,
-        readonly=False,
-        )
-
-    r_amount_approved = schema.Float(
-        title=_(u'Response Amount Approved'),
-        default=0.0,
-        required=False,
-        readonly=False,
-        )
-
-    r_code = schema.TextLine(
-        title=_(u'Response Code'),
-        default=None,
-        required=False,
-        readonly=False,
-        )
-
-    r_desc = schema.TextLine(
-        title=_(u'Response Description'),
-        default=None,
-        required=False,
-        readonly=False,
-        )
-
-    def approve():
-        "Approve an online payment and set to paid."
-
-
-class ICreditCard(Interface):
-    """A credit card.
-
-    A credit card is connected to a Payer.
-    """
-    credit_card_id = schema.TextLine(
-        title=u'Internal Credit Card ID',
-        required=True,
-        )
-
-
 class IPayer(Interface):
     """A payer.
@@ -283,32 +279,2 @@
         required=True
         )
-
-
-class IPaymentItem(Interface):
-    """Something to sell.
-    """
-    item_id = schema.TextLine(
-        title=u'Payment Item ID',
-        required=True,
-        )
-
-    title = schema.TextLine(
-        title=u'Title',
-        description=u'A short title of the good sold.',
-        required=True,
-        default=u'Unnamed'
-        )
-
-    amount = schema.Decimal(
-        title=u'Amount',
-        description=u'Total amount, includung any taxes, fees, etc.',
-        required=True,
-        default=decimal.Decimal('0.00'),
-        )
-
-    currency = schema.Choice(
-        title=u'Currency',
-        source=ISO_4217_CURRENCIES_VOCAB,
-        required=True,
-        default='USD',
-        )
Index: main/waeup.ikoba/branches/uli-fake-gw-provider/src/waeup/ikoba/payments/payment.py
===================================================================
--- main/waeup.ikoba/branches/uli-fake-gw-provider/src/waeup/ikoba/payments/payment.py	(revision 12635)
+++ main/waeup.ikoba/branches/uli-fake-gw-provider/src/waeup/ikoba/payments/payment.py	(revision 12636)
@@ -28,5 +28,5 @@
 from waeup.ikoba.payments.interfaces import (
     IPayment, STATE_UNPAID, STATE_FAILED, STATE_PAID,
-    IPaymentGatewayService, IPayer, IPaymentItem,
+    IPaymentGatewayService, IPayer, IPaymentItem, IPayee,
     )
 from waeup.ikoba.utils.logger import Logger
@@ -49,5 +49,6 @@
 
 
-class Payment(grok.Model, Logger):
+@attrs_to_fields
+class Payment(grok.Container, Logger):
     """This is a payment.
     """
@@ -64,8 +65,8 @@
         self.payment_date = None
         self.payment_id = u'PAY_' + unicode(uuid.uuid4().hex)
-        self.gateway_service = None
+        #self.gateway_service = None
         self.amount = decimal.Decimal("0.00")
-        self.payed_item_id = None
-        self.payer_id = None
+        #self.payed_item_id = None
+        #self.payer_id = None
         self.state = STATE_UNPAID
         return
@@ -97,5 +98,27 @@
 
 @attrs_to_fields
+class Payer(object):
+    """A Payment is for testing.
+
+    It cannot be stored in ZODB.
+    """
+    grok.implements(IPayer)
+
+
+@attrs_to_fields
 class PaymentItem(grok.Model):
 
     grok.implements(IPaymentItem)
+
+    def __init__(self):
+        super(PaymentItem, self).__init__()
+
+
+
+@attrs_to_fields
+class Payee(object):
+    """Someone being paid.
+
+    This is for testing only and cannot be stored in ZODB.
+    """
+    grok.implements(IPayee)
