9 function RDCconfig($dbh,&$parms) {
11 $parms[
'serviceurl'] =
"";
12 $parms[
'acctttl'] = (!isset($parms[
'acctttl']) ?
'Select account' : $parms[
'acctttl'] );
13 $parms[
'descttl'] = (!isset($parms[
'descttl']) ?
'Description' : $parms[
'descttl'] );
16 function RDCauth($dbh, $HB_ENV, $MC, $parms) {
17 # requires: $parms['Cu'] 19 # Additional values rdcvendor retrieved and decoded from cutrusteddetail 22 # assume we are going to succeed... 23 $return[
'status'][
'response'] =
'true';
24 $return[
'status'][
'code'] =
'000';
25 $return[
'status'][
'message'] =
'Success';
28 # If authorizing at HomeCU, is member authorized? 29 if ($parms[
'HomeCUAuth']) {
30 $mbr_rdc = Get_RDCSetting($dbh, $HB_ENV,
'RDCTest', $parms[
'MBRACCT']);
31 if ($mbr_rdc[
'status'][
'code'] !=
'000') {
32 throw new Exception($mbr_rdc[
'status'][
'message'], $mbr_rdc[
'status'][
'code']);
34 $dl = $mbr_rdc[
'rdcsetting'];
35 if (abs(intval($dl)) == 0) {
37 $HB_Notices_ary = Get_NoticeInfo($dbh, $HB_ENV, $MC,
'M',
"mblNoRDC",
true);
38 if ($HB_Notices_ary[
'status'][
'code'] ==
'000') {
39 $noticeData = $HB_Notices_ary[
"notice"][0][
"notice_text"];
43 if (strlen($noticeData)) {
44 $message = $noticeData;
47 $message =
"Account not permitted for Remote Deposit. Please contact the Credit Union for more information";
50 throw new Exception($message, $code);
53 # member authorized, or not authorizing at HomeCU. 54 # check if they have any valid accounts 55 $parms[
'Fset2'] = $HB_ENV[
'Fset2']; # HB_ENV
56 $parms[
'Fset3'] = $HB_ENV[
'Fset3']; # HB_ENV
57 $parms[
'Uid'] = $HB_ENV[
'Uid'];
58 $hculist = RDCGetAccts($dbh, $parms);
60 if ($hculist[
'status'][
'response'] ==
'false') {
61 throw new Exception($hculist[
'status'][
'message'], $hculist[
'status'][
'code']);
64 # got a valid RDC account list 66 $parms[
'RDCAcctList'] = $hculist[
'data'];
67 $parms[
'deplimit'] = (isset($dl) ? $dl : 0);
69 # Check first for valid session key, if not found, start session 70 # make sure prior deposit finished before re-using key? No, could just abandon one.... 72 $session = curdc_read($dbh,array(
'Cu'=>$parms[
'Cu'],
'Uid' => $HB_ENV[
'Uid'],
'MBRACCT'=>$parms[
'MBRACCT']));
75 if ($session[
'status'][
'response'] ==
'true' &&
76 isset($session[
'data'][
'vendorinfo'][
'Vendortime']) &&
77 ($vtime - $session[
'data'][
'vendorinfo'][
'Vendortime']) < 720) { # less than 12 minutes)
78 if ($session[
'data'][
'status'] ==
'S' ) {
80 # session key not used yet for any deposit activity (presumably just history) 81 # use this record instead of building a new one 82 # return info including depmessages 83 $parms[
'depositid'] = $session[
'data'][
'depositid'];
84 $parms[
'rdcstatus'] =
'S';
85 $parms[
'vendorinfo'] = $session[
'data'][
'vendorinfo'];
86 $return[
'data'][
'accounts']=$parms[
'vendorinfo'][
'accounts'];
87 $return[
'data'][
'terms']=$parms[
'vendorinfo'][
'terms'];
88 $return[
'data'][
'depmessages']=$parms[
'vendorinfo'][
'depmessages'];
89 $return[
'data'][
'scanlimit']=$parms[
'vendorinfo'][
'scanlimit'];
92 $parms[
'rdcstatus'] =
'S';
93 $parms[
'vendorinfo'] = array(
'Vendortime' => $session[
'data'][
'vendorinfo'][
'Vendortime'],
94 "accounts" => $session[
'data'][
'vendorinfo'][
'accounts'],
95 "scanlimit" => $session[
'data'][
'vendorinfo'][
'scanlimit'],
96 "depmessages" => $session[
'data'][
'vendorinfo'][
'depmessages'],
97 "terms" => $session[
'data'][
'vendorinfo'][
'terms']);
98 $return[
'data'][
'accounts']=$parms[
'vendorinfo'][
'accounts'];
99 $return[
'data'][
'terms']=$parms[
'vendorinfo'][
'terms'];
100 # return basic info only if we are recycling a session 103 # no session to recycle, or only old sessions 104 # get the rdctest ScanLimit 105 # according to Bluepoint, this call also auto-creates a record 106 # for new users. So call this BEFORE the GetActiveStatus 107 # but still check status in case they were created w/pending status 108 $rdcresult = rdctestGetReviewLimits($parms);
109 # check return values for error 110 if ($rdcresult[
'status'][
'response'] ==
'false') {
111 throw new Exception(
"RDCTest Connection failed \n{$rdcresult['status']['message']}",300);
113 if ($rdcresult[
'data'][
'Limits'][
'ScanLimit'] <= 0) {
114 # Scan limit negative or zero - don't know if this is even possible, but just in case... 115 throw new Exception(
'RDCTest ScanLimit negative or zero',300);
117 $rdcActiveStatus = rdctestGetActiveStatus($parms);
119 if ($rdcActiveStatus[
'status'][
'response'] ==
'false') {
120 throw new Exception(
'RDCTest Connection failed',300);
122 if ($rdcActiveStatus[
'data'][
'Status'] !=
'Active') {
123 $HB_Notices_ary = Get_NoticeInfo($dbh, $HB_ENV, $MC,
'M',
"mblNoRDC",
true);
124 if ($HB_Notices_ary[
'status'][
'code'] ==
'000') {
125 $noticeData = $HB_Notices_ary[
"notice"][0][
"notice_text"];
129 if ( strlen( $noticeData ) ) {
130 $message = $noticeData;
133 $message =
"Account not permitted for Remote Deposit. Please contact the Credit Union for more information";
136 throw new Exception($message, $code);
139 $parms[
'ScanLimit'] = $rdcresult[
'data'][
'Limits'][
'ScanLimit'];
143 $parms[
'rdcstatus'] =
'S';
145 if ($parms[
'HomeCUterms']) {
146 $rdcterms = hcuGetRDCterms($dbh, $HB_ENV, $MC);
148 if ($rdcterms[
'status'][
'response'] ==
'false') {
149 $e =
"HCU GetTerms call failed ({$rdcterms['status']['code']} {$rdcterms['status']['message']}";
150 throw new Exception($e ,301);
152 if ($rdcterms[
'data'][
'notice_popup'] == 1) {
153 $parms[
'rdcstatus'] =
'T';
156 $parms[
'rdcstatus'] =
'S';
159 $return = RDCPresentAccounts($parms, $hculist, $rdcresult, $rdcterms);
161 if ($return[
'status'][
'response'] ==
'false') {
163 throw new Exception($return[
'status'][
'message'], $return[
'status'][
'code']);
165 $depmessages=array();
166 $parms[
'vendorinfo'] = array(
'Vendortime' => mktime(),
167 'userAgent' => $_SERVER[
'HTTP_USER_AGENT'],
168 'userIP' => $_SERVER[
'REMOTE_ADDR'],
169 'accounts' => $return[
'data'][
'accounts'],
170 'scanlimit' => $rdcresult[
'data'][
'Limits'][
'ScanLimit'],
171 'depmessages' => $depmessages,
172 'terms' => HCU_array_key_value(
'terms',$return[
'data']));
175 # start curdc record, return depositid as part of result 176 $depostat = curdc_start($dbh, $parms);
177 if ($depostat[
'status'][
'response'] ==
'false') {
179 throw new Exception(
'HomeCU Start Deposit Failed', 200);
181 $parms[
'depositid'] = $depostat[
'data'][
'depositid'];
184 $return[
'data'][
'depositid'] = $parms[
'depositid'];
185 $return[
'data'][
'depmessages']=$parms[
'vendorinfo'][
'depmessages'];
187 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
188 'vendorinfo' => json_encode($parms[
'vendorinfo'])));
189 if ($depostat[
'status'][
'response'] ==
'false') {
191 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
193 }
catch (Exception $e) {
194 $return[
'status'][
'response'] =
'false';
195 $return[
'status'][
'code'] = $e->getCode();
196 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
201 function RDCaccept($dbh, $HB_ENV, $MC, $parms) {
202 # requires: $parms['Cu'] 203 # $parms['depositid'] 204 # Additional values retrieved and decoded from cutrusteddetail 205 # or from curdcstatus record using depositid as key 207 # assume we are going to succeed... 208 $return[
'status'][
'response'] =
'true';
209 $return[
'status'][
'code'] =
'000';
210 $return[
'status'][
'message'] =
'Success';
213 if (!isset($parms[
'Cu']) || !isset($parms[
'depositid'])) {
214 throw new Exception(
'Missing Parameters',100);
218 $depo = curdc_read($dbh, $parms);
219 if ($depo[
'status'][
'response'] ==
'false') {
220 throw new Exception(
'HomeCU DepositID not found',205);
223 # look up rdcTerms doc and then update to show acceptance 225 $noticeInfo = Get_NoticeInfo($dbh, $HB_ENV, $MC,
"P",
"rdcTerms",
false);
226 if ($noticeInfo[
"status"][
"code"] ==
"000" &&
227 HCU_array_item_count(
'notice',$noticeInfo) &&
228 intval($noticeInfo[
'notice'][0][
'notice_id']) > 0) {
229 # action P post so set up the HCUPOST array 230 $HB_ENV[
'HCUPOST'][
'notice_id'] = $noticeInfo[
'notice'][0][
'notice_id'];
231 $HB_ENV[
'HCUPOST'][
'notice_type'] = $noticeInfo[
'notice'][0][
'notice_type'];
232 $HB_ENV[
'HCUPOST'][
'notice_device'] =
'P';
233 $HB_ENV[
"HCUPOST"][
'notice_response'] = array(
"answer" => 1);
234 # not sure if the next two are needed - 235 $HB_ENV[
"HCUPOST"][
'notice_cancel'] =
"0";
236 $HB_ENV[
'HCUPOST'][
'notice_msg_show'] = 1;
237 $noticeUpd = Update_NoticeInfo($dbh, $HB_ENV, $MC);
239 $return[
'status'][
'message'] =
'Accept Terms OK';
240 $vendorinfo = $depo[
'vendorinfo'];
241 $vendorinfo[
'terms']=
'';
242 $vendorinfo[
'Vendortime'] = mktime();
243 $parms[
'vendorinfo'] = $vendorinfo;
247 # update curdcstatus record 248 $parms[
'rdcstatus'] =
'O';
250 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
251 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($parms[
'vendorinfo'])));
252 if ($depostat[
'status'][
'response'] ==
'false') {
254 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
257 }
catch (Exception $e) {
258 $return[
'status'][
'response'] =
'false';
259 $return[
'status'][
'code'] = $e->getCode();
260 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
264 function RDChistorylist($dbh, $parms) {
265 # requires: $parms['Cu'] 266 # $parms['depositid'] 267 # Additional values retrieved and decoded from cutrusteddetail 268 # or from curdcstatus record using depositid as key 270 # assume we are going to succeed... 271 $return[
'status'][
'response'] =
'true';
272 $return[
'status'][
'code'] =
'000';
273 $return[
'status'][
'message'] =
'Success';
276 if (!isset($parms[
'Cu']) || !isset($parms[
'depositid'])) {
277 throw new Exception(
'Missing Parameters',100);
281 $depo = curdc_read($dbh, $parms);
282 if ($depo[
'status'][
'response'] ==
'false') {
283 throw new Exception(
"HomeCU DepositID not found [{$parms['depositid']}]",205);
285 $rdcresult = rdctestGetCustomerHistory($parms);
286 if ($rdcresult[
'status'][
'response'] ==
'false') {
287 throw new Exception(
'RDCTest Get History List call failed',305);
289 foreach ($rdcresult[
'data'][
'ItemList'] as $histkey =>$aval) {
290 foreach($aval as $ikey => $ival) {
292 foreach($ival as $zkey => $zval) {
293 $histitem[$zval[
'Parameter']] = $zval[
'Value'];
298 $rdcresult[
'data'][
'TransactionList'][$histkey][
'ReceiptReferenceNo']=$histitem[
'ItemRecID'];
299 $rdcresult[
'data'][
'TransactionList'][$histkey][
'transactionid']=$histitem[
'ItemRecID'];
300 $rdcresult[
'data'][
'TransactionList'][$histkey][
'transactiondttm']=$histitem[
'ScannedDate'];
301 $rdcresult[
'data'][
'TransactionList'][$histkey][
'submittedamount']=sprintf(
'%.2f',floatval($histitem[
'ItemAmount']));
302 $rdcresult[
'data'][
'TransactionList'][$histkey][
'currentamount']=sprintf(
'%.2f',floatval($histitem[
'AcceptedAmount']));
303 $rdcresult[
'data'][
'TransactionList'][$histkey][
'status']=$histitem[
'Status'];
304 $rdcresult[
'data'][
'TransactionList'][$histkey][
'statusdescr']=$histitem[
'Status'];
305 $rdcresult[
'data'][
'TransactionList'][$histkey][
'accountnumber']=$histitem[
'Account'];
307 $return[
'status'][
'message'] =
'RDCTest History List OK';
308 $vendorinfo = (HCU_array_key_exists(
'vendorinfo',$depo) ? $depo[
'vendorinfo'] : array() );
309 $vendorinfo[
'Vendortime'] = mktime();
310 $parms[
'vendorinfo'] = $vendorinfo;
312 # update curdcstatus record 314 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
315 'vendorinfo' => json_encode($parms[
'vendorinfo'])));
316 if ($depostat[
'status'][
'response'] ==
'false') {
318 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
320 $return[
'data']=$rdcresult[
'data'];
321 $return[
'data'][
'rdcvendor']=$depo[
'data'][
'rdcvendor'];
323 }
catch (Exception $e) {
324 $return[
'status'][
'response'] =
'false';
325 $return[
'status'][
'code'] = $e->getCode();
326 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
331 function RDChistorydetl($dbh, $parms) {
332 # coded for Ensenta only? 333 # requires: $parms['Cu'] 334 # $parms['transactionid'] 335 # Additional values retrieved and decoded from cutrusteddetail 336 # or from curdcstatus record using depositid as key 338 # assume we are going to succeed... 339 $return[
'status'][
'response'] =
'true';
340 $return[
'status'][
'code'] =
'000';
341 $return[
'status'][
'message'] =
'Success';
344 if (!isset($parms[
'Cu']) || !isset($parms[
'transactionid']) || !isset($parms[
'depositid'])) {
345 throw new Exception(
'Missing Parameters',100);
349 $depo = curdc_read($dbh, $parms);
350 if ($depo[
'status'][
'response'] ==
'false') {
351 throw new Exception(
'HomeCU DepositID not found',205);
353 # update curdcstatus record 354 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
355 'vendorinfo' => json_encode($parms[
'vendorinfo'])));
356 if ($depostat[
'status'][
'response'] ==
'false') {
358 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
360 $return[
'data']=$rdcresult[
'data'];
363 }
catch (Exception $e) {
364 $return[
'status'][
'response'] =
'false';
365 $return[
'status'][
'code'] = $e->getCode();
366 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
371 function RDCdeposit($dbh, $parms) {
372 # requires: $parms['Cu'] 373 # $parms['depositid'] 376 # Additional values retrieved and decoded from cutrusteddetail 377 # or from curdcstatus record using depositid as key 379 # assume we are going to succeed... 380 $return[
'status'][
'response'] =
'true';
381 $return[
'status'][
'code'] =
'000';
382 $return[
'status'][
'message'] =
'Success';
384 if (!isset($parms[
'Cu']) || !isset($parms[
'depositid']) ||
385 !isset($parms[
'amount']) || !isset($parms[
'acctid']) ) {
386 throw new Exception(
'Missing Parameters', 100);
395 $depo = curdc_read($dbh, $parms);
396 if ($depo[
'status'][
'response'] ==
'false') {
397 throw new Exception(
'HomeCU DepositID not found', 205);
400 switch ($depo[
'data'][
'status']) {
402 $fail=
'Must accept terms of use before depositing funds';
405 $fail=
'Deposit has been rejected';
408 $fail=
'Deposit already completed';
412 if (!isset($parms[
'POSTAWAY'])) {
413 $fail=
'Deposit requires override confirmation';
418 throw new Exception($fail,229);
420 if (is_null($depo[
'data'][
'frontpath']) || is_null($depo[
'data'][
'backpath'])
421 || !getimagesize($depo[
'data'][
'frontpath']) || !getimagesize($depo[
'data'][
'backpath'])) {
422 throw new Exception(
'Check Images not found', 220);
424 $vendorinfo = $depo[
'data'][
'vendorinfo'];
427 $depostat = curdc_update($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
428 'amount' => $parms[
'amount'],
'acctid' => $parms[
'acctid']));
429 if ($depostat[
'status'][
'response'] ==
'false') {
430 throw new Exception(
'HomeCU Update Deposit Amount Failed', 225);
433 $acctid = $parms[
'acctid'];
434 $hculist = RDCGetAccts($dbh, $parms, $acctid);
436 if ($hculist[
'status'][
'response'] !==
'true') {
437 throw new Exception(
'Invalid Deposit Account', 230);
439 if ( $vendorinfo[
'scanlimit'] < ($parms[
'amount'] * .01)) {
440 throw new Exception(
"Deposit Amount Exceeds Deposit Limit (" .
441 sprintf(
'%.2f',$vendorinfo[
'scanlimit']) .
")",231);
443 $parms[
'AccountNumber'] = $vendorinfo[
'accounts'][$acctid][
'suffix'];
444 # set default AccountType, then override if configured 445 $parms[
'AccountType'] = $vendorinfo[
'accounts'][$acctid][
'rdcdesc'];
446 switch ($vendorinfo[
'accounts'][$acctid][
'rdcdesc']) {
448 if (isset($parms[
'Ck_rdctype'])) {
449 $parms[
'AccountType'] = $parms[
'Ck_rdctype'];
453 if (isset($parms[
'Sv_rdctype'])) {
454 $parms[
'AccountType'] = $parms[
'Sv_rdctype'];
458 $parms[
'AccountType'] = $vendorinfo[
'accounts'][$acctid][
'rdcdesc'];
462 $parms[
'CheckFront'] = base64_encode(file_get_contents($depo[
'data'][
'frontpath']));
463 $parms[
'CheckBack'] = base64_encode(file_get_contents($depo[
'data'][
'backpath']));
464 $rdcresult = rdctestDepositItem($parms);
465 if ($rdcresult[
'status'][
'response'] ==
'false') {
466 throw new Exception(
'DepositItem call failed', 242);
468 # if no DepositStatus use Result instead 469 $rstat = (
"{$rdcresult['data']['DepositStatus']}" ==
"" ? $rdcresult[
'data'][
'Result'] : $rdcresult[
'data'][
'DepositStatus']);
472 if ( $parms[
"amount"] > 100 && $parms[
"amount"] < 200 ) {
473 if ( $parms[
'amount'] == 133 ) {
475 $rdcresult[
'data'][
'DepositStatus'] =
"Failed";
476 $rdcresult[
'data'][
'Message'] =
"I guess donkeys fly some of the time";
478 $return[
'status'][
'code'] =
'000';
479 $return[
'status'][
'response'] =
'true';
480 $return[
'status'][
'message'] =
'Ensenta Evaluate Results';
484 $fc = (
"false" ==
'true' ?
'Confirmable' :
485 (
"true" ==
'true' ?
'Fixable' :
'Rejected'));
488 $reportrisks[] = array(
'RiskId' =>
"111",
489 'RiskDesc' =>
"Risk message 1: Your donkey bites",
493 $fc = (
"false" ==
'true' ?
'Confirmable' :
494 (
"true" ==
'true' ?
'Fixable' :
'Rejected'));
497 $reportrisks[] = array(
'RiskId' =>
"222",
498 'RiskDesc' =>
"Risk message 2: Your donkey snorts boogers when it brays",
501 }
else if ( $parms[
'amount'] == 144 ) {
503 $rdcresult[
'data'][
'DepositStatus'] =
"Failed";
504 $rdcresult[
'data'][
'Message'] =
"Beware the wooly rebellion";
506 $return[
'status'][
'code'] =
'000';
507 $return[
'status'][
'response'] =
'true';
508 $return[
'status'][
'message'] =
'Ensenta Evaluate Results';
512 $fc = (
"true" ==
'true' ?
'Confirmable' :
513 (
"true" ==
'true' ?
'Fixable' :
'Rejected'));
516 $reportrisks[] = array(
'RiskId' =>
"111",
517 'RiskDesc' =>
"Risk message 1: Your sheep bites",
521 $fc = (
"true" ==
'true' ?
'Confirmable' :
522 (
"true" ==
'true' ?
'Fixable' :
'Rejected'));
525 $reportrisks[] = array(
'RiskId' =>
"222",
526 'RiskDesc' =>
"Risk message 2: Your sheep has run amuck",
529 }
else if ( $parms[
'amount'] == 155 ) {
531 $rdcresult[
'data'][
'DepositStatus'] =
"Failed";
532 $rdcresult[
'data'][
'Message'] =
"Thou Shalt Not Pass!";
534 $return[
'status'][
'code'] =
'000';
535 $return[
'status'][
'response'] =
'true';
536 $return[
'status'][
'message'] =
'Deposit Evaluate Results';
540 $fc = (
"false" ==
'true' ?
'Confirmable' :
541 (
"false" ==
'true' ?
'Fixable' :
'Rejected'));
544 $reportrisks[] = array(
'RiskId' =>
"111",
545 'RiskDesc' =>
"Risk message 1: No hobbits allowed",
549 $fc = (
"false" ==
'true' ?
'Confirmable' :
550 (
"false" ==
'true' ?
'Fixable' :
'Rejected'));
553 $reportrisks[] = array(
'RiskId' =>
"222",
554 'RiskDesc' =>
"Risk message 2: Hobbitses stole my Precious",
559 throw new Exception(
'Faked error: Deposit Cannot be processed as submitted (amount between 1.00 and 2.00', 9121);
563 $returnStatus =
'R'; # rejected, something is neither fixable nor confirmable
565 $returnStatus =
'F'; # at least one Fixable risk found, something (probably amount) must change
567 $returnStatus =
'B'; # most severe risk was Confirmable, ok to insist
570 $return[
'data'][
'Risks'] = $reportrisks;
571 $return[
'data'][
'HCUReceiptMessage'] =
"";
572 $return[
'data'][
'fundsavailable'] =
"";
573 $return[
'data'][
'depositid'] = $parms[
'depositid'];
574 $return[
"data"][
"rdcstatus"] = $returnStatus;
579 # check return values for error 582 case "LimitExceeded":
584 case "TimeoutExceeded":
585 case "InvalidAdminCredentials":
586 case "InvalidCredentials":
587 case "UserUnauthorized":
588 case "InvalidRequestdata":
589 case "HubConnectionDown":
590 case "MitekConnectionDown":
591 case "DuplicateMicrNotAllowed":
592 $parms[
'rdcstatus'] =
'R';
593 $vendorinfo[
'Vendortime'] = mktime();
594 $vendorinfo[
'DepositStatus'] = $rstat;
595 $vendorinfo[
'Message'] = $rdcresult[
'data'][
'Message'];
596 $vendorinfo[
'DepositTime'] = date(
'YmdHis');
597 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
598 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($vendorinfo)));
599 if ($depostat[
'status'][
'response'] ==
'false') {
600 throw new Exception(
'HomeCU Update Vendorinfo Failed', 240);
602 throw new Exception($rdcresult[
'data'][
'DepositStatus'] .
' ' . $rdcresult[
'data'][
'Message'] .
' Deposit Cannot be processed as submitted', 241);
607 $receipt = (
"{$rdcresult['data']['ItemRecID']}" ==
"" ? $rdcresult[
'data'][
'BatchID'] .
"-" . $rdcresult[
'data'][
'BatchRecID'] : $rdcresult[
'data'][
'ItemRecID']);
608 $parms[
'rdcstatus'] =
'C';
609 $vendorinfo[
'Vendortime'] = mktime();
610 $vendorinfo[
'DepositStatus'] = $rstat;
611 $vendorinfo[
'Message'] = $rdcresult[
'data'][
'Message'];
612 $vendorinfo[
'Review'] = $rdcresult[
'data'][
'SentToReview'];
613 $vendorinfo[
'TransactionReceiptNumber'] = $receipt;
614 $vendorinfo[
'TransactionDateTime'] = date(
'c');
616 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
'frontaccept' =>
'Y',
617 'backaccept' =>
'Y',
'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($vendorinfo)));
618 if ($depostat[
'status'][
'response'] ==
'false') {
619 throw new Exception(
'HomeCU Update Vendorinfo Failed', 240);
621 $return[
'status'][
'response'] =
'true';
622 $return[
'status'][
'message'] =
'RDCTest Deposit Complete';
623 # this returns everything from Ensenta, but that will be a problem if we add other vendors 624 # pick a list of stuff to return and be consistent for everyone? 625 $return[
'data'] = $rdcresult[
'data'];
626 $return[
'data'][
'depositid'] = $parms[
'depositid'];
627 $return[
'data'][
'rdcstatus'] = $parms[
'rdcstatus'];
628 # use the Ensenta names for values the apps look for -- 629 $return[
'data'][
'TransactionReceiptNumber'] = $receipt;
630 $return[
'data'][
'TransactionDateTime'] = date(
'c');
631 $return[
'data'][
'MaskedAccountholderNumber'] = $vendorinfo[
'accounts'][$acctid][
'suffix'];
633 $hcumessage =
"To force an error, use amount: 1.33 (confirmable error) 1.44 (fixable error) 1.55 (rejected error). ";
634 if (
"{$rdcresult['data']['ItemRecID']}" ==
"" ) {
635 $hcumessage .=
"Your deposit request for account {$vendorinfo['accounts'][$acctid]['suffix']} has been received pending review";
637 $hcumessage .=
"Your deposit request for account {$vendorinfo['accounts'][$acctid]['suffix']} has been received";
638 if ($rdcresult[
'data'][
'SentToReview'] ==
'true') {
639 $hcumessage .=
" pending review";
641 $hcumessage .=
". Your confirmation number is '{$rdcresult['data']['ItemRecID']}'. ";
642 $hcumessage .=
"Please save this number and refer to it if you need to contact the credit union regarding this transaction. ";
645 $return[
'data'][
'fundsavailable'] =
"Pretend Funds Available Message: 12.34";
647 if ($parms[
'live'] && $parms[
'postHomeCU']) {
648 if ($rdcresult[
'data'][
'DepositStatus'] ==
'Passed' && $rdcresult[
'data'][
'SentToReview'] !=
'true') {
649 # post live transaction 650 list($statcode, $statdesc, $confcode) = post_pkt_track(
651 $vendorinfo[
'accounts'][$acctid][
'tomember'],
'ED', $vendorinfo[
'accounts'][$acctid][
'suffix'],
652 $rdcresult[
'data'][
'ItemRecID'], $parms[
'Ml'],
'', $vendorinfo[
'accounts'][$acctid][
'tomember'],
653 $parms[
'amount'], $parms[
'MBRACCT'],
'');
657 $return[
'data'][
'HCUReceiptMessage'] = $hcumessage;
660 }
catch (Exception $e) {
661 $return[
'status'][
'response'] =
'false';
662 $return[
'status'][
'code'] = $e->getCode();
663 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
668 function RDCGetAccts($dbh, $parms, $Acctid=
"") {
672 if (!isset($parms[
'Cu']) || !isset($parms[
'Uid']) || !isset($parms[
'MBRACCT'])) {
674 $AcctList[
'status'][
'response'] =
'false';
675 $AcctList[
'status'][
'code'] =
'910';
676 $AcctList[
'status'][
'message'] =
'Missing RDC Account Parameters'; # RDCGetAccts missing Cu/Uid/MBRACCT
683 $Uid = $parms[
'Uid'];
684 $MBRACCT = $parms[
'MBRACCT'];
686 # default allow deposit, loan pmt, credit card pmt 687 $rtxn = ( HCU_array_item_count(
'rtxn',$parms) == 0 ?
688 array(
'AT' => 1,
'LP' => 1,
'CP' => 1) :
689 json_decode($parms[
'rtxn'],TRUE) );
690 $savingsql = (!isset($parms[
'savingsql']) ?
691 "trim(accounttype)" :
692 $parms[
'savingsql'] );
693 $draftsql = (!isset($parms[
'draftsql']) ?
694 "trim(accounttype)" :
695 $parms[
'draftsql'] );
696 $loansql = (!isset($parms[
'loansql']) ?
699 $mbrsql = (!isset($parms[
'mbrsql']) ?
700 "trim(accountnumber)" :
704 # fetch transactions types 706 $sql =
"select ht.trancode, trim(t.trandesc), trim(ht.cudesc), t.specialproc 707 from cutrans t, cuhavetrans ht 709 and ht.trancode = t.trancode\n";
711 $sth = db_query($sql, $dbh);
713 # Return a line for each allowed transaction type. 716 for ($row = 0; list($code, $desc, $cudesc, $spec) = db_fetch_array($sth, $row); $row++) {
717 $txncodes{$code} = array($desc, $spec, $cudesc);
719 db_free_result($sth);
724 $sv_rdctype = (!isset($parms[
'sv_rdctype']) ?
'0' : $parms[
'sv_rdctype']);
725 $ck_rdctype = (!isset($parms[
'ck_rdctype']) ?
'1' : $parms[
'ck_rdctype']);
726 $ln_rdctype = (!isset($parms[
'ln_rdctype']) ?
'128' : $parms[
'ln_rdctype']);
727 $sv_rdctype = (str_word_count ( $sv_rdctype , 0 ,
'0123456789' ) > 1 ? $sv_rdctype :
"'$sv_rdctype'");
728 $ck_rdctype = (str_word_count ( $ck_rdctype , 0 ,
'0123456789' ) > 1 ? $ck_rdctype :
"'$ck_rdctype'");
729 $ln_rdctype = (str_word_count ( $ln_rdctype , 0 ,
'0123456789' ) > 1 ? $ln_rdctype :
"'$ln_rdctype'");
731 # find out how many valid accounts the member has: 732 $sql =
"WITH accountlist as ( 733 SELECT ab.accountnumber, 736 ua.accounttype as accounttype, 737 ua.certnumber as certnumber, 740 ua.view_transactions, 742 'DP' as cbtype, amount as currentbalance, 744 trim(ab.micraccount) as micraccount 745 FROM {$Cu}useraccounts as ua 746 INNER JOIN {$Cu}accountbalance as ab ON ab.accountnumber = ua.accountnumber 747 AND ab.accounttype = ua.accounttype 748 AND ua.certnumber = ua.certnumber 749 WHERE ua.user_id = $Uid 750 AND ua.accountnumber = '{$MBRACCT}' 751 AND ua.recordtype = 'D' 752 AND ab.may_deposit = true ) ";
754 if (HCU_array_key_exists(
'AT',$txncodes) && HCU_array_key_exists(
'AT',$rtxn)) {
755 # $txncodes is configured list @HCU - $rtxn is allowed list for RDC 758 $sql .=
"SELECT recordtype as tbl, 759 $mbrsql as rdcmember, trim(description) as description, 760 trim(display_name) as display_name, 761 trim(accounttype) as accounttype, $savingsql as suffix, 762 certnumber as certnumber, $sv_rdctype as rdctype, 763 display_order, trim(accountnumber) as accountnumber 765 WHERE recordtype = 'D' 766 AND upper(deposittype) in ('S','N') 768 SELECT recordtype, $mbrsql as rdcmember, 769 trim(description), trim(display_name), 770 trim(accounttype), $draftsql, 771 certnumber, $ck_rdctype, display_order, 774 WHERE recordtype = 'D' 775 AND upper(deposittype) = 'Y' ";
777 $sql .=
" order by 6,2,3";
778 $acct_rs = db_query($sql, $dbh);
781 if (db_num_rows($acct_rs) == 0) {
783 $AcctList[
'status'][
'response'] =
'false';
784 $AcctList[
'status'][
'code'] =
'920';
785 $AcctList[
'status'][
'message'] = htmlspecialchars(
'No Eligible RDC <test>Accounts', ENT_QUOTES,
'UTF-8',FALSE); # RDCGetAccts no valid accounts
786 $AcctList[
'status'][
'sql'] = $sql;
789 $AcctList[
'status'][
'response'] =
'true';
790 $AcctList[
'status'][
'code'] =
'000';
791 $AcctList[
'status'][
'message'] =
'Success';
793 $Fset3 = $parms[
'Fset3']; # HB_ENV
795 for ($row = 0; $drow = db_fetch_array($acct_rs, $row); $row++) {
797 $accounttype = $drow[
'accounttype'];
798 $suffix = $drow[
'suffix'];
799 $cert = $drow[
'certnumber'];
800 $rdctype = $drow[
'rdctype'];
812 $rdcdesc=
'CreditCard';
824 $rdcmember = $drow[
'rdcmember'];
825 if (strpos($accounttype,
"@")) {
826 list($jtype,$jacct) = explode(
"@",$accounttype);
833 $tokn = sha1(
"${Uid}${accounttype}${Cu}${rdctype}obl1vi0u5");
836 $desc = getAccountDescription($dbh, $Cu, $drow[
'accountnumber'], $drow[
'description'], $drow[
'accounttype'], $drow[
'display_name'], $Fset3, $drow[
'certnumber'],
false,
false);
837 $desc = htmlspecialchars($desc, ENT_QUOTES,
'UTF-8',FALSE);
838 $displaydesc = $desc;
840 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'accounttype'] = $accounttype;
841 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'suffix'] = $suffix;
842 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'certnumber'] = $cert;
843 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'acctclass'] = $tbl;
844 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'description'] = $desc;
845 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'tokn'] =
"$tokn";
846 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'Uid'] =
"$Uid";
847 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'trust'] =
"$trust";
848 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'displaydesc'] =
"$displaydesc";
849 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'rdctype'] = $rdctype;
850 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'rdcdesc'] = $rdcdesc;
851 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'rdcmember'] = $rdcmember;
854 if (!empty($Acctid)) {
855 # got an account identifier - return one only 856 $AcctList[
'data'][$Acctid]=$Accts[$Acctid];
858 $AcctList[
'data']=$Accts;
909 function RDCPresentAccounts($parms, $hculist, $rdcsent, $rdcterms) {
910 # build array list to send to app 912 # include terms to be accepted if they are provided 913 # include labels acctttl, descttl 914 $pass_along = $rdcsent; # GetReviewLimits result
915 $pass_along[
'data'][
'accounts']=$hculist[
'data'];
916 # Bluepoint doesn't filter accounts, just pass what we got from DB 917 # Bluepoint doesn't serve terms 12/5/2014 now serving from HCU 918 if (
sizeof($rdcterms) > 0)
919 $pass_along[
'data'][
'terms'] = $rdcterms[
'data'][
'terms'];
920 $pass_along[
'status'][
'response'] =
'true';
921 $pass_along[
'status'][
'code'] =
'000';
922 $pass_along[
'status'][
'message'] =
'Success';
926 function rdctestGetActiveStatus($parms) {
927 # uses: $parms['UIN'] 929 # $parms['AdminPass'] 935 $response =
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><GetCustomerActiveStatusResponse xmlns=\"http://bluepoint.com/\"><GetCustomerActiveStatusResult><UserID>{$parms['MBRACCT']}</UserID><Status>Active</Status></GetCustomerActiveStatusResult></GetCustomerActiveStatusResponse></s:Body></s:Envelope>";
938 if ($parms[
"logging"] ==
"enabled") {
939 $logParms = $parms[
"environment"];
940 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
941 $logParms[
"token"] = HCU_array_key_value(
'Token',$parms);
942 $logParms[
"txnId"] = time();
943 $logParms[
"logPoint"] =
"GetActiveStatus";
944 $logParms[
"request"] = $cmd;
945 $logParms[
"reply"] = $response;
946 LogSSOActivity($logParms);
948 $pos = strpos ( $response ,
'HCUERROR: ' );
949 if ($pos !==
false ) {
950 throw new Exception(substr($response,$pos));
952 if (empty($response)) {
953 throw new Exception(
"Empty Response");
955 # call parse function to format response array 956 $xmlreturn = rdctestGetXMLResponse($response,
'GetCustomerActiveStatusResult',
'http://bluepoint.com/');
957 if (!is_array($xmlreturn)) {
958 throw new Exception(
"RDC Invalid XML Response");
960 if (HCU_array_key_value(
'faultcode',$xmlreturn)) {
961 throw new Exception(
"RDC Fault {$xmlreturn['faultcode']} " . HCU_array_key_value(
'faultstring',$xmlreturn));
963 $return[
'status'][
'response'] =
'true';
964 $return[
'status'][
'code'] =
'000';
965 $return[
'status'][
'message'] =
'Success';
966 $return[
'data'] = $xmlreturn[0];
968 }
catch (Exception $e) {
969 $return[
'status'][
'response'] =
'false';
970 $return[
'status'][
'message'] = $e->getMessage();
974 function rdctestGetCustomerHistory($parms) {
975 # uses: $parms['UIN'] 977 # $parms['AdminPass'] 982 $response =
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><GetCustomerHistoryResponse xmlns=\"http://bluepoint.com/\"><GetCustomerHistoryResult><ItemList><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214489</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.0000</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.0000</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/29/2017 4:11:01 PM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Pending</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163977</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214472</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>0.0500</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>0.0500</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/29/2017 1:01:16 PM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163960</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214470</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/29/2017 11:43:12 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163958</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214469</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/29/2017 10:29:59 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163957</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214467</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/29/2017 7:56:15 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163955</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214464</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/29/2017 7:18:54 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163952</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214458</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 7:47:12 PM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163946</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214457</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 3:04:30 PM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163945</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214455</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 1:21:49 PM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163943</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214454</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:46:29 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163942</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214453</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>0.0500</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>0.0500</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:36:22 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163941</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214452</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:36:02 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163940</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214450</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:30:25 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163938</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214447</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:21:21 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163935</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214446</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:17:13 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>44792:SCB:00</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163934</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory><ItemHistory><ItemInfo><ItemInfoValue><Parameter>ItemRecID</Parameter><Value>214445</Value></ItemInfoValue><ItemInfoValue><Parameter>ItemAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>AcceptedAmount</Parameter><Value>1.2300</Value></ItemInfoValue><ItemInfoValue><Parameter>ScannedDate</Parameter><Value>11/28/2017 10:06:13 AM</Value></ItemInfoValue><ItemInfoValue><Parameter>Account</Parameter><Value>2003499</Value></ItemInfoValue><ItemInfoValue><Parameter>Status</Parameter><Value>Complete</Value></ItemInfoValue><ItemInfoValue><Parameter>FriendlyAccountName</Parameter><Value/></ItemInfoValue><ItemInfoValue><Parameter>BatchRecID</Parameter><Value>163933</Value></ItemInfoValue><ItemInfoValue><Parameter>ReviewNote</Parameter><Value/></ItemInfoValue></ItemInfo></ItemHistory></ItemList><Messages><string/><string/></Messages></GetCustomerHistoryResult></GetCustomerHistoryResponse></s:Body></s:Envelope>";
984 if ($parms[
"logging"] ==
"enabled") {
985 $logParms = $parms[
"environment"];
986 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
987 $logParms[
"token"] = HCU_array_key_value(
'Token',$parms);
988 $logParms[
"txnId"] = time();
989 $logParms[
"logPoint"] =
"GetCustomerHistory";
990 $logParms[
"request"] = $cmd;
991 $logParms[
"reply"] = $response;
992 LogSSOActivity($logParms);
995 $pos = strpos ( $response ,
'HCUERROR: ' );
996 if ($pos !==
false ) {
997 throw new Exception(substr($response,$pos));
999 if (empty($response)) {
1000 throw new Exception(
"RDC No Response");
1003 # call parse function to format response array 1004 $xmlreturn = rdctestGetXMLResponse($response,
'GetCustomerHistoryResult',
'http://bluepoint.com/');
1005 if (!is_array($xmlreturn)) {
1006 throw new Exception(
"RDC Invalid XML Response");
1008 if (HCU_array_key_value(
'faultcode',$xmlreturn)) {
1009 throw new Exception(
"RDC Fault {$xmlreturn['faultcode']} " . HCU_array_key_value(
'faultstring',$xmlreturn));
1012 $return[
'data']=$xmlreturn[0];
1022 $xmlitems = rdctestGetXMLResponse($response,
'ItemInfo',
'http://bluepoint.com/');
1023 if (!is_array($xmlitems)) {
1024 throw new Exception(
"RDC Invalid ItemInfo");
1026 if (HCU_array_key_value(
'faultcode',$xmlitems)) {
1027 throw new Exception(
"RDC Fault {$xmlitems['faultcode']} " . HCU_array_key_value(
'faultstring',$xmlitems));
1030 $return[
'status'][
'response'] =
'true';
1031 $return[
'status'][
'code'] =
'000';
1032 $return[
'status'][
'message'] =
'Success';
1033 $return[
'data'][
'ItemList']=$xmlitems;
1034 $return[
'data'][
'raw']=$response;
1037 }
catch (Exception $e) {
1038 $return[
'status'][
'response'] =
'false';
1039 $return[
'status'][
'message'] = $e->getMessage();
1040 $return[
'data'] = array();
1045 function rdctestGetReviewLimits($parms) {
1046 # uses: $parms['UIN'] 1048 # $parms['AdminPass'] 1053 $response =
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><GetReviewLimitsResponse xmlns=\"http://bluepoint.com/\"><GetReviewLimitsResult><Limits><LimitValue><Limit>DailyItemAmountReviewLimit</Limit><Value>2500.0000</Value></LimitValue><LimitValue><Limit>DailyItemCountReviewLimit</Limit><Value>5</Value></LimitValue><LimitValue><Limit>ScanLimit</Limit><Value>10000.0000</Value></LimitValue><LimitValue><Limit>SingleItemAmountReviewLimit</Limit><Value>0.0100</Value></LimitValue></Limits></GetReviewLimitsResult></GetReviewLimitsResponse></s:Body></s:Envelope>";
1055 if ($parms[
"logging"] ==
"enabled") {
1056 $logParms = $parms[
"environment"];
1057 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1058 $logParms[
"token"] = HCU_array_key_value(
'Token',$parms);
1059 $logParms[
"txnId"] = time();
1060 $logParms[
"logPoint"] =
"GetReviewLimits";
1061 $logParms[
"request"] = $cmd;
1062 $logParms[
"reply"] = $response;
1063 LogSSOActivity($logParms);
1066 $pos = strpos ( $response ,
'HCUERROR: ' );
1067 if ($pos !==
false ) {
1068 throw new Exception(substr($response,$pos));
1070 if (empty($response)) {
1071 throw new Exception(
"RDC No Response");
1073 # call parse function to format response array 1074 $xmlreturn = rdctestGetXMLResponse($response,
'LimitValue',
'http://bluepoint.com/');
1075 if (!is_array($xmlreturn)) {
1076 throw new Exception(
"RDC Invalid LimitValue Response");
1078 if (HCU_array_key_value(
'faultcode',$xmlreturn)) {
1079 throw new Exception(
"RDC Fault {$xmlreturn['faultcode']} " . HCU_array_key_value(
'faultstring',$xmlreturn));
1082 $return[
'status'][
'response'] =
'true';
1083 $return[
'status'][
'code'] =
'000';
1084 $return[
'status'][
'message'] =
'Success';
1085 foreach ($xmlreturn as $val) {
1086 $return[
'data'][
'Limits'][$val[
'Limit']] = $val[
'Value'];
1089 }
catch (Exception $e) {
1090 $return[
'status'][
'response'] =
'false';
1091 $return[
'status'][
'message'] = $e->getMessage();
1092 $return[
'data'] = array();
1097 function rdctestDepositItem($parms) {
1098 # uses: $parms['partnerid'] 1099 # $parms['serviceurl'] 1100 # $parms['certfile'] 1101 # $parms['SessionStateId'] 1105 $response =
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><DepositItemResponse xmlns=\"http://bluepoint.com/\"><DepositItemResult><Result>Passed</Result><DepositStatus>Passed</DepositStatus><Message>Item deposited successfully</Message><BatchID>237032</BatchID><BatchRecID>163934</BatchRecID><ItemRecID>214446</ItemRecID><SentToReview>true</SentToReview><ReviewReasons><InReviewReason>ItemAmountOverLimit</InReviewReason><InReviewReason>DuplicateMicr</InReviewReason></ReviewReasons></DepositItemResult></DepositItemResponse></s:Body></s:Envelope>";
1107 if ($parms[
"logging"] ==
"enabled") {
1108 $logParms = $parms[
"environment"];
1109 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1110 $logParms[
"token"] = $parms[
'Token'];
1111 $logParms[
"txnId"] = time();
1112 $logParms[
"logPoint"] =
"DepositItem";
1113 $logParms[
"request"] = $cmd;
1114 $logParms[
"reply"] = $response;
1115 LogSSOActivity($logParms);
1118 $pos = strpos ( $response ,
'HCUERROR: ' );
1119 if ($pos !==
false ) {
1120 throw new Exception(substr($response,$pos));
1122 if (empty($response)) {
1123 throw new Exception(
"RDC No Response");
1125 # call parse function to format response array 1127 $xmlreturn = rdctestGetXMLResponse($response,
'DepositItemResult',
'http://bluepoint.com/');
1128 if (!is_array($xmlreturn)) {
1129 throw new Exception(
"RDC Invalid XML Response");
1131 if (HCU_array_key_value(
'faultcode',$xmlreturn)) {
1132 throw new Exception(
"RDC Fault {$xmlreturn['faultcode']} " . HCU_array_key_value(
'faultstring',$xmlreturn));
1134 $return[
'status'][
'response'] =
'true';
1135 $return[
'status'][
'code'] =
'000';
1136 $return[
'status'][
'message'] =
'Success';
1137 $return[
'data'] = $xmlreturn[0];
1139 }
catch (Exception $e) {
1140 $return[
'status'][
'response'] =
'false';
1141 $return[
'status'][
'message'] = $e->getMessage();
1142 $return[
'data'] = array();
1147 function rdctestGetXMLResponse($rdcXML, $rdcCONT, $rdcNS) {
1149 $xml = simplexml_load_string($rdcXML,
"SimpleXMLElement",LIBXML_NOWARNING);
1150 if (!is_object($xml)) {
1151 throw new Exception(
"Invalid XML");
1154 $xml->registerXPathNamespace(
's',
"http://schemas.xmlsoap.org/soap/envelope/");
1155 $errorresponse = $xml->xpath(
"//s:Fault");
1156 if(is_array($errorresponse) && count($errorresponse)) {
1157 $resp_arr = array(
'faultcode' => $errorresponse[0]->faultcode,
1158 'faultstring' => $errorresponse[0]->faultstring);
1160 $xml->registerXPathNamespace(
'rdc', $rdcNS);
1161 $dataresponse = $xml->xpath(
"//rdc:$rdcCONT");
1162 $resp_arr = objectToArray($dataresponse);
1165 }
catch (Exception $e) {