Changeset 13381 for main/waeup.aaue/trunk/src
- Timestamp:
- 2 Nov 2015, 13:42:10 (9 years ago)
- Location:
- main/waeup.aaue/trunk/src/waeup/aaue/interswitch
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.aaue/trunk/src/waeup/aaue/interswitch/browser.py
r13379 r13381 118 118 currency = CURRENCY 119 119 pay_item_id = '101' 120 mac = '74424F1DFECD6058F153148255CDD55E16724B4F380ADB2C63C5D1D7A5675759010C8153DCB930AAF2D38903CBF7CE32B8A6BA2C16BBC46721DF2E3F3E4548E3' 120 #mac = '74424F1DFECD6058F153148255CDD55E16724B4F380ADB2C63C5D1D7A5675759010C8153DCB930AAF2D38903CBF7CE32B8A6BA2C16BBC46721DF2E3F3E4548E3' 121 mac = '9718FA00B0F5070B388A9896ADCED9B2FB02D30F71E12E68BDADC63F6852A3496FF97D8A0F9DA9F753B911A49BB09BB87B55FD02046BD325C74C46C0123CF023' 121 122 122 123 def update(self): … … 124 125 125 126 ###################################### 126 error = 'Sorry, Interswitch payments are temporarily disabled.'127 #error = 'Sorry, Interswitch payments are temporarily disabled.' 127 128 ###################################### 128 129 … … 163 164 xmldict['institution_item_name'] = self.category 164 165 xmldict['institution_name'] = INSTITUTION_NAME 166 provider_amt = 0.0 165 167 166 168 # PT 167 168 169 if school(student) == 'pt': 169 170 product_id = PRODUCT_ID_PT … … 210 211 xmldict['institution_acct'] = '1014066976' 211 212 xmldict['institution_bank_id'] = '117' 212 provider_amt = 0.0213 213 gown_fee_amt = 2000.0 214 214 aaue_fl_fee_amt = 800.0 … … 227 227 </item_details> 228 228 </payment_item_detail>""" % xmldict 229 else: 230 self.flash('Not applicable', type='danger') 231 self.redirect(self.url(self.context, '@@index')) 232 return 229 233 230 234 # REGULAR 231 232 235 else: 233 pass 234 236 product_id = PRODUCT_ID_REGULAR 237 if self.context.p_category == 'schoolfee': 238 self.pay_item_id = '101' 239 xmldict['institution_bank_id'] = '117' 240 xmldict['institution_acct'] = '1010827641' 241 provider_amt = 1500.0 242 xmldict['provider_amt'] = 100 * provider_amt 243 aaue_share_amt = 1500.0 244 xmldict['aaue_share_amt'] = 100 * aaue_share_amt 245 joint_venture_amt = 1000.0 246 xmldict['joint_venture_amt'] = 100 * joint_venture_amt 247 xmldict['institution_amt'] = 100 * ( 248 self.context.amount_auth 249 - provider_amt 250 - joint_venture_amt 251 - aaue_share_amt 252 - GATEWAY_AMT) 253 xmltext = """<payment_item_detail> 254 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 255 <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" /> 256 <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" /> 257 <item_detail item_id="3" item_name="Joint Venture" item_amt="%(joint_venture_amt)d" bank_id="117" acct_num="1014066969" /> 258 <item_detail item_id="4" item_name="AAUE Share" item_amt="%(aaue_share_amt)d" bank_id="11" acct_num="0030656377" /> 259 </item_details> 260 </payment_item_detail>""" % xmldict 261 262 elif self.context.p_category == 'clearance': 263 self.pay_item_id = '102' 264 xmldict['institution_acct'] = '1010827641' 265 xmldict['institution_bank_id'] = '117' 266 xmldict['institution_amt'] = 100 * ( 267 self.context.amount_auth - GATEWAY_AMT) 268 xmltext = """<payment_item_detail> 269 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 270 <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" /> 271 </item_details> 272 </payment_item_detail>""" % xmldict 273 274 elif self.context.p_category == 'union': 275 self.pay_item_id = '103' 276 xmldict['institution_acct'] = '1006360118' 277 xmldict['institution_bank_id'] = '123' 278 xmldict['institution_amt'] = 100 * ( 279 self.context.amount_auth - GATEWAY_AMT) 280 xmltext = """<payment_item_detail> 281 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 282 <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" /> 283 </item_details> 284 </payment_item_detail>""" % xmldict 285 286 elif self.context.p_category == 'lapel': 287 self.pay_item_id = '104' 288 xmldict['institution_acct'] = '4010660109' 289 xmldict['institution_bank_id'] = '51' 290 xmldict['institution_amt'] = 100 * ( 291 self.context.amount_auth - GATEWAY_AMT) 292 xmltext = """<payment_item_detail> 293 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 294 <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" /> 295 </item_details> 296 </payment_item_detail>""" % xmldict 297 298 elif self.context.p_category == 'welfare': 299 self.pay_item_id = '105' 300 xmldict['institution_acct'] = '1006407792' 301 xmldict['institution_bank_id'] = '123' 302 xmldict['institution_amt'] = 100 * ( 303 self.context.amount_auth - GATEWAY_AMT) 304 xmltext = """<payment_item_detail> 305 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 306 <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" /> 307 </item_details> 308 </payment_item_detail>""" % xmldict 309 310 elif self.context.p_category == 'matric_gown': 311 self.pay_item_id = '106' 312 xmldict['institution_acct'] = '5060023429' 313 xmldict['institution_bank_id'] = '51' 314 xmldict['institution_amt'] = 100 * ( 315 self.context.amount_auth - GATEWAY_AMT) 316 xmltext = """<payment_item_detail> 317 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 318 <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" /> 319 </item_details> 320 </payment_item_detail>""" % xmldict 321 322 elif self.context.p_category == 'concessional': 323 self.pay_item_id = '107' 324 xmldict['institution_acct'] = '1010835352' 325 xmldict['institution_bank_id'] = '117' 326 xmldict['institution_amt'] = 100 * ( 327 self.context.amount_auth - GATEWAY_AMT) 328 xmltext = """<payment_item_detail> 329 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s"> 330 <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" /> 331 </item_details> 332 </payment_item_detail>""" % xmldict 235 333 236 334 self.xml_data = """<input type="hidden" name="xml_data" value='%s' />""" % xmltext -
main/waeup.aaue/trunk/src/waeup/aaue/interswitch/tests.py
r13379 r13381 64 64 self.browser.getControl("Save").click() 65 65 self.browser.getControl("Add online").click() 66 self.assertMatches('...ticket created...', 67 self.browser.contents) 66 self.assertTrue('ticket created' in self.browser.contents) 68 67 #self.browser.getLink(value).click() 69 self.assertMatches('...Amount Authorized...', 70 self.browser.contents) 71 self.assertMatches( 72 '...<span>1000.0</span>...', 73 self.browser.contents) 68 self.assertTrue('Amount Authorized' in self.browser.contents) 69 self.assertTrue('<span>1000.0</span>' in self.browser.contents) 74 70 self.payment_url = self.browser.url 75 71 … … 77 73 # Manager can access InterswitchForm 78 74 self.browser.getLink("CollegePAY", index=0).click() 79 self.assertMatches('...Total Amount Authorized:...', 80 self.browser.contents) 81 self.assertMatches( 82 '...<input type="hidden" name="amount" value="100000" />...', 83 self.browser.contents) 75 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 76 self.assertTrue( 77 '<input type="hidden" name="amount" value="100000" />' 78 in self.browser.contents) 84 79 delta = timedelta(days=8) 85 80 self.applicant.values()[0].creation_date -= delta 86 81 self.browser.open(self.payment_url) 87 82 self.browser.getLink("CollegePAY", index=0).click() 88 self.assert Matches(89 ' ...This payment ticket is too old. Please create a new ticket...',90 self.browser.contents)83 self.assertTrue( 84 'This payment ticket is too old. Please create a new ticket' 85 in self.browser.contents) 91 86 92 87 @external_test … … 94 89 95 90 self.browser.open(self.payment_url + '/request_webservice') 96 self.assertMatches('...Unsuccessful callback...', 97 self.browser.contents) 91 self.assertTrue('Unsuccessful callback' in self.browser.contents) 98 92 # The payment is now in state failed 99 self.assertMatches('...<span>Failed</span>...', 100 self.browser.contents) 93 self.assertTrue('<span>Failed</span>' in self.browser.contents) 101 94 102 95 class InterswitchTestsStudents(StudentsFullSetup): … … 121 114 self.browser.getControl(name="form.p_category").value = ['schoolfee'] 122 115 self.browser.getControl("Create ticket").click() 123 self.assertMatches('...ticket created...', 124 self.browser.contents) 125 ctrl = self.browser.getControl(name='val_id') 126 self.value = ctrl.options[0] 127 self.browser.getLink(self.value).click() 128 self.assertMatches('...Amount Authorized...', 129 self.browser.contents) 130 self.assertMatches( 131 '...<span>51750.0</span>...', 132 self.browser.contents) 116 self.assertTrue('ticket created' in self.browser.contents) 117 ctrl = self.browser.getControl(name='val_id') 118 self.value = ctrl.options[0] 119 self.browser.getLink(self.value).click() 120 self.assertTrue('Amount Authorized' in self.browser.contents) 121 self.assertTrue('<span>51750.0</span>' in self.browser.contents) 133 122 self.payment_url = self.browser.url 134 123 self.browser.getLink("CollegePAY", index=0).click() … … 140 129 self.student['payments']['xyz'] = acc_payment 141 130 self.browser.getLink("CollegePAY", index=0).click() 142 self.assertMatches('...<input type="hidden" name="pay_item_id" value="105" />...', 131 self.assertTrue('<input type="hidden" name="pay_item_id" value="105" />' 132 in self.browser.contents) 133 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 134 self.assertEqual(self.student.current_mode, 'ug_pt') 135 self.assertTrue( 136 '<input type="hidden" name="amount" value="5175000" />' 137 in self.browser.contents) 138 self.assertTrue( 139 'item_name="School Fee" item_amt="4600000" bank_id="7" ' 140 'acct_num="1014847058"' in self.browser.contents) 141 142 def test_interswitch_form_regular_school_fees(self): 143 self.certificate.study_mode = 'ug_ft' 144 self.student['studycourse'].entry_session = 2013 145 self.student['studycourse'].certificate.school_fee_1 = 51750.0 146 # Manager can access InterswitchForm 147 self.browser.addHeader('Authorization', 'Basic mgr:mgrpw') 148 self.browser.open(self.payments_path) 149 IWorkflowState(self.student).setState('cleared') 150 self.student.nationality = u'NG' 151 self.browser.open(self.payments_path + '/addop') 152 self.browser.getControl(name="form.p_category").value = ['schoolfee'] 153 self.browser.getControl("Create ticket").click() 154 self.assertTrue('ticket created' in 143 155 self.browser.contents) 144 self.assertMatches('...Total Amount Authorized:...', 156 ctrl = self.browser.getControl(name='val_id') 157 self.value = ctrl.options[0] 158 self.browser.getLink(self.value).click() 159 self.assertTrue('Amount Authorized' in 145 160 self.browser.contents) 146 self.assertEqual(self.student.current_mode, 'ug_pt') 147 self.assertMatches( 148 '...<input type="hidden" name="amount" value="5175000" />...', 149 self.browser.contents) 150 self.assertMatches( 151 '...item_name="School Fee" item_amt="4600000" bank_id="7" acct_num="1014847058"...', 152 self.browser.contents) 161 self.assertTrue('<span>51750.0</span>' in self.browser.contents) 162 self.payment_url = self.browser.url 163 self.browser.getLink("CollegePAY", index=0).click() 164 self.assertTrue( 165 'Please pay acceptance fee first' in self.browser.contents) 166 acc_payment = createObject('waeup.StudentOnlinePayment') 167 acc_payment.p_state = 'paid' 168 acc_payment.p_category = 'clearance' 169 self.student['payments']['xyz'] = acc_payment 170 self.browser.getLink("CollegePAY", index=0).click() 171 self.assertTrue('<input type="hidden" name="pay_item_id" value="101" />' 172 in self.browser.contents) 173 self.assertTrue('Total Amount Authorized:' 174 in self.browser.contents) 175 self.assertEqual(self.student.current_mode, 'ug_ft') 176 self.assertTrue( 177 '<input type="hidden" name="amount" value="5175000" />' 178 in self.browser.contents) 179 self.assertTrue( 180 'item_name="School Fee" item_amt="4750000" bank_id="117" ' 181 'acct_num="1010827641"' in self.browser.contents) 153 182 154 183 … … 164 193 self.browser.getControl(name="form.p_category").value = ['clearance'] 165 194 self.browser.getControl("Create ticket").click() 166 self.assertMatches('...ticket created...', 195 self.assertTrue('ticket created' in self.browser.contents) 196 ctrl = self.browser.getControl(name='val_id') 197 self.value = ctrl.options[0] 198 self.browser.getLink(self.value).click() 199 self.assertTrue('Amount Authorized' in self.browser.contents) 200 self.assertTrue('<span>43050.0</span>' in self.browser.contents) 201 self.payment_url = self.browser.url 202 self.browser.getLink("CollegePAY", index=0).click() 203 self.assertTrue('<input type="hidden" name="pay_item_id" value="104" />' in 167 204 self.browser.contents) 168 ctrl = self.browser.getControl(name='val_id') 169 self.value = ctrl.options[0] 170 self.browser.getLink(self.value).click() 171 self.assertMatches('...Amount Authorized...', 172 self.browser.contents) 173 self.assertMatches( 174 '...<span>43050.0</span>...', 175 self.browser.contents) 176 self.payment_url = self.browser.url 177 self.browser.getLink("CollegePAY", index=0).click() 178 self.assertMatches('...<input type="hidden" name="pay_item_id" value="104" />...', 179 self.browser.contents) 180 self.assertMatches('...Total Amount Authorized:...', 181 self.browser.contents) 182 self.assertMatches( 183 '...<input type="hidden" name="amount" value="5175000" />...', 184 self.browser.contents) 185 self.assertMatches( 186 '...item_name="Acceptance Fee" item_amt="4280000" bank_id="117" acct_num="1014066976"...', 187 self.browser.contents) 205 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 206 self.assertTrue( 207 '<input type="hidden" name="amount" value="4305000" />' 208 in self.browser.contents) 209 self.assertTrue( 210 'item_name="Acceptance Fee" item_amt="4000000" bank_id="117" ' 211 'acct_num="1014066976"' in self.browser.contents) 212 213 def test_interswitch_form_regular_acceptance_fees(self): 214 self.certificate.study_mode = 'ug_ft' 215 self.app['configuration']['2004'].clearance_fee = 43050.0 216 # Manager can access InterswitchForm 217 self.browser.addHeader('Authorization', 'Basic mgr:mgrpw') 218 self.browser.open(self.payments_path) 219 IWorkflowState(self.student).setState('admitted') 220 self.student.nationality = u'NG' 221 self.browser.open(self.payments_path + '/addop') 222 self.browser.getControl(name="form.p_category").value = ['clearance'] 223 self.browser.getControl("Create ticket").click() 224 self.assertTrue('ticket created' in self.browser.contents) 225 ctrl = self.browser.getControl(name='val_id') 226 self.value = ctrl.options[0] 227 self.browser.getLink(self.value).click() 228 self.assertTrue('Amount Authorized' in self.browser.contents) 229 self.assertTrue('<span>43050.0</span>' in self.browser.contents) 230 self.payment_url = self.browser.url 231 self.browser.getLink("CollegePAY", index=0).click() 232 self.assertTrue('<input type="hidden" name="pay_item_id" value="102" />' 233 in self.browser.contents) 234 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 235 self.assertTrue( 236 '<input type="hidden" name="amount" value="4305000" />' 237 in self.browser.contents) 238 self.assertTrue( 239 'item_name="Acceptance Fee" item_amt="4280000" bank_id="117" ' 240 'acct_num="1010827641"' in self.browser.contents) 241 242 def test_interswitch_form_welfare_fees(self): 243 self.certificate.study_mode = 'ug_pt' 244 self.app['configuration']['2004'].welfare_fee = 1567.0 245 # Manager can access InterswitchForm 246 self.browser.addHeader('Authorization', 'Basic mgr:mgrpw') 247 self.browser.open(self.payments_path) 248 IWorkflowState(self.student).setState('admitted') 249 self.student.nationality = u'NG' 250 self.browser.open(self.payments_path + '/addop') 251 self.browser.getControl(name="form.p_category").value = ['welfare'] 252 self.browser.getControl("Create ticket").click() 253 self.assertTrue('ticket created' in self.browser.contents) 254 ctrl = self.browser.getControl(name='val_id') 255 self.value = ctrl.options[0] 256 self.browser.getLink(self.value).click() 257 self.assertTrue('Amount Authorized' in self.browser.contents) 258 self.assertTrue( 259 '<span>1567.0</span>' in self.browser.contents) 260 self.payment_url = self.browser.url 261 self.browser.getLink("CollegePAY", index=0).click() 262 self.assertTrue('<div class="alert alert-danger">Not applicable</div>' 263 in self.browser.contents) 264 self.certificate.study_mode = 'ug_ft' 265 self.browser.getLink("CollegePAY", index=0).click() 266 self.assertTrue('<input type="hidden" name="pay_item_id" value="105" />' 267 in self.browser.contents) 268 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 269 self.assertTrue( 270 '<input type="hidden" name="amount" value="156700" />' 271 in self.browser.contents) 272 self.assertTrue( 273 'item_name="AAU Student Welfare Assurance Fee" item_amt="131700" ' 274 'bank_id="123" acct_num="1006407792"' 275 in self.browser.contents) 188 276 189 277 def test_interswitch_form_ticket_expired(self): … … 199 287 self.browser.open(self.payments_path + '/xyz') 200 288 self.browser.getLink("CollegePAY", index=0).click() 201 self.assertMatches('...<input type="hidden" name="pay_item_id" value="104" />...', 202 self.browser.contents) 203 self.assertMatches('...Total Amount Authorized:...', 204 self.browser.contents) 289 self.assertTrue('<input type="hidden" name="pay_item_id" value="104" />' 290 in self.browser.contents) 291 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 205 292 self.assertEqual(self.student.current_mode, 'ug_pt') 206 self.assert Matches(207 ' ...<input type="hidden" name="amount" value="87600" />...',208 self.browser.contents)293 self.assertTrue( 294 '<input type="hidden" name="amount" value="87600" />' 295 in self.browser.contents) 209 296 delta = timedelta(days=8) 210 297 acc_payment.creation_date -= delta 211 298 self.browser.open(self.payments_path + '/xyz') 212 299 self.browser.getLink("CollegePAY", index=0).click() 213 self.assert Matches(214 ' ...This payment ticket is too old. Please create a new ticket...',215 self.browser.contents)300 self.assertTrue( 301 'This payment ticket is too old. Please create a new ticket' 302 in self.browser.contents) 216 303 delta = timedelta(days=2) 217 304 acc_payment.creation_date += delta 218 305 self.browser.open(self.payments_path + '/xyz') 219 306 self.browser.getLink("CollegePAY", index=0).click() 220 self.assertMatches('...Total Amount Authorized:...', 221 self.browser.contents) 307 self.assertTrue('Total Amount Authorized:' in self.browser.contents) 222 308 223 309 @external_test … … 230 316 self.browser.getControl(name="form.p_category").value = ['schoolfee'] 231 317 self.browser.getControl("Create ticket").click() 232 self.assertMatches('...ticket created...', 233 self.browser.contents) 318 self.assertTrue('ticket created' in self.browser.contents) 234 319 ctrl = self.browser.getControl(name='val_id') 235 320 self.value = ctrl.options[0] … … 241 326 # Now we can call the webservice 242 327 self.browser.open(self.payment_url + '/request_webservice') 243 self.assertMatches('...Unsuccessful callback...', 244 self.browser.contents) 328 self.assertTrue('Unsuccessful callback' in self.browser.contents) 245 329 # The payment is now in state failed ... 246 self.assertMatches('...<span>Failed</span>...', 247 self.browser.contents) 330 self.assertTrue('<span>Failed</span>' in self.browser.contents) 248 331 # ... and the catalog has been updated 249 332 cat = getUtility(ICatalog, name='payments_catalog') … … 261 344 payment.p_id = 'p3547789850240' 262 345 self.browser.open(self.payment_url + '/request_webservice') 263 self.assert Matches('...Callback amount does not match...',346 self.assertTrue('Callback amount does not match' in 264 347 self.browser.contents) 265 348 # The payment is now in state failed ... 266 self.assertMatches('...<span>Failed</span>...', 267 self.browser.contents) 349 self.assertTrue('<span>Failed</span>' in self.browser.contents) 268 350 # Let's replace the amount autorized with the amount of the 269 351 # live system payment 270 352 payment.amount_auth = payment.r_amount_approved 271 353 self.browser.open(self.payment_url + '/request_webservice') 272 self.assert Matches('...Successful payment...',354 self.assertTrue('Successful payment' in 273 355 self.browser.contents) 274 356 # The payment is now in state paid ... 275 self.assertMatches('...<span>Paid</span>...', 276 self.browser.contents) 357 self.assertTrue('<span>Paid</span>' in self.browser.contents) 277 358 # ... and the catalog has been updated 278 359 cat = getUtility(ICatalog, name='payments_catalog')
Note: See TracChangeset for help on using the changeset viewer.