Index: /main/waeup.uniben/trunk/src/waeup/uniben/etranzact/browser.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/etranzact/browser.py	(revision 8255)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/etranzact/browser.py	(revision 8256)
@@ -35,5 +35,5 @@
 
 def query_etranzact(confirmation_number, user, payment, view):
-    ob_class = view.__implemented__.__name__.replace('waeup.kofa.','')
+    ob_class = view.__implemented__.__name__
     postdict = {}
     postdict['TERMINAL_ID'] = TERMINAL_ID
Index: /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser.py	(revision 8255)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser.py	(revision 8256)
@@ -24,8 +24,21 @@
 from waeup.kofa.accesscodes import create_accesscode
 from waeup.uniben.students.interfaces import ICustomStudentOnlinePayment
+from waeup.uniben.applicants.interfaces import ICustomApplicantOnlinePayment
 from waeup.kofa.students.browser import write_log_message
-from waeup.kofa.students.viewlets import RequestCallbackActionButton
+from waeup.kofa.students.viewlets import RequestCallbackActionButton as RCABStudent
+from waeup.kofa.applicants.viewlets import RequestCallbackActionButton as RCABApplicant
 from waeup.uniben.students.utils import actions_after_student_payment
+from waeup.uniben.applicants.utils import actions_after_applicant_payment
 from waeup.uniben.interfaces import MessageFactory as _
+
+#    Interswitch test account data:
+#
+#    Card Number: 6274807700000007
+#    Expiry Date: July 2012
+#    PIN: 0000
+
+#    Card Number: 6278050000000007
+#    Expiry Date: July 2012
+#    PIN: 0000
 
 PRODUCT_ID = '57'
@@ -45,4 +58,26 @@
 URL = '/test_paydirect/services/TransactionQueryWs.asmx'
 httplib.HTTPConnection.debuglevel = 0
+
+
+def collect_xml_data(payment, xmldict):
+    xmldict['detail_ref'] = payment.p_id
+    xmldict['provider_amt'] = 100 * payment.surcharge_1
+    xmldict['provider_acct'] = PROVIDER_ACCT
+    xmldict['provider_bank_id'] = PROVIDER_BANK_ID
+    xmldict['provider_item_name'] = PROVIDER_ITEM_NAME
+    xmldict['institution_amt'] = 100 * payment.amount_auth
+    xmldict['institution_acct'] = INSTITUTION_ACCT
+    xmldict['institution_bank_id'] = INSTITUTION_BANK_ID
+    xmldict['institution_item_name'] = payment.p_category
+    xmldict['institution_name'] = INSTITUTION_NAME
+    # Interswitch amount is not part of the xml data
+    xmltext = """<payment_item_detail>
+<item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s">
+<item_detail item_id="1" item_name="%(institution_item_name)s" item_amt="%(institution_amt)d" bank_id="%(institution_bank_id)s" acct_num="%(institution_acct)s" />
+<item_detail item_id="2" item_name="%(provider_item_name)s" item_amt="%(provider_amt)d" bank_id="%(provider_bank_id)s" acct_num="%(provider_acct)s" />
+</item_details>
+</payment_item_detail>""" % xmldict
+    xml_data = """<input type="hidden" name="xml_data" value='%s'  />""" % xmltext
+    return xml_data
 
 def SOAP_post(soap_action,xml):
@@ -82,5 +117,47 @@
     return response
 
-class InterswitchActionButton(RequestCallbackActionButton):
+def query_interswitch(user, payment, view):
+    ob_class = view.__implemented__.__name__
+    sr = get_SOAP_response(PRODUCT_ID, payment.p_id)
+    user.loggerInfo(ob_class, 'callback received: %s' % sr)
+    wlist = sr.split(':')
+    if len(wlist) != 7:
+        view.flash(_('Invalid callback: ${a}',
+            mapping = {'a': wlist}))
+        user.loggerInfo(ob_class,'invalid callback: %s' % payment.p_id)
+        return False
+    payment.r_code = wlist[0]
+    payment.r_desc = wlist[1]
+    payment.r_amount_approved = float(wlist[2]) / 100
+    payment.r_card_num = wlist[3]
+    payment.r_pay_reference = wlist[5]
+    if payment.r_code != '00':
+        view.flash(_('Unsuccessful callback: ${a}', mapping = {'a': wlist[1]}))
+        user.loggerInfo(ob_class,'unsuccessful callback: %s' % payment.p_id)
+        payment.p_state = 'failed'
+        return False
+    total_amount_auth = (
+        payment.amount_auth
+        + payment.surcharge_1
+        + payment.surcharge_2)
+    if payment.r_amount_approved != total_amount_auth:
+        view.flash(_('Wrong amount'))
+        user.loggerInfo(ob_class,'successful callback but wrong amount: %s'
+            % payment.p_id)
+        payment.p_state = 'failed'
+        return False
+    if wlist[4] != payment.p_id:
+        view.flash(_('Wrong transaction id'))
+        user.loggerInfo(ob_class,'successful callback but wrong transaction id: %s'
+            % payment.p_id)
+        payment.p_state = 'failed'
+        return False
+    user.loggerInfo(ob_class,'successful callback: %s' % payment.p_id)
+    payment.p_state = 'paid'
+    payment.payment_date = datetime.now()
+    return True
+
+
+class InterswitchActionButtonStudent(RCABStudent):
     grok.order(2)
     grok.context(ICustomStudentOnlinePayment)
@@ -95,5 +172,19 @@
         return self.view.url(self.view.context, self.target)
 
-class InterswitchRequestCallbackActionButton(RequestCallbackActionButton):
+class InterswitchActionButtonApplicant(RCABApplicant):
+    grok.order(2)
+    grok.context(ICustomApplicantOnlinePayment)
+    icon = 'actionicon_pay.png'
+    text = _('CollegePAY')
+    target = 'goto_interswitch'
+
+    @property
+    def target_url(self):
+        if self.context.p_state != 'unpaid':
+            return ''
+        return self.view.url(self.view.context, self.target)
+
+# Deprecated
+class InterswitchRequestCallbackActionButtonStudent(RCABStudent):
     grok.order(3)
     grok.context(ICustomStudentOnlinePayment)
@@ -112,5 +203,5 @@
 
 # Alternative preferred solution
-class InterswitchRequestWebserviceActionButton(RequestCallbackActionButton):
+class InterswitchRequestWebserviceActionButtonStudent(RCABStudent):
     grok.order(4)
     grok.context(ICustomStudentOnlinePayment)
@@ -119,6 +210,13 @@
     target = 'request_webservice'
 
-
-class InterswitchPage(KofaPage):
+class InterswitchRequestWebserviceActionButtonApplicant(RCABApplicant):
+    grok.order(4)
+    grok.context(ICustomApplicantOnlinePayment)
+    icon = 'actionicon_call.png'
+    text = _('Request CollegePAY webservice')
+    target = 'request_webservice'
+
+
+class InterswitchPageStudent(KofaPage):
     """ View which sends a POST request to the Interswitch
     CollegePAY payment gateway.
@@ -126,5 +224,5 @@
     grok.context(ICustomStudentOnlinePayment)
     grok.name('goto_interswitch')
-    grok.template('goto_interswitch')
+    grok.template('student_goto_interswitch')
     grok.require('waeup.payStudent')
     label = _('Submit data to CollegePAY (Interswitch Payment Gateway)')
@@ -137,14 +235,11 @@
 
     def update(self):
-        if self.context.p_state != 'unpaid':
+        #if self.context.p_state != 'unpaid':
+        if self.context.p_state == 'paid':
             self.flash(_("Payment ticket can't be re-send to CollegePAY."))
             self.redirect(self.url(self.context, '@@index'))
             return
+
         self.student = self.context.getStudent()
-        self.amount = (self.context.amount_auth + self.context.surcharge_1 +
-            self.context.surcharge_2 + self.context.surcharge_3)
-        self.amount_100 = 100 * self.amount
-        self.local_date_time = str(self.context.creation_date)
-        self.site_redirect_url = self.url(self.context, 'isw_callback')
         certificate = getattr(self.student['studycourse'],'certificate',None)
         xmldict = {}
@@ -155,25 +250,39 @@
             xmldict['department'] = None
             xmldict['faculty'] = None
-        xmldict['detail_ref'] = self.context.p_id
-        xmldict['provider_amt'] = 100 * self.context.surcharge_1
-        xmldict['provider_acct'] = PROVIDER_ACCT
-        xmldict['provider_bank_id'] = PROVIDER_BANK_ID
-        xmldict['provider_item_name'] = PROVIDER_ITEM_NAME
-        xmldict['institution_amt'] = 100 * self.context.amount_auth
-        xmldict['institution_acct'] = INSTITUTION_ACCT
-        xmldict['institution_bank_id'] = INSTITUTION_BANK_ID
-        xmldict['institution_item_name'] = self.context.p_category
-        xmldict['institution_name'] = INSTITUTION_NAME
-        # Interswitch amount is not part of the xml data
-        xmltext = """<payment_item_detail>
-<item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s">
-<item_detail item_id="1" item_name="%(institution_item_name)s" item_amt="%(institution_amt)d" bank_id="%(institution_bank_id)s" acct_num="%(institution_acct)s" />
-<item_detail item_id="2" item_name="%(provider_item_name)s" item_amt="%(provider_amt)d" bank_id="%(provider_bank_id)s" acct_num="%(provider_acct)s" />
-</item_details>
-</payment_item_detail>""" % xmldict
-        self.xml_data = """<input type="hidden" name="xml_data" value='%s'  />""" % xmltext
-        return
-
-class InterswitchPaymentCallbackPage(UtilityView, grok.View):
+        self.amount = (self.context.amount_auth + self.context.surcharge_1 +
+            self.context.surcharge_2 + self.context.surcharge_3)
+        self.amount_100 = 100 * self.amount
+        self.local_date_time = str(self.context.creation_date)
+        self.site_redirect_url = self.url(self.context, 'request_webservice')
+        self.xml_data = collect_xml_data(self.context, xmldict)
+        return
+
+class InterswitchPageApplicant(InterswitchPageStudent):
+    """ View which sends a POST request to the Interswitch
+    CollegePAY payment gateway.
+    """
+    grok.context(ICustomApplicantOnlinePayment)
+    grok.require('waeup.payApplicant')
+    grok.template('applicant_goto_interswitch')
+
+    def update(self):
+        if self.context.p_state != 'unpaid':
+            self.flash(_("Payment ticket can't be re-send to CollegePAY."))
+            self.redirect(self.url(self.context, '@@index'))
+            return
+        self.applicant = self.context.__parent__
+        xmldict = {}
+        xmldict['department'] = None
+        xmldict['faculty'] = None
+        self.amount = (self.context.amount_auth + self.context.surcharge_1 +
+            self.context.surcharge_2 + self.context.surcharge_3)
+        self.amount_100 = 100 * self.amount
+        self.local_date_time = str(self.context.creation_date)
+        self.site_redirect_url = self.url(self.context, 'request_webservice')
+        self.xml_data = collect_xml_data(self.context, xmldict)
+        return
+
+# Deprecated
+class InterswitchPaymentCallbackPageStudent(UtilityView, grok.View):
     """ Callback view for the CollegePAY gateway
     """
@@ -237,5 +346,5 @@
         self.context.p_state = 'paid'
         self.context.payment_date = datetime.now()
-        actions_after_payment(student, self.context, self)
+        actions_after_student_payment(student, self.context, self)
         return
 
@@ -244,6 +353,6 @@
         return
 
-# Alternative solution, replaces OnlinePaymentCallbackPage
-class InterswitchPaymentRequestWebservicePage(UtilityView, grok.View):
+# Alternative solution, replaces InterswitchPaymentCallbackPage
+class InterswitchPaymentRequestWebservicePageStudent(UtilityView, grok.View):
     """ Request webservice view for the CollegePAY gateway
     """
@@ -257,54 +366,6 @@
             return
         student = self.context.getStudent()
-        sr = get_SOAP_response(PRODUCT_ID, self.context.p_id)
-        write_log_message(self,'callback received: %s' % sr)
-        wlist = sr.split(':')
-        if len(wlist) != 7:
-            self.flash(_('Invalid callback: ${a}',
-                mapping = {'a': wlist}))
-            write_log_message(self,'invalid callback: %s' % self.context.p_id)
-            return
-        self.context.r_code = wlist[0]
-        self.context.r_desc = wlist[1]
-        self.context.r_amount_approved = float(wlist[2]) / 100
-        self.context.r_card_num = wlist[3]
-        self.context.r_pay_reference = wlist[5]
-        
-        if self.context.r_code != '00':
-            self.flash(_('Unsuccessful callback: ${a}',
-                mapping = {'a': wlist[1]}))
-            write_log_message(
-                self,'unsuccessful callback: %s' % self.context.p_id)
-            self.context.p_state = 'failed'
-            return
-
-        total_amount_auth = (
-            self.context.amount_auth
-            + self.context.surcharge_1
-            + self.context.surcharge_2)
-
-        if self.context.r_amount_approved != total_amount_auth:
-            self.flash(_('Wrong amount'))
-            write_log_message(
-                self,'successful callback but wrong amount: %s'
-                % self.context.p_id)
-            self.context.p_state = 'failed'
-            return
-
-        if wlist[4] != self.context.p_id:
-            self.flash(_('Wrong transaction id'))
-            write_log_message(
-                self,'successful callback but wrong transaction id: %s'
-                % self.context.p_id)
-            self.context.p_state = 'failed'
-            return
-
-        write_log_message(self,'successful callback: %s' % self.context.p_id)
-
-        self.context.p_state = 'paid'
-        self.context.payment_date = datetime.now()
-
-        actions_after_payment(student, self.context, self)
-
+        if query_interswitch(student, self.context, self):
+            actions_after_student_payment(student, self.context, self)
         return
 
@@ -312,2 +373,22 @@
         self.redirect(self.url(self.context, '@@index'))
         return
+
+class InterswitchPaymentRequestWebservicePageApplicant(UtilityView, grok.View):
+    """ Request webservice view for the CollegePAY gateway
+    """
+    grok.context(ICustomApplicantOnlinePayment)
+    grok.name('request_webservice')
+    grok.require('waeup.payApplicant')
+
+    def update(self):
+        if self.context.p_state == 'paid':
+            self.flash(_('This ticket has already been paid.'))
+            return
+        applicant = self.context.__parent__
+        if query_interswitch(applicant, self.context, self):
+            actions_after_applicant_payment(student, self.context, self)
+        return
+
+    def render(self):
+        self.redirect(self.url(self.context, '@@index'))
+        return
Index: /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/applicant_goto_interswitch.pt
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/applicant_goto_interswitch.pt	(revision 8256)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/applicant_goto_interswitch.pt	(revision 8256)
@@ -0,0 +1,79 @@
+<form i18n:domain="waeup.uniben"
+  tal:attributes="action view/action" method="POST">
+
+  <p i18n:translate="">
+    These data will be submitted to the CollegePAY payment gateway,
+    please check:
+  </p>
+
+  <table class="form-table" i18n:domain="waeup.kofa">
+    <thead>
+    </thead>
+    <tbody>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Total Amount Authorized:</td>
+        <td>
+          <span tal:replace="view/amount">AMOUNT</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Transaction Reference:</td>
+        <td>
+          <span tal:replace="view/context/p_id">TXNREF</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Customer Id:</td>
+        <td>
+          <span tal:replace="view/applicant/applicant_id">CUSTID</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Customer Name:</td>
+        <td>
+          <span tal:replace="view/applicant/display_fullname">CUSTNAME</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Payment Item:</td>
+        <td>
+          <span tal:replace="view/context/p_item">PAYMENTITEM</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Payment Category:</td>
+        <td>
+          <span tal:replace="view/context/p_category">PAYMENTCATEGORY</span>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+
+  <input type="hidden" name="product_id" tal:attributes="value view/product_id" />
+  <input type="hidden" name="currency" tal:attributes="value view/currency" />
+  <input type="hidden" name="pay_item_id" tal:attributes="value view/pay_item_id" />
+  <input type="hidden" name="site_redirect_url" tal:attributes="value view/site_redirect_url" />
+  <input type="hidden" name="site_name" tal:attributes="value view/site_name" />
+  <input type="hidden" name="local_date_time" tal:attributes="value view/local_date_time" />
+  <input type="hidden" name="amount" tal:attributes="value view/amount_100" />
+
+  <input type="hidden" name="txn_ref" tal:attributes="value view/context/p_id" />
+  <input type="hidden" name="cust_id_desc" tal:attributes="value view/context/p_item" />
+  <input type="hidden" name="pay_item_name" tal:attributes="value view/context/p_category" />
+
+  <input type="hidden" name="cust_id" tal:attributes="value view/applicant/applicant_id" />
+  <input type="hidden" name="cust_name" tal:attributes="value view/applicant/display_fullname" />
+
+
+  <input type="hidden" name="payment_params" value="college_split" />
+  <span tal:replace="structure view/xml_data"></span>
+
+  <input type="submit" class="btn" tal:attributes="value view/submit_button"/>
+
+</form>
Index: in/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/goto_interswitch.pt
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/goto_interswitch.pt	(revision 8255)
+++ 	(revision )
@@ -1,79 +1,0 @@
-<form i18n:domain="waeup.uniben"
-  tal:attributes="action view/action" method="POST">
-
-  <p i18n:translate="">
-    These data will be submitted to the CollegePAY payment gateway,
-    please check:
-  </p>
-
-  <table class="form-table" i18n:domain="waeup.kofa">
-    <thead>
-    </thead>
-    <tbody>
-      <tr>
-        <td i18n:translate="" class="fieldname">
-          Total Amount Authorized:</td>
-        <td>
-          <span tal:replace="view/amount">AMOUNT</span>
-        </td>
-      </tr>
-      <tr>
-        <td i18n:translate="" class="fieldname">
-          Transaction Reference:</td>
-        <td>
-          <span tal:replace="view/context/p_id">TXNREF</span>
-        </td>
-      </tr>
-      <tr>
-        <td i18n:translate="" class="fieldname">
-          Customer Id:</td>
-        <td>
-          <span tal:replace="view/student/student_id">CUSTID</span>
-        </td>
-      </tr>
-      <tr>
-        <td i18n:translate="" class="fieldname">
-          Customer Name:</td>
-        <td>
-          <span tal:replace="view/student/display_fullname">CUSTNAME</span>
-        </td>
-      </tr>
-      <tr>
-        <td i18n:translate="" class="fieldname">
-          Payment Item:</td>
-        <td>
-          <span tal:replace="view/context/p_item">PAYMENTITEM</span>
-        </td>
-      </tr>
-      <tr>
-        <td i18n:translate="" class="fieldname">
-          Payment Category:</td>
-        <td>
-          <span tal:replace="view/context/p_category">PAYMENTCATEGORY</span>
-        </td>
-      </tr>
-    </tbody>
-  </table>
-
-  <input type="hidden" name="product_id" tal:attributes="value view/product_id" />
-  <input type="hidden" name="currency" tal:attributes="value view/currency" />
-  <input type="hidden" name="pay_item_id" tal:attributes="value view/pay_item_id" />
-  <input type="hidden" name="site_redirect_url" tal:attributes="value view/site_redirect_url" />
-  <input type="hidden" name="site_name" tal:attributes="value view/site_name" />
-  <input type="hidden" name="local_date_time" tal:attributes="value view/local_date_time" />
-  <input type="hidden" name="amount" tal:attributes="value view/amount_100" />
-
-  <input type="hidden" name="txn_ref" tal:attributes="value view/context/p_id" />
-  <input type="hidden" name="cust_id_desc" tal:attributes="value view/context/p_item" />
-  <input type="hidden" name="pay_item_name" tal:attributes="value view/context/p_category" />
-
-  <input type="hidden" name="cust_id" tal:attributes="value view/student/student_id" />
-  <input type="hidden" name="cust_name" tal:attributes="value view/student/display_fullname" />
-
-
-  <input type="hidden" name="payment_params" value="college_split" />
-  <span tal:replace="structure view/xml_data"></span>
-
-  <input type="submit" class="btn" tal:attributes="value view/submit_button"/>
-
-</form>
Index: /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/student_goto_interswitch.pt
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/student_goto_interswitch.pt	(revision 8256)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/browser_templates/student_goto_interswitch.pt	(revision 8256)
@@ -0,0 +1,79 @@
+<form i18n:domain="waeup.uniben"
+  tal:attributes="action view/action" method="POST">
+
+  <p i18n:translate="">
+    These data will be submitted to the CollegePAY payment gateway,
+    please check:
+  </p>
+
+  <table class="form-table" i18n:domain="waeup.kofa">
+    <thead>
+    </thead>
+    <tbody>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Total Amount Authorized:</td>
+        <td>
+          <span tal:replace="view/amount">AMOUNT</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Transaction Reference:</td>
+        <td>
+          <span tal:replace="view/context/p_id">TXNREF</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Customer Id:</td>
+        <td>
+          <span tal:replace="view/student/student_id">CUSTID</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Customer Name:</td>
+        <td>
+          <span tal:replace="view/student/display_fullname">CUSTNAME</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Payment Item:</td>
+        <td>
+          <span tal:replace="view/context/p_item">PAYMENTITEM</span>
+        </td>
+      </tr>
+      <tr>
+        <td i18n:translate="" class="fieldname">
+          Payment Category:</td>
+        <td>
+          <span tal:replace="view/context/p_category">PAYMENTCATEGORY</span>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+
+  <input type="hidden" name="product_id" tal:attributes="value view/product_id" />
+  <input type="hidden" name="currency" tal:attributes="value view/currency" />
+  <input type="hidden" name="pay_item_id" tal:attributes="value view/pay_item_id" />
+  <input type="hidden" name="site_redirect_url" tal:attributes="value view/site_redirect_url" />
+  <input type="hidden" name="site_name" tal:attributes="value view/site_name" />
+  <input type="hidden" name="local_date_time" tal:attributes="value view/local_date_time" />
+  <input type="hidden" name="amount" tal:attributes="value view/amount_100" />
+
+  <input type="hidden" name="txn_ref" tal:attributes="value view/context/p_id" />
+  <input type="hidden" name="cust_id_desc" tal:attributes="value view/context/p_item" />
+  <input type="hidden" name="pay_item_name" tal:attributes="value view/context/p_category" />
+
+  <input type="hidden" name="cust_id" tal:attributes="value view/student/student_id" />
+  <input type="hidden" name="cust_name" tal:attributes="value view/student/display_fullname" />
+
+
+  <input type="hidden" name="payment_params" value="college_split" />
+  <span tal:replace="structure view/xml_data"></span>
+
+  <input type="submit" class="btn" tal:attributes="value view/submit_button"/>
+
+</form>
Index: /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/tests.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/tests.py	(revision 8255)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/interswitch/tests.py	(revision 8256)
@@ -23,5 +23,5 @@
 #   If you enable this, please make sure the external services
 #   do exist really and are not bothered by being spammed by a test programme.
-EXTERNAL_TESTS = False
+EXTERNAL_TESTS = True
 
 def external_test(func):
