Index: WAeUP_SRP/trunk/profiles/default/layouts/members_search.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/layouts/members_search.xml	(revision 1943)
+++ WAeUP_SRP/trunk/profiles/default/layouts/members_search.xml	(revision 1944)
@@ -44,5 +44,17 @@
   <property name="is_i18n">True</property>
  </widget>
- <table>
+  <widget name="groups" meta_type="MultiSelect Widget">
+    <property name="title">Groups</property>
+    <property name="fields">
+      <element value="groups"/>
+    </property>
+    <property name="label">Groups</property>
+    <property name="label_edit">Groups</property>
+    <property name="readonly_layout_modes"/>
+    <property name="hidden_layout_modes"/>
+    <property name="hidden_readonly_layout_modes"/>
+    <property name="vocabulary">groups_voc</property>
+  </widget>
+  <table>
   <row>
    <cell name="id" ncols="2"/>
Index: WAeUP_SRP/trunk/profiles/default/schemas.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/schemas.xml	(revision 1943)
+++ WAeUP_SRP/trunk/profiles/default/schemas.xml	(revision 1944)
@@ -13,4 +13,5 @@
  <object name="faculty" meta_type="CPS Schema"/>
  <object name="members" meta_type="CPS Schema"/>
+ <object name="members_search" meta_type="CPS Schema"/>
  <object name="payment" meta_type="CPS Schema"/>
  <object name="student" meta_type="CPS Schema"/>
Index: WAeUP_SRP/trunk/profiles/default/schemas/members_search.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/schemas/members_search.xml	(revision 1944)
+++ WAeUP_SRP/trunk/profiles/default/schemas/members_search.xml	(revision 1944)
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="schema.xsl"?>
+<object name="members" meta_type="CPS Schema">
+ <field name="confirm" meta_type="CPS Password Field">
+  <property name="read_ignore_storage">True</property>
+  <property name="write_ignore_storage">True</property>
+ </field>
+ <field name="email" meta_type="CPS String Field">
+  <property name="acl_write_roles">Manager; Owner; SectionOfficer</property>
+ </field>
+ <field name="fullname" meta_type="CPS String Field">
+  <property name="acl_write_roles">Nobody</property>
+  <property name="read_ignore_storage">True</property>
+  <property
+     name="read_process_expr">python:(givenName + " " + sn).strip() or id</property>
+  <property name="read_process_dependent_fields">
+   <element value="givenName"/>
+   <element value="sn"/>
+   <element value="id"/>
+  </property>
+  <property name="write_ignore_storage">True</property>
+ </field>
+ <field name="givenName" meta_type="CPS String Field">
+  <property name="acl_write_roles">Manager; Owner; SectionOfficer</property>
+ </field>
+ <field name="groups" meta_type="CPS String List Field">
+  <property name="acl_write_roles">Manager; SectionOfficer</property>
+ </field>
+ <field name="homeless" meta_type="CPS Int Field">
+  <property name="default_expr">python: 1</property>
+  <property name="acl_write_roles">Manager; SectionOfficer</property>
+ </field>
+ <field name="id" meta_type="CPS String Field"/>
+ <field name="password" meta_type="CPS Password Field">
+  <property name="acl_write_roles">Manager; Owner; SectionOfficer</property>
+ </field>
+ <field name="roles" meta_type="CPS String List Field">
+  <property name="default_expr">python: ['Member',]</property>
+  <property name="acl_write_roles">Manager</property>
+ </field>
+ <field name="sn" meta_type="CPS String Field">
+  <property name="acl_write_roles">Manager; Owner; SectionOfficer</property>
+ </field>
+</object>
Index: WAeUP_SRP/trunk/profiles/default/vocabularies.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/vocabularies.xml	(revision 1943)
+++ WAeUP_SRP/trunk/profiles/default/vocabularies.xml	(revision 1944)
@@ -15,4 +15,5 @@
  <object name="get_departments_voc" meta_type="CPS Method Vocabulary"/>
  <object name="get_faculties_voc" meta_type="CPS Method Vocabulary"/>
+ <object name="groups_voc" meta_type="CPS Method Vocabulary"/>
  <object name="waeup_bed_letters" meta_type="CPS Vocabulary"/>
  <object name="waeup_block_letters" meta_type="CPS Vocabulary"/>
Index: WAeUP_SRP/trunk/profiles/default/vocabularies/groups_voc.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/vocabularies/groups_voc.xml	(revision 1944)
+++ WAeUP_SRP/trunk/profiles/default/vocabularies/groups_voc.xml	(revision 1944)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="vocabulary.xsl"?>
+<object name="get_groups_voc" meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="get_vocabulary_method">getGroups</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: WAeUP_SRP/trunk/skins/waeup_directory/getGroups.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_directory/getGroups.py	(revision 1944)
+++ WAeUP_SRP/trunk/skins/waeup_directory/getGroups.py	(revision 1944)
@@ -0,0 +1,12 @@
+##parameters=key=None 
+# $Id$
+"""
+Return the groups as an vocabulary
+
+"""
+groups = context.portal_directories.groups.searchEntries(group='*')
+if key is None:
+    return [(g,g) for g in groups]
+if key in groups:
+    return key
+return "unknown Group %s" % key
Index: WAeUP_SRP/trunk/skins/waeup_epayment/getPaymentsFolderInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 1943)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 1944)
@@ -48,5 +48,5 @@
 info = {}
 is_so = info['is_so'] = context.isSectionOfficer()
-info['query_url'] = "https://webpay.interswitchng.com/TransactionQuery.aspx"
+info['query_url'] = "https://webpay.interswitchng.com/test_paydirect/services/TransactionQueryURL.aspx"
 info['prod_id'] = '61'
 #res = context.portal_catalog(portal_type='Student',id = student_id)
@@ -66,22 +66,26 @@
     row['title'] = so.Title
     url = row['url'] = "%s/%s" % (payments_path,so.getId)
-    so_object = context.restrictedTraverse(url,default=None).getContent()
+    so_doc = context.restrictedTraverse(url,default=None).getContent()
     row['type'] = so.portal_type
     review_state = row['review_state'] = so.review_state
-    if so_object.type_description.startswith('School Fee'):
+    if so_doc.type_description.startswith('School Fee'):
         row['is_approvable'] = is_so and (review_state == "opened") and info['review_state'] == 'cleared_and_validated'
     else:
         row['is_approvable'] = is_so and (review_state == "opened")
     row['is_requeryable'] = False
-    if so_object.type_description.startswith('School Fee'):
-        if (review_state == "opened") and\
-           info['review_state'] == 'cleared_and_validated' and\
-           not hasattr(so,'resp_code') and hasattr(so, 'order_id'):
+    #set_trace()
+    row['resp_desc'] = getattr(so_doc,'resp_desc','no response')
+    row['trans_ref'] = getattr(so_doc,'order_id','')
+    if so_doc.type_description.startswith('School Fee'):
+        if review_state == 'opened' and hasattr(so_doc, 'order_id') and not so_doc.resp_code:
             row['is_requeryable'] = True
-            row['trans_ref'] = getattr(so,'order_id')
-            row['callback_url'] = "%s/payments/p%s/interswitch_cb?echo=p%s" % (student.absolute_url(),
-                                                                  so.order_id,
-                                                                  so.order_id)
-    if (review_state == "closed") and so_object.resp_code in ('SC','00','AP','IP',):
+            row['callback_url'] = "%s/payments/%s/interswitch_cb" % (student.absolute_url(),
+                                                            so.getId)
+            href = '%(query_url)s' % info
+            href += '?transRef=%(trans_ref)s' % row
+            href += '&prodID=%(prod_id)s' % info
+            href += '&redirectURL=%(callback_url)s' % row
+            row['href'] = href
+    if (review_state == "closed") and so_doc.resp_code in ('SC','00','AP','IP',):
         row['confirmed'] = 'active'
     else:
Index: WAeUP_SRP/trunk/skins/waeup_epayment/interswitch_cb.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/interswitch_cb.py	(revision 1943)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/interswitch_cb.py	(revision 1944)
@@ -40,15 +40,13 @@
 
 student = getattr(students,student_id)
-
 resp_codes = (("desc","resp_desc"),
               ("resp","resp_code"),
-              ("txnref","pay_reference"),
-              ("payRet","resp_pay_reference"),
+              ("txnRef","pay_reference"),
+              ("payRef","resp_pay_reference"),
               ("retRef","retRef"),
-              ("CardNum","resp_card_num"),
+              ("cardNum","resp_card_num"),
               ("apprAmt","resp_approved_amount"),
               )
 pd = {}
-#from Products.zdb import set_trace;set_trace()
 for rc,pdk in resp_codes:
     pd[pdk] = request.get(rc,'')
@@ -57,11 +55,11 @@
 else:
     pd['resp_approved_amount'] = '0'
-try:
-    context.getContent().edit(mapping=pd)
-except UnAuthorized,E:
-    logger.info('%s ' % student_id)
-
-#resp = pd['resp_desc']
-#if  resp.startswith('Appro') and resp.endswith('essful'):
+    
+review_state = wftool.getInfoFor(context,'review_state',None)
+if pd['resp_code'] == '' and review_state == 'opened':
+    logger.info('%s requeried payment %s and got empty response' % (student_id,context.getId()))
+    wftool.doActionFor(context,'close')
+    return request.RESPONSE.redirect("%s/waeup_document_view" % context.absolute_url())
+context.getContent().edit(mapping = pd)
 resp = pd['resp_code']
 if  resp == '00':
Index: WAeUP_SRP/trunk/skins/waeup_epayment/pay_interswitch.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/pay_interswitch.py	(revision 1943)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/pay_interswitch.py	(revision 1944)
@@ -134,8 +134,7 @@
 args['pay_item_id'] = "6100"
 args['pay_item_name'] = "UNIBEN Tuition Payments"
-args['payment_params'] = 'college_split'
-args['xml_data'] = xmltext % info
+args['payment_params'] = 'switch_college_split'
+#args['xml_data'] = xmltext % info
+args['xml_data'] = ''
 info['args'] = args
 return context.goto_interswitch_form(info=info)
-url = info['action'] + "?" + urlencode(args)
-request.RESPONSE.redirect(url)
Index: WAeUP_SRP/trunk/skins/waeup_epayment/payments_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/payments_view.pt	(revision 1943)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/payments_view.pt	(revision 1944)
@@ -31,5 +31,4 @@
           <tr tal:repeat="row rows"
               tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
-            
             <td tal:attributes="class string:${row/confirmed}">
               <a target="slip" href="" tal:attributes="href string:${context/absolute_url}/${row/id}/payment_receipt"
@@ -37,4 +36,6 @@
                 <strong tal:content="row/title" /></a> 
             </td>
+          <td tal:content="row/resp_desc" />
+          <td tal:content="row/trans_ref" />
             <td>
             <a tal:condition="row/is_approvable"
@@ -45,8 +46,8 @@
             </a>             
             </td>
-            <td tal:condition="python:1">
-            <a tal:condition="row/is_requeryable"
-               tal:attributes="href string:${info/query_url}?transRef=${row/trans_ref}&prodID=${info/prod_id}&${row/callback_url};
-                               onclick python:'return window.confirm(\'%s\')' %(cpsmcat('Are you sure? You will not be able to undo the approval.'), );
+            <td tal:condition="row/is_requeryable">
+            <a tal:condition="python:1"
+               tal:attributes="href row/href;
+                               onclick python:'return window.confirm(\'%s\')' %(cpsmcat('Are you sure?'), );
                                ">
                 [requery payment]
