Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 7872)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 7873)
@@ -1109,4 +1109,68 @@
         return
 
+class InterswitchPage(KofaPage):
+    """ View which sends a POST request to the Interswitch
+    CollegePAY payment gateway.
+    """
+    grok.context(IStudentOnlinePayment)
+    grok.name('goto_interswitch')
+    grok.template('goto_interswitch')
+    grok.require('waeup.payStudent')
+
+    label = _('Submit data to CollegePAY (Interswitch Payment Gateway)')
+    submit_button = _('Submit')
+
+    # Uniben product data (to be removed later)
+    product_id = '57'
+    currency = '566'
+    pay_item_id = '5700'
+
+    site_redirect_url = 'http://localhost?echo='
+    site_name = 'xyz.waeup.org'
+    provider_amt = 1000
+    provider_acct = '2345'
+    provider_bank_id = '8'
+    provider_item_name = 'Kofa Provider'
+    institution_acct = '1234'
+    institution_bank_id = '9'
+
+    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
+        xmldict = {}
+        student = self.context.getStudent()
+        self.amount = (self.context.amount_auth + self.context.surcharge_1 +
+            self.context.surcharge_2 + self.context.surcharge_3)
+        self.txn_ref = xmldict['detail_ref'] = self.context.p_id
+        self.cust_id = student.student_id
+        self.cust_id_desc = self.context.p_item
+        self.pay_item_name = xmldict['institution_item_name'] = self.context.p_category
+        self.cust_name = student.display_fullname
+        self.local_date_time = str(self.context.creation_date)
+        self.certificate = getattr(student['studycourse'],'certificate',None)
+        if self.certificate is not None:
+            xmldict['department'] = self.certificate.__parent__.__parent__.code
+            xmldict['faculty'] = self.certificate.__parent__.__parent__.__parent__.code
+        else:
+            xmldict['department'] = None
+            xmldict['faculty'] = None
+        xmldict['provider_amt'] = self.provider_amt
+        xmldict['provider_acct'] = self.provider_acct
+        xmldict['provider_bank_id'] = self.provider_bank_id
+        xmldict['provider_item_name'] = self.provider_item_name
+        xmldict['institution_amt'] = self.amount - self.provider_amt
+        xmldict['institution_acct'] = self.institution_acct
+        xmldict['institution_bank_id'] = self.institution_bank_id
+        xmltext = """<payment_item_detail>
+<item_details detail_ref="%(detail_ref)s" college="institution" 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 ExportPDFPaymentSlipPage(UtilityView, grok.View):
     """Deliver a PDF slip of the context.
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/goto_interswitch.pt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/goto_interswitch.pt	(revision 7873)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/goto_interswitch.pt	(revision 7873)
@@ -0,0 +1,20 @@
+<form i18n:domain="waeup.kofa"
+  action="https://testwebpay.interswitchng.com/test_paydirect/webpay/pay.aspx"
+  method="POST">
+
+  <input type="hidden" name="product_id" tal:attributes="value view/product_id" />
+  <input type="hidden" name="amount" tal:attributes="value view/amount" />
+  <input type="hidden" name="currency" tal:attributes="value view/currency" />
+  <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="txn_ref" tal:attributes="value view/txn_ref" />
+  <input type="hidden" name="cust_id" tal:attributes="value view/cust_id" />
+  <input type="hidden" name="cust_name" tal:attributes="value view/cust_name" />
+  <input type="hidden" name="cust_id_desc" tal:attributes="value view/cust_id_desc" />
+  <input type="hidden" name="pay_item_id" tal:attributes="value view/pay_item_id" />
+  <input type="hidden" name="pay_item_name" tal:attributes="value view/pay_item_name" />
+  <input type="hidden" name="local_date_time" tal:attributes="value view/local_date_time" />
+  <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.kofa/trunk/src/waeup/kofa/students/viewlets.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/viewlets.py	(revision 7872)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/viewlets.py	(revision 7873)
@@ -322,4 +322,19 @@
         return self.view.url(self.view.context, self.target)
 
+class InterswitchActionButton(ManageActionButton):
+    grok.order(3)
+    grok.context(IStudentOnlinePayment)
+    grok.view(OnlinePaymentDisplayFormPage)
+    grok.require('waeup.payStudent')
+    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)
+
 class AddBedTicketActionButton(ManageActionButton):
     grok.order(1)
