4 function RDCconfig($dbh, &$parms) {
5 $parms[
'UAT'] = (!isset($parms[
'UAT']) ? 0 : $parms[
'UAT'] );
6 $parms[
'certfile'] = ($parms[
'UAT'] == 0 ? $parms[
'certfile'] : $parms[
'UATCert']);
7 $parms[
'ssourl'] = ($parms[
'UAT'] == 0 ? $parms[
'PRODsso'] : $parms[
'UATsso']);
8 $parms[
'serviceurl'] = ($parms[
'UAT'] == 0 ? $parms[
'PRODurl'] : $parms[
'UATurl']);
9 $parms[
'partnerid'] = ($parms[
'UAT'] == 1 && isset($parms[
'UATpartnerid']) ? $parms[
'UATpartnerid'] : $parms[
'partnerid']);
12 function RDCauth($dbh, $HB_ENV, $MC, $parms) {
13 # requires: $parms['Cu'] 15 # Additional values rdcvendor retrieved and decoded from cutrusteddetail 18 # assume we are going to succeed... 19 $return[
'status'][
'response'] =
'true';
20 $return[
'status'][
'code'] =
'000';
21 $return[
'status'][
'message'] =
'Success';
24 # If authorizing at HomeCU, is member authorized? 25 if ($parms[
'HomeCUAuth']) {
26 $mbr_rdc = Get_RDCSetting($dbh, $HB_ENV,
'RDCENSENTA', $parms[
'MBRACCT']);
27 if ($mbr_rdc[
'status'][
'code'] !=
'000') {
28 throw new Exception($mbr_rdc[
'status'][
'message'], $mbr_rdc[
'status'][
'code']);
30 $dl = abs( intval( $mbr_rdc[
'rdcsetting'] ) );
32 if ( isset( $parms[
'HomeCUAuthVal'] ) && strlen( $parms[
'HomeCUAuthVal'] ) > 0 ) {
34 $authVals = explode(
",", $parms[
'HomeCUAuthVal'] );
35 if ( !in_array( $dl, $authVals ) ) {
42 $HB_Notices_ary = Get_NoticeInfo($dbh, $HB_ENV, $MC,
'M',
"mblNoRDC",
true);
43 if ($HB_Notices_ary[
'status'][
'code'] ==
'000') {
44 $noticeData = $HB_Notices_ary[
"notice"][0][
"notice_text"];
48 if (strlen($noticeData)) {
49 $message = $noticeData;
52 $message =
"Account not permitted for Remote Deposit. Please contact the Credit Union for more information";
55 throw new Exception($message, $code);
58 # member authorized, or not authorizing at HomeCU. 59 # check if they have any valid accounts 60 $parms[
'Fset2'] = $HB_ENV[
'Fset2']; # HB_ENV
61 $parms[
'Fset3'] = $HB_ENV[
'Fset3']; # HB_ENV
62 $hculist = RDCGetAccts($dbh, $parms);
64 if ($hculist[
'status'][
'response'] ==
'false') {
65 throw new Exception($hculist[
'status'][
'message'], $hculist[
'status'][
'code']);
68 # got a valid RDC account list 70 $parms[
'RDCAcctList'] = $hculist[
'data'];
71 $parms[
'deplimit'] = $dl;
73 # Check first for valid session key, if found, start a new curdcstatus record with it 74 $session = curdc_read($dbh, array(
"Cu" => $HB_ENV[
'Cu'],
"Uid" => $HB_ENV[
'Uid'],
"MBRACCT" => $parms[
"MBRACCT"]));
76 if ($session[
'status'][
'response'] ==
'true' &&
77 isset($session[
'data'][
'vendorinfo'][
'Vendortime']) &&
78 ($vtime - $session[
'data'][
'vendorinfo'][
'Vendortime']) < 720) { # less than 12 minutes)
80 $parms[
'SessionStateId'] = $session[
'data'][
'vendorinfo'][
'SessionStateId'];
81 if ($session[
'data'][
'status'] ==
'T') {
82 $rdcterms = ensentaGetTerms($parms);
83 if ($rdcterms[
'status'][
'response'] ==
'false' || $rdcterms[
'data'][
'ResponseCode'] !=
'00') {
84 $e = ($rdcterms[
'status'][
'response'] ==
'false' ?
'Ensenta GetTerms call failed ' . $rdcterms[
'status'][
'message'] :
85 "Terms - " . $rdcterms[
'data'][
'ResponseCode'] .
' ' . $rdcterms[
'data'][
'ErrorResponseText'] .
' ' . $rdcterms[
'data'][
'LocalizedMessageText']);
86 throw new Exception($e, 301);
88 $parms[
'rdcstatus'] =
'T';
89 $return[
'data'][
'terms'] = $rdcterms[
'data'][
'TermsXhtml'];
92 $parms[
'rdcstatus'] =
'S';
93 $return[
'data'][
'terms'] =
'';
95 $parms[
'vendorinfo'] = array(
"SessionStateId" => $session[
'data'][
'vendorinfo'][
'SessionStateId'],
96 "Vendortime" => $session[
'data'][
'vendorinfo'][
'Vendortime'],
97 "userAgent" => $_SERVER[
'HTTP_USER_AGENT'],
98 "userIP" => $_SERVER[
'REMOTE_ADDR'],
99 "accounts" => $session[
'data'][
'vendorinfo'][
'accounts']);
100 $return[
'data'][
'accounts'] = $parms[
'vendorinfo'][
'accounts'];
101 # return basic info only if we are recycling a session 104 # no session to recycle, or only old sessions 105 # format StartSession Request 106 $rdcresult = ensentaStartSession($parms);
108 # check return values for error 109 if ($rdcresult[
'status'][
'response'] ==
'false' || $rdcresult[
'data'][
'ResponseCode'] !=
'00') {
110 $e = ($rdcresult[
'status'][
'response'] ==
'false' ?
'Ensenta Connection failed' :
111 "Connection Failed - " . $rdcresult[
'data'][
'ResponseCode'] .
' ' .
112 $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText'] );
113 throw new Exception($e, 300);
115 if ($rdcresult[
'data'][
'ResponseCode'] !=
'00') {
116 # Error , call throw exception 117 throw new Exception($rdcresult[
'data'][
'ResponseCode'] .
' ' . $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText'], 300);
120 $parms[
'SessionStateId'] = $rdcresult[
'data'][
'SessionStateId'];
121 # check return values for 'need acceptance' 122 if ($rdcresult[
'data'][
'IsTermsAcceptanceRequired'] ==
'true') {
123 $rdcterms = ensentaGetTerms($parms);
124 if ($rdcterms[
'status'][
'response'] ==
'false' || $rdcterms[
'data'][
'ResponseCode'] !=
'00') {
125 $e = ($rdcterms[
'status'][
'response'] ==
'false' ?
'Ensenta GetTerms call failed' :
126 "Terms - " . $rdcterms[
'data'][
'ResponseCode'] .
' ' . $rdcterms[
'data'][
'ErrorResponseText'] .
' ' . $rdcterms[
'data'][
'LocalizedMessageText']);
127 throw new Exception($e, 301);
129 $parms[
'rdcstatus'] =
'T';
132 $parms[
'rdcstatus'] =
'S';
134 # get intersection of $hculist & $rdcsent['data']['AccountKeys'] 135 $return = RDCPresentAccounts($parms, $hculist, $rdcresult, $rdcterms);
136 if ($return[
'status'][
'response'] ==
'false') {
138 throw new Exception($return[
'status'][
'message'], $return[
'status'][
'code']);
140 $parms[
'vendorinfo'] = array(
"SessionStateId" => $parms[
'SessionStateId'],
141 "Vendortime" => mktime(),
142 "userAgent" => $_SERVER[
'HTTP_USER_AGENT'],
143 "userIP" => $_SERVER[
'REMOTE_ADDR'],
144 "accounts" => $return[
'data'][
'accounts'],
145 "depmessages" => $return[
'data'][
'depmessages']);
147 # start curdc record, return depositid as part of result 148 $depostat = curdc_start($dbh, $parms);
149 if ($depostat[
'status'][
'response'] ==
'false') {
151 throw new Exception(
'HomeCU Start Deposit Failed', 200);
153 $parms[
'depositid'] = $depostat[
'data'][
'depositid'];
154 $return[
'data'][
'depositid'] = $parms[
'depositid'];
156 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
157 'vendorinfo' => json_encode($parms[
'vendorinfo'])));
158 if ($depostat[
'status'][
'response'] ==
'false') {
160 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
162 }
catch (Exception $e) {
163 $return[
'status'][
'response'] =
'false';
164 $return[
'status'][
'code'] = $e->getCode();
165 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
170 function RDCaccept($dbh, $HB_ENV, $MC, $parms) {
171 # requires: $parms['Cu'] 172 # $parms['depositid'] 173 # Additional values retrieved and decoded from cutrusteddetail 174 # or from curdcstatus record using depositid as key 176 # assume we are going to succeed... 177 $return[
'status'][
'response'] =
'true';
178 $return[
'status'][
'code'] =
'000';
179 $return[
'status'][
'message'] =
'Success';
182 if (!isset($parms[
'Cu']) || !isset($parms[
'depositid'])) {
183 throw new Exception(
'Missing Parameters', 100);
187 $depo = curdc_read($dbh, $parms);
188 if ($depo[
'status'][
'response'] ==
'false') {
189 throw new Exception(
'HomeCU DepositID not found', 205);
191 $parms[
'SessionStateId'] = $depo[
'data'][
'vendorinfo'][
'SessionStateId'];
192 $rdcresult = ensentaAcceptTerms($parms);
193 # check return values for error 195 if ($rdcresult[
'status'][
'response'] ==
'false' || $rdcresult[
'data'][
'ResponseCode'] !=
'00') {
196 $e = ($rdcresult[
'status'][
'response'] ==
'false' ?
'Ensenta AcceptTerms call failed' :
197 "AcceptTerms - " . $rdcresult[
'data'][
'ResponseCode'] .
' ' . $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText']);
198 throw new Exception($e, 305);
200 $return[
'status'][
'message'] =
'Ensenta Accept Terms OK';
201 $vendorinfo = $depo[
'vendorinfo'];
202 $vendorinfo[
'terms'] =
'';
203 $vendorinfo[
'Vendortime'] = mktime();
204 $parms[
'vendorinfo'] = $vendorinfo;
206 # update curdcstatus record 207 $parms[
'rdcstatus'] =
'O';
208 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
209 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($parms[
'vendorinfo'])));
210 if ($depostat[
'status'][
'response'] ==
'false') {
212 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
214 }
catch (Exception $e) {
215 $return[
'status'][
'response'] =
'false';
216 $return[
'status'][
'code'] = $e->getCode();
217 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
222 function RDChistorylist($dbh, $parms) {
223 # requires: $parms['Cu'] 224 # $parms['depositid'] 225 # Additional values retrieved and decoded from cutrusteddetail 226 # or from curdcstatus record using depositid as key 228 # assume we are going to succeed... 229 $return[
'status'][
'response'] =
'true';
230 $return[
'status'][
'code'] =
'000';
231 $return[
'status'][
'message'] =
'Success';
234 if (!isset($parms[
'Cu']) || !isset($parms[
'depositid'])) {
235 throw new Exception(
'Missing Parameters', 100);
239 $depo = curdc_read($dbh, $parms);
240 if ($depo[
'status'][
'response'] ==
'false') {
241 throw new Exception(
"HomeCU DepositID not found [{$parms['depositid']}]", 205);
244 $parms[
'SessionStateId'] = $depo[
'data'][
'vendorinfo'][
'SessionStateId'];
245 # format AcceptTerms Request 246 $rdcresult = ensentaGetHistoryList($parms);
247 # check return values for error 249 if ($rdcresult[
'status'][
'response'] ==
'false' || $rdcresult[
'data'][
'ResponseCode'] !=
'00') {
250 $e = ($rdcresult[
'status'][
'response'] ==
'false' ?
'Ensenta Get History List call failed' :
251 "GetHistoryList - " . $rdcresult[
'data'][
'ResponseCode'] .
' ' . $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText']);
252 throw new Exception($e, 305);
254 $return[
'status'][
'message'] =
'Ensenta History List OK';
255 $vendorinfo = $depo[
'vendorinfo'];
256 $vendorinfo[
'Vendortime'] = mktime();
257 $parms[
'vendorinfo'] = $vendorinfo;
259 # update curdcstatus record 261 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
262 'vendorinfo' => json_encode($parms[
'vendorinfo'])));
263 if ($depostat[
'status'][
'response'] ==
'false') {
265 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
267 $return[
'data'] = $rdcresult[
'data'];
268 $return[
'data'][
'rdcvendor'] = $depo[
'data'][
'rdcvendor'];
269 }
catch (Exception $e) {
270 $return[
'status'][
'response'] =
'false';
271 $return[
'status'][
'code'] = $e->getCode();
272 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
277 function RDChistorydetl($dbh, $parms) {
278 # requires: $parms['Cu'] 279 # $parms['transactionid'] 280 # Additional values retrieved and decoded from cutrusteddetail 281 # or from curdcstatus record using depositid as key 283 # assume we are going to succeed... 284 $return[
'status'][
'response'] =
'true';
285 $return[
'status'][
'code'] =
'000';
286 $return[
'status'][
'message'] =
'Success';
289 if (!isset($parms[
'Cu']) || !isset($parms[
'transactionid']) || !isset($parms[
'depositid'])) {
290 throw new Exception(
'Missing Parameters', 100);
294 $depo = curdc_read($dbh, $parms);
295 if ($depo[
'status'][
'response'] ==
'false') {
296 throw new Exception(
'HomeCU DepositID not found', 205);
298 $parms[
'SessionStateId'] = $depo[
'data'][
'vendorinfo'][
'SessionStateId'];
299 $rdcresult = ensentaGetHistoryDetl($parms);
300 if ($rdcresult[
'status'][
'response'] ==
'false' || $rdcresult[
'data'][
'ResponseCode'] !=
'00') {
301 $e = ($rdcresult[
'status'][
'response'] ==
'false' ?
'Ensenta Get History Details call failed' :
302 "GetHistoryDetl - " . $rdcresult[
'data'][
'ResponseCode'] .
' ' . $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText']);
303 throw new Exception($e, 305);
305 $return[
'status'][
'message'] =
'Ensenta GetHistoryDetl OK';
306 $vendorinfo = $depo[
'vendorinfo'];
307 $vendorinfo[
'Vendortime'] = mktime();
308 $parms[
'vendorinfo'] = $vendorinfo;
310 # update curdcstatus record 311 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
312 'vendorinfo' => json_encode($parms[
'vendorinfo'])));
313 if ($depostat[
'status'][
'response'] ==
'false') {
315 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
317 $return[
'data'] = $rdcresult[
'data'];
318 }
catch (Exception $e) {
319 $return[
'status'][
'response'] =
'false';
320 $return[
'status'][
'code'] = $e->getCode();
321 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
326 function RDCdeposit($dbh, $parms) {
327 # requires: $parms['Cu'] 328 # $parms['depositid'] 331 # $parms['rdcacctid'] 332 # Additional values retrieved and decoded from cutrusteddetail 333 # or from curdcstatus record using depositid as key 335 # assume we are going to succeed... 336 $return[
'status'][
'response'] =
'true';
337 $return[
'status'][
'message'] =
'Success';
338 $return[
'status'][
'code'] =
'000';
340 if (!isset($parms[
'Cu']) || !isset($parms[
'depositid']) ||
341 !isset($parms[
'amount']) || !isset($parms[
'acctid'])) {
350 throw new Exception(
'Missing Parameters', 100);
359 $depo = curdc_read($dbh, $parms);
360 if ($depo[
'status'][
'response'] ==
'false') {
361 throw new Exception(
'HomeCU DepositID not found', 205);
364 switch ($depo[
'data'][
'status']) {
366 $fail =
'Must accept terms of use before depositing funds';
369 $fail =
'Deposit has been rejected';
372 $fail =
'Deposit already completed';
376 if (!isset($parms[
'POSTAWAY'])) {
377 $fail =
'Deposit requires override confirmation';
382 throw new Exception($fail, 229);
384 if (is_null($depo[
'data'][
'frontpath']) || is_null($depo[
'data'][
'backpath']) || !getimagesize($depo[
'data'][
'frontpath']) || !getimagesize($depo[
'data'][
'backpath'])) {
385 throw new Exception(
'Check Images not found', 220);
387 $vendorinfo = $depo[
'data'][
'vendorinfo'];
390 $depostat = curdc_update($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
391 'amount' => $parms[
'amount'],
'acctid' => $parms[
'acctid']));
392 if ($depostat[
'status'][
'response'] ==
'false') {
393 throw new Exception(
'HomeCU Update Deposit Amount Failed', 225);
396 $parms[
'SessionStateId'] = $vendorinfo[
'SessionStateId'];
397 $acctid = $parms[
'acctid'];
398 $hculist = RDCGetAccts($dbh, $parms, $acctid);
400 if ($hculist[
'status'][
'response'] !==
'true') {
401 throw new Exception(
'Invalid Deposit Account', 230);
404 $parms[
'rdcacctid'] = $vendorinfo[
'accounts'][$acctid][
'RDCAcctId'];
405 if (!isset($parms[
'rdcacctid'])) {
406 throw new Exception(
'Invalid Deposit Account rdcacctid', 233);
409 $parms[
'RDCAcctList'] = $vendorinfo[
'accounts']; # use vendorinfo values retrieved from curdc_read instead
410 $parms[
'deplimit'] = $dl;
416 if ($depo[
'data'][
'frontaccept'] !==
'Y') {
417 $parms[
'FB'] =
'Front'; #front
418 $parms[
'CheckImage'] = base64_encode(file_get_contents($depo[
'data'][
'frontpath']));
419 $uplresult = ensentaUploadCheck($parms);
420 if ($uplresult[
'status'][
'response'] ==
'false' || $uplresult[
'data'][
'ResponseCode'] !=
'00') {
421 $e = ($uplresult[
'status'][
'response'] ==
'false' ?
'Front - Upload call failed' :
422 "Front - " . $uplresult[
'data'][
'ResponseCode'] .
' ' . $uplresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText']);
423 throw new Exception($e, 235);
425 $musteval = 1; #
if we upload an image, must re-evaluate
426 $depostat = curdc_update($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
'frontaccept' =>
'Y'));
427 if ($depostat[
'status'][
'response'] ==
'false') {
428 throw new Exception(
'HomeCU Update Deposit FrontImage Failed', 240);
430 $vendorinfo[
'Vendortime'] = mktime();
431 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
432 'vendorinfo' => json_encode($vendorinfo)));
433 if ($depostat[
'status'][
'response'] ==
'false') {
434 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
437 if ($depo[
'data'][
'backaccept'] !==
'Y') {
438 $parms[
'FB'] =
'Back'; #back
439 $parms[
'CheckImage'] = base64_encode(file_get_contents($depo[
'data'][
'backpath']));
440 $uplresult = ensentaUploadCheck($parms);
441 if ($uplresult[
'status'][
'response'] ==
'false' || $uplresult[
'data'][
'ResponseCode'] !=
'00') {
442 $e = ($uplresult[
'status'][
'response'] ==
'false' ?
'Back - Upload call failed' :
443 "Back - " . $uplresult[
'data'][
'ResponseCode'] .
' ' . $uplresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText']);
444 throw new Exception($e, 235);
446 $musteval = 1; #
if we upload an image, must re-evaluate
447 $depostat = curdc_update($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
'backaccept' =>
'Y'));
448 if ($depostat[
'status'][
'response'] ==
'false') {
449 throw new Exception(
'HomeCU Update Deposit BackImage Failed', 240);
451 $vendorinfo[
'Vendortime'] = mktime();
452 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
453 'vendorinfo' => json_encode($vendorinfo)));
454 if ($depostat[
'status'][
'response'] ==
'false') {
455 throw new Exception($depostat[
'status'][
'message'], $depostat[
'status'][
'code']);
458 # and now clear out the CheckImage so we aren't passing huge data around 459 $parms[
'CheckImage'] =
'';
461 $rdcresult = ensentaEvaluateDeposit($parms);
463 if ($rdcresult[
'status'][
'response'] ==
'false') {
465 throw new Exception(
'EvaluateDeposit call failed <br>', 241);
467 switch ($rdcresult[
'data'][
'ResponseCode']) {
481 throw new Exception($rdcresult[
'data'][
'ResponseCode'] .
' ' . $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText'], 241);
483 if ($rdcresult[
'data'][
'ResponseCode'] ==
'E35') {
484 $parms[
'rdcstatus'] =
'R'; #rejected
487 if (!
sizeof($rdcresult[
'data'][
'Risks'])) {
488 $parms[
'rdcstatus'] =
'O'; # OK go ahead
491 $parms[
'rdcstatus'] =
'B'; #
default to blocked, determine fixable/confirmable in a minute
495 $reportrisks = array();
499 if (
sizeof($rdcresult[
'data'][
'Risks'])) {
500 foreach ($rdcresult[
'data'][
'Risks'] as $key => $details) {
501 $fc = ($details[
'IsConfirmable'] ==
'true' ?
'Confirmable' :
502 ($details[
'IsFixable'] ==
'true' ?
'Fixable' :
'Rejected'));
515 $reportrisks[] = array(
'RiskId' => $details[
'RiskFactorId'],
516 'RiskDesc' => $details[
'DepositRiskFactorDescription'],
517 'Severity' => $details[
'Severity'],
521 $parms[
'rdcstatus'] =
'R'; # rejected, something is neither fixable nor confirmable
523 $parms[
'rdcstatus'] =
'F'; # at least one Fixable risk found, something (probably amount) must change
525 $parms[
'rdcstatus'] =
'B'; # most severe risk was Confirmable, ok to insist
528 $vendorinfo[
'Vendortime'] = mktime();
529 $vendorinfo[
'rdcblock'] = $rdcblock;
530 $vendorinfo[
'risks'] = $reportrisks;
531 if (isset($rdcresult[
'data'][
'LocalizedFundsAvailTxt'])) {
532 $vendorinfo[
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
533 $return[
'data'][
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
535 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
536 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($vendorinfo)));
537 if ($depostat[
'status'][
'response'] ==
'false') {
538 throw new Exception(
'HomeCU Update Vendorinfo Failed', 240);
540 $return[
'status'][
'code'] =
'000';
541 $return[
'status'][
'response'] =
'true';
542 $return[
'status'][
'message'] =
'Ensenta Evaluate Results';
543 $return[
'data'][
'Risks'] = $reportrisks;
544 $return[
'data'][
'depositid'] = $parms[
'depositid'];
545 $return[
'data'][
'rdcstatus'] = $parms[
'rdcstatus'];
547 } # end of
if musteval test
548 # format DoDeposit Request 553 if ($rdcblock == 0 || ($musteval == 0 && isset($parms[
'POSTAWAY']))) {
554 $rdcresult = ensentaDoDepositTransaction($parms);
555 if ($rdcresult[
'status'][
'response'] ==
'false') {
556 throw new Exception(
'DoDepositTransaction call failed', 242);
558 # check return values for error 559 switch ($rdcresult[
'data'][
'ResponseCode']) {
573 throw new Exception($rdcresult[
'data'][
'ResponseCode'] .
' ' . $rdcresult[
'data'][
'ErrorResponseText'] .
' ' . $rdcresult[
'data'][
'LocalizedMessageText'], 241);
575 if ($rdcresult[
'data'][
'ResponseCode'] ==
'00') {
576 # get TransactionReceiptNumber and TransactionDateTime, save as part of vendorinfo 577 $parms[
'rdcstatus'] =
'C';
578 $vendorinfo[
'Vendortime'] = mktime();
579 $vendorinfo[
'ResponseCode'] = $rdcresult[
'data'][
'ResponseCode'];
580 $vendorinfo[
'TransactionReceiptNumber'] = $rdcresult[
'data'][
'TransactionReceiptNumber'];
581 $vendorinfo[
'TransactionDateTime'] = $rdcresult[
'data'][
'TransactionDateTime'];
582 if (isset($rdcresult[
'data'][
'LocalizedFundsAvailTxt'])) {
583 $vendorinfo[
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
584 $return[
'data'][
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
588 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
589 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($vendorinfo)));
590 if ($depostat[
'status'][
'response'] ==
'false') {
591 throw new Exception(
'HomeCU Update Vendorinfo Failed', 240);
593 $return[
'status'][
'response'] =
'true';
594 $return[
'status'][
'message'] =
'Ensenta Deposit Complete';
595 # this returns everything from Ensenta, but that will be a problem if we add other vendors 596 # pick a list of stuff to return and be consistent for everyone? 597 $return[
'data'] = $rdcresult[
'data'];
598 if (!empty($vendorinfo[
'fundsavailable'])) {
599 $return[
'data'][
'fundsavailable'] = $vendorinfo[
'fundsavailable'];
601 $hcumessage =
"Your deposit request has been received for account {$rdcresult['data']['MaskedAccountholderNumber']}. ";
602 $hcumessage .=
"Your confirmation number is '{$rdcresult['data']['TransactionReceiptNumber']}'. ";
603 $hcumessage .=
"Please save this number and refer to it if you need to contact the credit union regarding this transaction. ";
604 $return[
'data'][
'HCUReceiptMessage'] = $hcumessage;
605 } elseif ($rdcresult[
'data'][
'ResponseCode'] ==
'E35') {
606 # process Risks to describe failure 607 # show LocalizedMessageText 608 $parms[
'rdcstatus'] =
'R';
609 $vendorinfo[
'Vendortime'] = mktime();
610 $vendorinfo[
'ResponseCode'] = $rdcresult[
'data'][
'ResponseCode'];
611 $vendorinfo[
'FailReasons'] = $rdcresult[
'data'][
'FailReasons'];
612 if (isset($rdcresult[
'data'][
'LocalizedFundsAvailTxt'])) {
613 $vendorinfo[
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
614 $return[
'data'][
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
617 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
618 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($vendorinfo)));
619 if ($depostat[
'status'][
'response'] ==
'false') {
620 throw new Exception(
'HomeCU Update Vendorinfo Failed', 240);
622 $return[
'status'][
'response'] =
'true';
623 $return[
'status'][
'message'] =
'Ensenta Deposit Rejected';
624 $return[
'data'] = $rdcresult[
'data'];
627 # E33 or one of the EL Limit errors 628 # show localizedmessagetext 629 $parms[
'rdcstatus'] =
'R';
630 $vendorinfo[
'Vendortime'] = mktime();
631 $vendorinfo[
'ResponseCode'] = $rdcresult[
'data'][
'ResponseCode'];
632 $vendorinfo[
'LocalizedMessageText'] = $rdcresult[
'data'][
'LocalizedMessageText'];
633 if (isset($rdcresult[
'data'][
'LocalizedFundsAvailTxt'])) {
634 $vendorinfo[
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
635 $return[
'data'][
'fundsavailable'] = $rdcresult[
'data'][
'LocalizedFundsAvailTxt'];
639 $depostat = curdc_setvinfo($dbh, array(
'Cu' => $parms[
'Cu'],
'depositid' => $parms[
'depositid'],
640 'rdcstatus' => $parms[
'rdcstatus'],
'vendorinfo' => json_encode($vendorinfo)));
641 if ($depostat[
'status'][
'response'] ==
'false') {
642 throw new Exception(
'HomeCU Update Vendorinfo Failed', 240);
644 $return[
'status'][
'response'] =
'true';
645 $return[
'status'][
'message'] =
'Ensenta Deposit Rejected';
646 $return[
'data'] = $rdcresult[
'data'];
648 $return[
'data'][
'depositid'] = $parms[
'depositid'];
649 $return[
'data'][
'rdcstatus'] = $parms[
'rdcstatus'];
652 }
catch (Exception $e) {
653 $return[
'status'][
'response'] =
'false';
654 $return[
'status'][
'code'] = $e->getCode();
655 $return[
'status'][
'message'] =
"(" . $e->getLine() .
") " . htmlspecialchars($e->getMessage(), ENT_QUOTES,
'UTF-8', FALSE);
661 function RDCGetAccts($dbh, $parms, $Acctid=
"") {
664 if (!isset($parms[
'Cu']) || !isset($parms[
'Uid']) || !isset($parms[
'MBRACCT'])) {
666 $AcctList[
'status'][
'response'] =
'false';
667 $AcctList[
'status'][
'code'] =
'910';
668 $AcctList[
'status'][
'message'] =
'Missing RDC Account Parameters'; # RDCGetAccts missing Cu/Cn
675 $Uid = $parms[
'Uid'];
676 $Fset2 = $parms[
'Fset2'];
677 $Fset3 = $parms[
'Fset3'];
678 $balwhere = $parms[
'balwhere'];
679 $lnwhere = $parms[
'lnwhere'];
680 $MBRACCT = $parms[
'MBRACCT'];
682 # default allow deposit, loan pmt, credit card pmt 683 $rtxn = ( HCU_array_item_count(
'rtxn',$parms) == 0 ?
684 array(
'AT' => 1,
'LP' => 1,
'CP' => 1) :
685 json_decode($parms[
'rtxn'],TRUE) );
686 $savingsql = (!isset($parms[
'savingsql']) ?
687 "trim(accounttype)" :
688 $parms[
'savingsql'] );
689 $draftsql = (!isset($parms[
'draftsql']) ?
690 "trim(accounttype)" :
691 $parms[
'draftsql'] );
692 $loansql = (!isset($parms[
'loansql']) ?
695 $mbrsql = (!isset($parms[
'mbrsql']) ?
696 "trim(accountnumber)" :
699 # fetch transactions types 701 $sql =
"select ht.trancode, trim(t.trandesc), trim(ht.cudesc), t.specialproc 702 from cutrans t, cuhavetrans ht 704 and ht.trancode = t.trancode\n";
706 $sth = db_query($sql, $dbh);
708 # Return a line for each allowed transaction type. 711 for ($row = 0; list($code, $desc, $cudesc, $spec) = db_fetch_array($sth, $row); $row++) {
712 $txncodes{$code} = array($desc, $spec, $cudesc);
714 db_free_result($sth);
719 $sv_rdctype = (!isset($parms[
'sv_rdctype']) ?
'0' : $parms[
'sv_rdctype']);
720 $ck_rdctype = (!isset($parms[
'ck_rdctype']) ?
'1' : $parms[
'ck_rdctype']);
721 $ln_rdctype = (!isset($parms[
'ln_rdctype']) ?
'128' : $parms[
'ln_rdctype']);
722 $sv_rdctype = (str_word_count ( $sv_rdctype , 0 ,
'0123456789' ) > 1 ? $sv_rdctype :
"'$sv_rdctype'");
723 $ck_rdctype = (str_word_count ( $ck_rdctype , 0 ,
'0123456789' ) > 1 ? $ck_rdctype :
"'$ck_rdctype'");
724 $ln_rdctype = (str_word_count ( $ln_rdctype , 0 ,
'0123456789' ) > 1 ? $ln_rdctype :
"'$ln_rdctype'");
728 # find out how many valid accounts the member has: 729 $sql =
"WITH accountlist as ( 730 SELECT ab.accountnumber, 733 ua.accounttype as accounttype, 734 ua.certnumber as certnumber, 738 ua.view_transactions, 740 'DP' as cbtype, amount as currentbalance, 742 trim(ab.micraccount) as micraccount 743 FROM {$Cu}useraccounts as ua 744 INNER JOIN {$Cu}accountbalance as ab ON ab.accountnumber = ua.accountnumber 745 AND ab.accounttype = ua.accounttype 746 AND ua.certnumber = ua.certnumber 747 WHERE ua.user_id = $Uid 748 AND ua.accountnumber = '{$MBRACCT}' 749 AND ua.recordtype = 'D' 750 AND ab.may_deposit = true 752 SELECT lb.accountnumber, 760 ua.view_transactions, 762 lb.cbtype, currentbalance as currentbalance, 765 FROM {$Cu}useraccounts as ua 766 INNER JOIN {$Cu}loanbalance as lb ON lb.accountnumber = ua.accountnumber 767 AND lb.loannumber = ua.accounttype 768 WHERE ua.user_id =$Uid 769 AND ua.accountnumber = '{$MBRACCT}' 770 AND ua.recordtype = 'L' 771 AND lb.may_payment = true ) ";
773 if (HCU_array_key_exists(
'AT',$txncodes) && HCU_array_key_exists(
'AT',$rtxn)) {
774 # $txncodes is configured list @HCU - $rtxn is allowed list for RDC 777 $sql .=
"SELECT recordtype as tbl, 778 $mbrsql as rdcmember, trim(description) as description, 779 trim(display_name) as display_name, 780 trim(accounttype) as accounttype, $savingsql as suffix, 781 certnumber as certnumber, $sv_rdctype as rdctype, 782 display_order, trim(accountnumber) as accountnumber 784 WHERE recordtype = 'D' $balwhere 785 AND upper(deposittype) in ('S','N') 787 SELECT recordtype, $mbrsql as rdcmember, 788 trim(description), trim(display_name), 789 trim(accounttype), $draftsql, 790 certnumber, $ck_rdctype, display_order, 793 WHERE recordtype = 'D' $balwhere 794 AND upper(deposittype) = 'Y' ";
798 if (HCU_array_key_exists(
'LP',$txncodes) && HCU_array_key_exists(
'LP',$rtxn)) {
801 SELECT 'L', $mbrsql as rdcmember, 802 trim(description), trim(display_name), 803 trim(accounttype), $loansql,'0', $ln_rdctype, display_order, 806 WHERE recordtype = 'L' $lnwhere 807 AND currentbalance > 0 ";
808 if ($Fset2 & GetFlagsetValue(
"CU2_SPEC18")) {
809 $sql .=
" and (cbtype <> '18' or cbtype is null) ";
810 if (HCU_array_key_exists(
'CP',$rtxn)) {
812 SELECT 'C', $mbrsql as rdcmember, 813 trim(description), trim(display_name), 814 trim(loannumber), $loansql, '0', $ln_rdctype, display_order, 817 WHERE recordtype='L' $lnwhere 819 if (!($Fset2 & GetFlagsetValue(
"CU2_CC18SHOWZERO"))) {
820 $sql .=
" and currentbalance > 0 ";
825 $sql .=
" order by 6,2,3";
826 $acct_rs = db_query($sql, $dbh);
828 if (db_num_rows($acct_rs) == 0) {
830 $AcctList[
'status'][
'response'] =
'false';
831 $AcctList[
'status'][
'code'] =
'920';
832 $AcctList[
'status'][
'message'] = htmlspecialchars(
'No Eligible RDC <test>Accounts', ENT_QUOTES,
'UTF-8',FALSE); # RDCGetAccts no valid accounts
833 $AcctList[
'status'][
'sql'] = $sql;
837 $AcctList[
'status'][
'response'] =
'true';
838 $AcctList[
'status'][
'code'] =
'000';
839 $AcctList[
'status'][
'message'] =
'Success';
840 for ($row = 0; $drow = db_fetch_array($acct_rs, $row); $row++) {
842 $accounttype = $drow[
'accounttype'];
843 $suffix = $drow[
'suffix'];
844 $cert = $drow[
'certnumber'];
845 $rdctype = $drow[
'rdctype'];
857 $rdcdesc=
'CreditCard';
869 $rdcmember = $drow[
'rdcmember'];
870 if (strpos($accounttype,
"@")) {
871 list($jtype,$jacct) = explode(
"@",$accounttype);
878 $tokn = sha1(
"${Uid}${accounttype}${Cu}${rdctype}obl1vi0u5");
880 $desc = getAccountDescription($dbh, $Cu, $drow[
'accountnumber'], $drow[
'description'], $drow[
'accounttype'], $drow[
'display_name'], $Fset3, $drow[
'certnumber'],
false,
false);
881 $desc = htmlspecialchars($desc, ENT_QUOTES,
'UTF-8',FALSE);
882 $displaydesc = $desc;
884 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'accounttype'] = $accounttype;
885 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'suffix'] = $suffix;
886 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'certnumber'] = $cert;
887 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'acctclass'] = $tbl;
888 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'description'] = $desc;
889 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'tokn'] =
"$tokn";
890 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'Uid'] =
"$Uid";
891 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'trust'] =
"$trust";
892 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'displaydesc'] =
"$displaydesc";
893 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'rdctype'] = $rdctype;
894 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'rdcdesc'] = $rdcdesc;
895 $Accts[
"$tbl|$jacct|$jtype|$cert"][
'rdcmember'] = $rdcmember;
898 if (!empty($Acctid)) {
899 # got an account identifier - return one only 900 $AcctList[
'data'][$Acctid]=$Accts[$Acctid];
902 $AcctList[
'data']=$Accts;
953 function RDCPresentAccounts($parms, $hculist, $rdcsent, $rdcterms) {
954 switch ($parms[
'rdcvendor']) {
956 # build array list to send to app 957 # determine intersect of hculist, rdcsent 959 # include $rdcsent['SessionStateId']; 960 # include terms to be accepted if they are provided 961 # include labels acctttl, descttl 966 $pass_along = $rdcsent;
967 unset($pass_along[
'data'][
'AccountKeys']);
971 foreach ($rdcsent[
'data'][
'AccountKeys'] as $key => $value) {
972 $tag = $value[
'Tag'];
973 $desc = $value[
'Description']; #
if we are
using the shared branching description... overlay description in $hculist?
974 $idx = $value[
'AccountNumberIndex'];
976 $hculist[
'data'][
"$tag"][
'RDCAcctId'] = $idx;
981 foreach ($hculist[
'data'] as $key => $value) {
982 if (isset($value[
'RDCAcctId']))
983 $pass_along[
'data'][
'accounts'][$key] = $value;
988 if (
sizeof($rdcterms) > 0) {
989 $pass_along[
'data'][
'terms'] = $rdcterms[
'data'][
'TermsXhtml'];
991 $pass_along[
'data'][
'terms'] =
'';
993 $pass_along[
'status'][
'response'] =
'true';
994 $pass_along[
'status'][
'code'] =
'000';
995 $pass_along[
'status'][
'message'] =
'Success';
998 $return[
'status'][
'response'] =
'false';
999 $return[
'status'][
'message'] =
'Invalid RDC Vendor';
1005 function ensentaStartSession($parms) {
1006 # uses: $parms['partnerid'] 1007 # $parms['RDCAcctList'] 1008 # $parms['serviceurl'] 1009 # $parms['certfile'] 1012 # $parms['deplimit'] contains depositlimit from cuusers record 1015 if (!isset($parms[
'partnerid']) || !isset($parms[
'ssourl']) ||
1016 !isset($parms[
'certfile']) ||
1017 !isset($parms[
'Cn']) ||
sizeof($parms[
'RDCAcctList']) == 0) {
1018 $return[
'status'][
'response'] =
'false';
1019 $return[
'status'][
'message'] =
'Missing Parameters';
1020 $return[
'data'] = array();
1024 $rdcSecretId = $parms[
'certfile'];
1029 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1031 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1032 $return[
'status'][
'response'] =
'false';
1033 $return[
'status'][
'message'] =
"Invalid RDC Certificate";
1034 $return[
'data'] = array();
1037 # $rdccert .= (trim($parms['passwd']) == '' ? "" : ":{$parms['passwd']}"); 1038 $first = key($parms[
'RDCAcctList']);
1039 $accountholder = $parms[
'RDCAcctList'][$first][
'rdcmember'];
1040 if (empty($accountholder))
1041 $accountholder = $parms[
'Cn'];
1043 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1045 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns=\"http://ensenta.com/ECPartnerDepositRequest/SingleSignon/PartnerSSORequest\">";
1046 $soapString .=
"\n<soapenv:Header/>";
1047 $soapString .=
"\n<soapenv:Body>";
1048 $soapString .=
"<StartSession> 1049 <partnerId>{$parms['partnerid']}</partnerId> 1051 <AccountHolderNumber>{$accountholder}</AccountHolderNumber> 1052 <Email>" . urldecode($parms[
'Ml']) .
"</Email> 1054 <LanguageId>9</LanguageId>";
1057 foreach ($parms[
'RDCAcctList'] as $key => $value) {
1058 $soapString .=
"<Accounts><AccountNumber>{$value['suffix']}</AccountNumber> 1059 <Description>{$value['displaydesc']}</Description> 1060 <AccountTypeCode>{$value['rdctype']}</AccountTypeCode> 1061 <AccountHolderNames/> 1062 <Tag>" . htmlentities($key, ENT_COMPAT,
'UTF-8',
false) .
1064 <IsValid>false</IsValid> 1065 <AccountTypeDescription>{$value['rdcdesc']}</AccountTypeDescription></Accounts>\n";
1068 $soapString .=
"<DeviceIdentifier>" . htmlentities($_SERVER[
'HTTP_USER_AGENT'], ENT_QUOTES,
'UTF-8',
false) .
"</DeviceIdentifier> 1072 </soapenv:Envelope>\n";
1074 $cmd =
"/usr/bin/curl --silent --cacert " . HOMECU_CACERT_DIR .
"ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1075 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/SingleSignon/PartnerSSORequest/IPartnerSSORequest/StartSession\"'";
1076 $cmd .=
" {$parms['ssourl']}";
1077 #$cmd .= " https://webdeposit.test.ensenta.com/PartnerAPI/SingleSignon/PartnerSSORequest2.svc"; 1080 $soapHeaders = array();
1081 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1082 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/SingleSignon/PartnerSSORequest/IPartnerSSORequest/StartSession"';
1084 $response = embcurl($soapString, $soapHeaders, $parms[
'ssourl'], $rdccert);
1086 if ($parms[
"logging"] ==
"enabled") {
1087 $logParms = $parms[
"environment"];
1088 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1089 $logParms[
"token"] = $parms[
'Token'];
1090 $logParms[
"txnId"] = time();
1091 $logParms[
"logPoint"] =
"StartSession";
1092 $logParms[
"request"] = $cmd;
1093 $logParms[
"reply"] = $response;
1094 LogSSOActivity($logParms);
1099 $pos = strpos ( $response ,
'HCUERROR: ' );
1100 if ($pos !==
false ) {
1101 $return[
'status'][
'response'] =
'false';
1102 $return[
'status'][
'message'] = substr($response,$pos);
1105 if (empty($response)) {
1106 $return[
'status'][
'response'] =
'false';
1107 $return[
'status'][
'message'] =
"RDC No Response";
1108 $return[
'status'][
'cmd'] =
"$cmd";
1110 $xmlreturn = ensentaGetXMLResponse($response,
'StartSessionResult',
'http://ensenta.com/ECPartnerDepositRequest/SingleSignon/PartnerSSORequest');
1111 $acctreturn = ensentaGetXMLResponse($response,
'AccountKeys',
'http://ensenta.com/ECPartnerDepositRequest/SingleSignon/PartnerSSORequest');
1112 $msgreturn = ensentaGetXMLResponse($response,
'CustomizableMessages',
'http://ensenta.com/ECPartnerDepositRequest/SingleSignon/PartnerSSORequest');
1113 if (!is_array($xmlreturn) || !is_array($acctreturn) || !is_array($msgreturn) || HCU_array_key_exists(
"faultcode", $xmlreturn ) ) {
1114 $return[
'status'][
'response'] =
'false';
1115 if ($xmlreturn[
'faultcode']) {
1116 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1118 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1120 $return[
'status'][
'cmd'] =
"$cmd";
1122 $return[
'status'][
'response'] =
'true';
1123 $return[
'status'][
'code'] =
'000';
1124 $return[
'status'][
'message'] =
'Success';
1125 $return[
'data'] = $xmlreturn[0];
1126 $return[
'data'][
'AccountKeys'] = $acctreturn;
1127 $return[
'data'][
'depmessages'] = $msgreturn;
1135 function ensentaGetTerms($parms) {
1136 # uses: $parms['partnerid'] 1137 # $parms['serviceurl'] 1138 # $parms['certfile'] 1139 # $parms['SessionStateId'] 1141 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1142 !isset($parms[
'certfile']) ||
1143 !isset($parms[
'SessionStateId'])) {
1144 $return[
'status'][
'response'] =
'false';
1145 $return[
'status'][
'message'] =
'Missing Parameters';
1146 $return[
'data'] = array();
1150 $rdcSecretId = $parms[
'certfile'];
1155 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1157 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1158 $return[
'status'][
'response'] =
'false';
1159 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1160 $return[
'data'] = array();
1163 #$rdccert .= (isset($parms['passwd']) ? ":{$parms['passwd']}" : ""); 1165 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1166 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\">\n";
1167 $soapString .=
"\n<soapenv:Header/>";
1168 $soapString .=
"\n<soapenv:Body>";
1169 $soapString .=
"\n<ecp:GetTerms>";
1170 $soapString .=
"\n<ecp:partnerId>{$parms['partnerid']}</ecp:partnerId> 1171 <ecp:depositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:depositorIPAddress> 1172 <ecp:sessionStateId>{$parms['SessionStateId']}</ecp:sessionStateId> 1175 </soapenv:Envelope>\n";
1177 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1178 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/GetTerms\"' {$parms['serviceurl']}";
1181 $soapHeaders = array();
1182 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1183 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/GetTerms"';
1185 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1187 if ($parms[
"logging"] ==
"enabled") {
1188 $logParms = $parms[
"environment"];
1189 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1190 $logParms[
"token"] = $parms[
'Token'];
1191 $logParms[
"txnId"] = time();
1192 $logParms[
"logPoint"] =
"GetTerms";
1193 $logParms[
"request"] = $cmd;
1194 $logParms[
"reply"] = $response;
1195 LogSSOActivity($logParms);
1198 $pos = strpos ( $response ,
'HCUERROR: ' );
1199 if ($pos !==
false ) {
1200 $return[
'status'][
'response'] =
'false';
1201 $return[
'status'][
'message'] = substr($response,$pos);
1204 if (empty($response)) {
1205 $return[
'status'][
'response'] =
'false';
1206 $return[
'status'][
'message'] =
'RDC No Response';
1208 $return[
'data'] = array();
1211 # call parse function to format response array 1212 $xmlreturn = ensentaGetXMLResponse($response,
'GetTermsResult',
'http://ensenta.com/ECPartnerDepositRequest');
1213 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1214 $return[
'status'][
'response'] =
'false';
1215 if ($xmlreturn[
'faultcode']) {
1216 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1218 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1220 $return[
'status'][
'cmd'] =
"$cmd";
1222 $return[
'status'][
'response'] =
'true';
1223 $return[
'status'][
'code'] =
'000';
1224 $return[
'status'][
'message'] =
'Success';
1225 $return[
'data'] = $xmlreturn[0];
1231 function ensentaGetHistoryList($parms) {
1232 # uses: $parms['partnerid'] 1233 # $parms['serviceurl'] 1234 # $parms['certfile'] 1235 # $parms['SessionStateId'] 1237 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1238 !isset($parms[
'certfile']) ||
1239 !isset($parms[
'SessionStateId'])) {
1240 $return[
'status'][
'response'] =
'false';
1241 $return[
'status'][
'message'] =
'Missing Parameters';
1242 $return[
'data'] = array();
1246 $rdcSecretId = $parms[
'certfile'];
1251 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1253 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1254 $return[
'status'][
'response'] =
'false';
1255 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1256 $return[
'data'] = array();
1259 #$rdccert .= (isset($parms['passwd']) ? ":{$parms['passwd']}" : ""); 1261 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1262 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\">\n";
1263 $soapString .=
"\n<soapenv:Header/>";
1264 $soapString .=
"\n<soapenv:Body>";
1265 $soapString .=
"\n<ecp:GetAccountTransactionHistory3>";
1266 $soapString .=
"\n<ecp:partnerId>{$parms['partnerid']}</ecp:partnerId> 1267 <ecp:depositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:depositorIPAddress> 1268 <ecp:sessionStateId>{$parms['SessionStateId']}</ecp:sessionStateId> 1269 <ecp:numberOfDays>30</ecp:numberOfDays> 1270 <ecp:maxNumberofTransactions>10</ecp:maxNumberofTransactions> 1271 </ecp:GetAccountTransactionHistory3> 1273 </soapenv:Envelope>\n";
1275 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ssl/ca-certificates/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1276 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/GetAccountTransactionHistory3\"' {$parms['serviceurl']}";
1280 $soapHeaders = array();
1281 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1282 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/GetAccountTransactionHistory3"';
1284 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1286 if ($parms[
"logging"] ==
"enabled") {
1287 $logParms = $parms[
"environment"];
1288 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1289 $logParms[
"token"] = $parms[
'Token'];
1290 $logParms[
"txnId"] = time();
1291 $logParms[
"logPoint"] =
"GetAccountTransactionHistory3";
1292 $logParms[
"request"] = $cmd;
1293 $logParms[
"reply"] = $response;
1294 LogSSOActivity($logParms);
1297 $pos = strpos ( $response ,
'HCUERROR: ' );
1298 if ($pos !==
false ) {
1299 $return[
'status'][
'response'] =
'false';
1300 $return[
'status'][
'message'] = substr($response,$pos);
1303 if (empty($response)) {
1304 $return[
'status'][
'response'] =
'false';
1305 $return[
'status'][
'message'] =
'RDC No Response';
1307 $return[
'data'] = array();
1309 # call parse function to format response array 1310 $xmlreturn = ensentaGetXMLResponse($response,
'GetAccountTransactionHistory3Result',
'http://ensenta.com/ECPartnerDepositRequest');
1311 $xmldetails = ensentaGetRisks($response,
'TransactionSummary3',
'http://ensenta.com/ECPartnerDepositRequest');
1312 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1313 # check xmldetails for is_array also? But would that throw error if good response with no history? 1314 $return[
'status'][
'response'] =
'false';
1315 if ($xmlreturn[
'faultcode']) {
1316 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1318 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1320 $return[
'status'][
'cmd'] =
"$cmd";
1322 $return[
'status'][
'response'] =
'true';
1323 $return[
'status'][
'code'] =
'000';
1324 $return[
'status'][
'message'] =
'Success';
1325 $return[
'data'] = $xmlreturn[0];
1326 $return[
'data'][
'TransactionList'] = $xmldetails;
1335 foreach ($return[
'data'][
'TransactionList'] as $key => $details) {
1336 $dparm[
'transactionid'] = $details[
'TransactionId'];
1337 $txndetail = ensentaGetHistoryDetl($dparm);
1338 $return[
'data'][
'TransactionList'][$key][
'CheckNumber'] = $txndetail[
'data'][
'DepositHistoryItems'][0][
'CheckNumber'];
1351 function ensentaGetHistoryDetl($parms) {
1352 # uses: $parms['partnerid'] 1353 # $parms['serviceurl'] 1354 # $parms['certfile'] 1355 # $parms['SessionStateId'] 1356 # $parms['transactionId'] 1358 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1359 !isset($parms[
'certfile']) ||
1360 !isset($parms[
'SessionStateId']) ||
1361 !isset($parms[
'transactionid'])) {
1362 $return[
'status'][
'response'] =
'false';
1363 $return[
'status'][
'message'] =
'Missing Parameters';
1364 $return[
'data'] = array();
1368 $rdcSecretId = $parms[
'certfile'];
1373 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1375 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1376 $return[
'status'][
'response'] =
'false';
1377 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1378 $return[
'data'] = array();
1381 #$rdccert .= (isset($parms['passwd']) ? ":{$parms['passwd']}" : ""); 1384 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1385 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\">\n";
1386 $soapString .=
"\n<soapenv:Header/>";
1387 $soapString .=
"\n<soapenv:Body>";
1388 $soapString .=
"\n<ecp:GetAccountTransactionHistoryDetail3>";
1389 $soapString .=
"\n<ecp:partnerId>{$parms['partnerid']}</ecp:partnerId> 1390 <ecp:depositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:depositorIPAddress> 1391 <ecp:sessionStateId>{$parms['SessionStateId']}</ecp:sessionStateId> 1392 <ecp:transactionId>{$parms['transactionid']}</ecp:transactionId> 1393 <ecp:checkSequenceNum>1</ecp:checkSequenceNum> 1394 </ecp:GetAccountTransactionHistoryDetail3> 1396 </soapenv:Envelope>\n";
1398 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ssl/ca-certificates/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1399 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/GetAccountTransactionHistoryDetail3\"' {$parms['serviceurl']}";
1402 $soapHeaders = array();
1403 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1404 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/GetAccountTransactionHistoryDetail3"';
1406 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1408 if ($parms[
"logging"] ==
"enabled") {
1409 $logParms = $parms[
"environment"];
1410 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1411 $logParms[
"token"] = $parms[
'Token'];
1412 $logParms[
"txnId"] = time();
1413 $logParms[
"logPoint"] =
"GetAccountTransactionHistoryDetail3";
1414 $logParms[
"request"] = $cmd;
1415 $logParms[
"reply"] = $response;
1416 LogSSOActivity($logParms);
1419 $pos = strpos ( $response ,
'HCUERROR: ' );
1420 if ($pos !==
false ) {
1421 $return[
'status'][
'response'] =
'false';
1422 $return[
'status'][
'message'] = substr($response,$pos);
1425 if (empty($response)) {
1426 $return[
'status'][
'response'] =
'false';
1427 $return[
'status'][
'message'] =
'RDC No Response';
1428 $return[
'data'] = array();
1430 $xmlreturn = ensentaGetXMLResponse($response,
'GetAccountTransactionHistoryDetail3Result',
'http://ensenta.com/ECPartnerDepositRequest');
1431 $xmldetails = ensentaGetRisks($response,
'DepositHistory3',
'http://ensenta.com/ECPartnerDepositRequest');
1432 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1433 # check xmldetails for is_array also? But would that throw error if good response with no history? 1434 $return[
'status'][
'response'] =
'false';
1435 if ($xmlreturn[
'faultcode']) {
1436 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1438 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1440 $return[
'status'][
'cmd'] =
"$cmd";
1442 $return[
'status'][
'response'] =
'true';
1443 $return[
'status'][
'code'] =
'000';
1444 $return[
'status'][
'message'] =
'Success';
1445 $return[
'data'] = $xmlreturn[0];
1446 $return[
'data'][
'DepositHistoryItems'] = $xmldetails;
1454 function ensentaAcceptTerms($parms) {
1455 # uses: $parms['partnerid'] 1456 # $parms['serviceurl'] 1457 # $parms['certfile'] 1459 # $parms['SessionStateId'] 1461 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1462 !isset($parms[
'certfile']) ||
1463 !isset($parms[
'SessionStateId'])) {
1464 $return[
'status'][
'response'] =
'false';
1465 $return[
'status'][
'message'] =
'Missing Parameters';
1471 $return[
'data'] = array();
1475 $rdcSecretId = $parms[
'certfile'];
1480 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1482 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1483 $return[
'status'][
'response'] =
'false';
1484 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1485 $return[
'data'] = array();
1488 #$rdccert .= (isset($parms['passwd']) ? ":{$parms['passwd']}" : ""); 1491 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1492 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\">";
1493 $soapString .=
"\n<soapenv:Header/>";
1494 $soapString .=
"\n<soapenv:Body>";
1495 $soapString .=
"<ecp:AcceptTerms> 1496 <ecp:partnerId>{$parms['partnerid']}</ecp:partnerId> 1497 <ecp:depositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:depositorIPAddress> 1498 <ecp:sessionStateId>{$parms['SessionStateId']}</ecp:sessionStateId> 1501 </soapenv:Envelope>\n";
1503 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ssl/ca-certificates/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1504 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/AcceptTerms\"'";
1505 $cmd .=
" {$parms['serviceurl']}";
1508 $soapHeaders = array();
1509 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1510 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/AcceptTerms"';
1512 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1514 if ($parms[
"logging"] ==
"enabled") {
1515 $logParms = $parms[
"environment"];
1516 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1517 $logParms[
"token"] = $parms[
'Token'];
1518 $logParms[
"txnId"] = time();
1519 $logParms[
"logPoint"] =
"AcceptTerms";
1520 $logParms[
"request"] = $cmd;
1521 $logParms[
"reply"] = $response;
1522 LogSSOActivity($logParms);
1525 $pos = strpos ( $response ,
'HCUERROR: ' );
1526 if ($pos !==
false ) {
1527 $return[
'status'][
'response'] =
'false';
1528 $return[
'status'][
'message'] = substr($response,$pos);
1531 if (empty($response)) {
1532 $return[
'status'][
'response'] =
'false';
1533 $return[
'status'][
'message'] =
"RDC No Response";
1534 $return[
'status'][
'cmd'] =
"$cmd";
1535 $return[
'data'] = array();
1537 $xmlreturn = ensentaGetXMLResponse($response,
'AcceptTermsResult',
'http://ensenta.com/ECPartnerDepositRequest');
1538 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1539 # check xmldetails for is_array also? But would that throw error if good response with no history? 1540 $return[
'status'][
'response'] =
'false';
1541 if ($xmlreturn[
'faultcode']) {
1542 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1544 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1546 $return[
'status'][
'cmd'] =
"$cmd";
1549 $return[
'status'][
'response'] =
'true';
1550 $return[
'status'][
'code'] =
'000';
1551 $return[
'status'][
'message'] =
'Success';
1552 $return[
'data'] = $xmlreturn[0];
1561 function ensentaUploadCheck($parms) {
1562 # uses: $parms['partnerid'] 1563 # $parms['serviceurl'] 1564 # $parms['certfile'] 1565 # $parms['SessionStateId'] 1567 # $parms['CheckImage'] 1569 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1570 !isset($parms[
'certfile']) ||
1571 !isset($parms[
'SessionStateId']) || !isset($parms[
'FB']) ||
1572 !isset($parms[
'CheckImage'])) {
1573 $return[
'status'][
'response'] =
'false';
1574 $return[
'status'][
'message'] =
'Missing Parameters';
1575 $return[
'data'] = array();
1579 $rdcSecretId = $parms[
'certfile'];
1584 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1586 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1587 $return[
'status'][
'response'] =
'false';
1588 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1589 $return[
'data'] = array();
1595 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1596 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\"> 1599 <ecp:UploadCheckImage> 1600 <ecp:uploadCheckImageRequest> 1601 <ecp:PartnerId>{$parms['partnerid']}</ecp:PartnerId> 1602 <ecp:DepositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:DepositorIPAddress> 1603 <ecp:SessionStateId>{$parms['SessionStateId']}</ecp:SessionStateId> 1604 <ecp:CheckImage>{$parms['CheckImage']}</ecp:CheckImage> 1605 <ecp:CheckImageViewType>{$parms['FB']}</ecp:CheckImageViewType> 1606 <ecp:CheckSequence>1</ecp:CheckSequence> 1607 </ecp:uploadCheckImageRequest> 1608 </ecp:UploadCheckImage> 1610 </soapenv:Envelope>\n";
1612 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ssl/ca-certificates/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1613 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/UploadCheckImage\"' {$parms['serviceurl']}";
1619 $soapHeaders = array();
1620 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1621 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/UploadCheckImage"';
1623 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1625 if ($parms[
"logging"] ==
"enabled") {
1626 $logParms = $parms[
"environment"];
1627 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1628 $logParms[
"token"] = $parms[
'Token'];
1629 $logParms[
"txnId"] = time();
1630 $logParms[
"logPoint"] =
"UploadCheckImage";
1631 $logParms[
"request"] = $soapString;
1632 $logParms[
"reply"] = $response;
1633 LogSSOActivity($logParms);
1636 $pos = strpos ( $response ,
'HCUERROR: ' );
1637 if ($pos !==
false ) {
1638 $return[
'status'][
'response'] =
'false';
1639 $return[
'status'][
'message'] = substr($response,$pos);
1642 if (empty($response)) {
1643 $return[
'status'][
'response'] =
'false';
1644 $return[
'status'][
'message'] =
"RDC No Response";
1645 $return[
'data'] = array();
1646 $return[
'status'][
'cmd'] = $cmd;
1648 $xmlreturn = ensentaGetXMLResponse($response,
'UploadCheckImageResult',
'http://ensenta.com/ECPartnerDepositRequest');
1649 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1650 # check xmldetails for is_array also? But would that throw error if good response with no history? 1651 $return[
'status'][
'response'] =
'false';
1652 if ($xmlreturn[
'faultcode']) {
1653 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1655 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1657 $return[
'status'][
'cmd'] =
"$cmd";
1659 $return[
'status'][
'response'] =
'true';
1660 $return[
'status'][
'code'] =
'000';
1661 $return[
'status'][
'message'] =
'Success';
1662 $return[
'status'][
'cmd'] = $cmd;
1663 $return[
'status'][
'xmlresult'] = $response;
1664 # call parse function to format response array 1665 $return[
'data'] = $xmlreturn[0];
1672 function ensentaEvaluateDeposit($parms) {
1673 # uses: $parms['partnerid'] 1674 # $parms['serviceurl'] 1675 # $parms['certfile'] 1676 # $parms['SessionStateId'] 1677 # $parms['DepAcctIndex'] 1680 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1681 !isset($parms[
'certfile']) ||
1682 !isset($parms[
'SessionStateId']) || !isset($parms[
'rdcacctid']) ||
1683 !isset($parms[
'amount'])) {
1684 $return[
'status'][
'response'] =
'false';
1685 $return[
'status'][
'message'] =
'Missing Parameters';
1688 if (!isset($parms[
'partnerid']))
1689 $return[
'status'][
'missing'][] =
'partnerid';
1690 if (!isset($parms[
'serviceurl']))
1691 $return[
'status'][
'missing'][] =
'serviceurl';
1692 if (!isset($parms[
'certfile']))
1693 $return[
'status'][
'missing'][] =
'certfile';
1694 if (!isset($parms[
'SessionStateId']))
1695 $return[
'status'][
'missing'][] =
'SessionStateId';
1696 if (!isset($parms[
'rdcacctid']))
1697 $return[
'status'][
'missing'][] =
'rdcacctid';
1698 if (!isset($parms[
'amount']))
1699 $return[
'status'][
'missing'][] =
'amount';
1701 $return[
'data'] = array();
1705 $rdcSecretId = $parms[
'certfile'];
1710 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1712 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1713 $return[
'status'][
'response'] =
'false';
1714 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1715 $return[
'data'] = array();
1720 $deposittime = date(
'c');
1722 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1723 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\">\n";
1724 $soapString .=
"\n<soapenv:Header/> 1726 <ecp:EvaluateDeposit> 1727 <ecp:evaluateDepositRequest> 1728 <ecp:PartnerId>{$parms['partnerid']}</ecp:PartnerId> 1729 <ecp:DepositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:DepositorIPAddress> 1730 <ecp:SessionStateId>{$parms['SessionStateId']}</ecp:SessionStateId> 1731 <ecp:LocalDateTime>$deposittime</ecp:LocalDateTime> 1732 <ecp:DepositToAccountNumberIndex>{$parms['rdcacctid']}</ecp:DepositToAccountNumberIndex> 1733 <ecp:CheckSequenceNum>1</ecp:CheckSequenceNum> 1734 <ecp:Amount>" . sprintf(
'%.2f', $parms[
'amount'] * .01) .
"</ecp:Amount> 1735 </ecp:evaluateDepositRequest> 1736 </ecp:EvaluateDeposit> 1738 </soapenv:Envelope>\n";
1740 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ssl/ca-certificates/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1741 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/EvaluateDeposit\"' {$parms['serviceurl']}";
1744 $soapHeaders = array();
1745 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1746 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/EvaluateDeposit"';
1748 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1750 if ($parms[
"logging"] ==
"enabled") {
1751 $logParms = $parms[
"environment"];
1752 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1753 $logParms[
"token"] = $parms[
'Token'];
1754 $logParms[
"txnId"] = time();
1755 $logParms[
"logPoint"] =
"EvaluateDeposit";
1756 $logParms[
"request"] = $cmd;
1757 $logParms[
"reply"] = $response;
1758 LogSSOActivity($logParms);
1761 $pos = strpos ( $response ,
'HCUERROR: ' );
1762 if ($pos !==
false ) {
1763 $return[
'status'][
'response'] =
'false';
1764 $return[
'status'][
'message'] = substr($response,$pos);
1767 if (empty($response)) {
1768 $return[
'status'][
'response'] =
'false';
1769 $return[
'status'][
'message'] =
"RDC No Response";
1771 $return[
'data'] = array();
1773 $xmlreturn = ensentaGetXMLResponse($response,
'EvaluateDepositResult',
'http://ensenta.com/ECPartnerDepositRequest');
1774 $xmlrisks = ensentaGetRisks($response,
'DepositRiskFactor',
'http://ensenta.com/ECPartnerDepositRequest');
1775 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1776 # check xmlrisks for is_array also? But would that throw error if good response without risk? 1777 $return[
'status'][
'response'] =
'false';
1778 if ($xmlreturn[
'faultcode']) {
1779 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1781 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1783 $return[
'status'][
'cmd'] =
"$cmd";
1794 $return[
'status'][
'response'] =
'true';
1795 $return[
'status'][
'code'] =
'000';
1796 $return[
'status'][
'message'] =
'Success';
1797 # call parse function to format response array 1798 foreach (array(
'ResponseCode',
'ErrorResponseText',
'LocalizedMessageText',
'LocalizedFundsAvailTxt') as $key) {
1799 if (isset($xmlreturn[0][$key])) {
1800 $return[
'data'][$key] = $xmlreturn[0][$key];
1804 $return[
'data'][
'Risks'] = $xmlrisks;
1812 function ensentaDoDepositTransaction($parms) {
1813 # uses: $parms['partnerid'] 1814 # $parms['serviceurl'] 1815 # $parms['certfile'] 1816 # $parms['SessionStateId'] 1819 if (!isset($parms[
'partnerid']) || !isset($parms[
'serviceurl']) ||
1820 !isset($parms[
'certfile']) ||
1821 !isset($parms[
'SessionStateId']) ||
1822 !isset($parms[
'amount'])) {
1823 $return[
'status'][
'response'] =
'false';
1824 $return[
'status'][
'message'] =
'Missing Parameters';
1825 $return[
'data'][
'parms'] = $parms;
1829 $rdcSecretId = $parms[
'certfile'];
1833 $rdccert = GetAwsCertFile($rdcSecretId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
1835 if ($rdccert ==
'' || !(is_readable($rdccert))) {
1836 $return[
'status'][
'response'] =
'false';
1837 $return[
'status'][
'message'] =
'Invalid RDC Certificate';
1838 $return[
'data'] = array();
1843 $deposittime = date(
'c');
1845 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1846 $soapString .=
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ecp=\"http://ensenta.com/ECPartnerDepositRequest\">\n";
1847 $soapString .=
"<soapenv:Header/> 1849 <ecp:DoDepositTransaction> 1850 <ecp:partnerId>{$parms['partnerid']}</ecp:partnerId> 1851 <ecp:depositorIPAddress>{$_SERVER['REMOTE_ADDR']}</ecp:depositorIPAddress> 1852 <ecp:sessionStateId>{$parms['SessionStateId']}</ecp:sessionStateId> 1853 <ecp:localDateTime>$deposittime</ecp:localDateTime> 1854 <ecp:amount>" . sprintf(
'%.2f', $parms[
'amount'] * .01) .
"</ecp:amount>\n";
1855 if (!empty($parms[
'Ml'])) {
1856 $soapString .=
"<ecp:email>" . urldecode($parms[
'Ml']) .
"</ecp:email>\n";
1858 $soapString .=
"</ecp:DoDepositTransaction> 1860 </soapenv:Envelope>\n";
1866 $cmd =
"/usr/bin/curl --silent --cacert /home/homecu/ssl/ca-certificates/ComodoRSABundle.pem --data-binary '$soapString' -H 'Content-Type: text/xml; charset=utf-8' -E $rdccert";
1867 $cmd .=
" -H 'SOAPAction: \"http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/DoDepositTransaction\"' {$parms['serviceurl']}";
1870 $soapHeaders = array();
1871 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1872 $soapHeaders[] =
'SOAPAction: "http://ensenta.com/ECPartnerDepositRequest/IPartnerDepositRequest/DoDepositTransaction"';
1874 $response = embcurl($soapString, $soapHeaders, $parms[
'serviceurl'], $rdccert);
1876 if ($parms[
"logging"] ==
"enabled") {
1877 $logParms = $parms[
"environment"];
1878 $logParms[
"SSOVendor"] = $parms[
'rdcvendor'];
1879 $logParms[
"token"] = $parms[
'Token'];
1880 $logParms[
"txnId"] = time();
1881 $logParms[
"logPoint"] =
"DoDepositTransaction";
1882 $logParms[
"request"] = $cmd;
1883 $logParms[
"reply"] = $response;
1884 LogSSOActivity($logParms);
1887 $pos = strpos ( $response ,
'HCUERROR: ' );
1888 if ($pos !==
false ) {
1889 $return[
'status'][
'response'] =
'false';
1890 $return[
'status'][
'message'] = substr($response,$pos);
1893 if (empty($response)) {
1894 $return[
'status'][
'response'] =
'false';
1895 $return[
'status'][
'message'] =
"RDC No Response";
1897 $return[
'data'] = array();
1899 $xmlreturn = ensentaGetXMLResponse($response,
'DoDepositTransactionResult',
'http://ensenta.com/ECPartnerDepositRequest');
1900 $xmlrisks = ensentaGetRisks($response,
'Risks',
'http://ensenta.com/ECPartnerDepositRequest');
1901 if (!is_array($xmlreturn) || $xmlreturn[
'faultcode']) {
1902 # check xmlrisks for is_array also? But would that throw error if good response without risk? 1903 $return[
'status'][
'response'] =
'false';
1904 if ($xmlreturn[
'faultcode']) {
1905 $return[
'status'][
'message'] =
"RDC Fault {$xmlreturn['faultcode']} {$xmlreturn['faultstring']}";
1907 $return[
'status'][
'message'] =
"RDC Invalid XML Response";
1909 $return[
'status'][
'cmd'] =
"$cmd";
1912 $return[
'status'][
'response'] =
'true';
1913 $return[
'status'][
'code'] =
'000';
1914 $return[
'status'][
'message'] =
'Success';
1916 $return[
'data'] = $xmlreturn[0];
1917 unset ($return[
'data'][
'Risks']); # Risks returned as Array ([
string] =>
'reason for reject')
1918 # simplify string and return as FailReason instead 1920 $return[
'data'][
'FailReasons'] = $xmlrisks;
1928 function ensentaGetXMLResponse($rdcXML, $rdcCONT, $rdcNS) {
1939 $xml = simplexml_load_string($rdcXML,
"SimpleXMLElement", LIBXML_NOWARNING);
1940 if (!is_object($xml)) {
1941 throw new Exception(
"Invalid XML");
1943 $xml->registerXPathNamespace(
's',
"http://schemas.xmlsoap.org/soap/envelope/");
1944 $errorresponse = $xml->xpath(
"//s:Fault");
1945 if (is_array($errorresponse) && count($errorresponse)) {
1946 $resp_arr = array(
'faultcode' => $errorresponse[0]->faultcode,
1947 'faultstring' => $errorresponse[0]->faultstring);
1949 $xml->registerXPathNamespace(
'rdc', $rdcNS);
1950 $dataresponse = $xml->xpath(
"//rdc:$rdcCONT");
1951 $resp_arr = objectToArray($dataresponse);
1953 }
catch (Exception $e) {
1959 function ensentaGetRisks($rdcXML, $rdcCONT, $rdcNS) {
1960 $xml = simplexml_load_string($rdcXML);
1961 $xml->registerXPathNamespace(
'rdc', $rdcNS);
1962 $dataresponse = $xml->xpath(
"//rdc:$rdcCONT");
1968 $r = objectToArray($dataresponse);
1969 if ($rdcCONT ==
'Risks') {
1970 # DoDeposit Failure reason 1971 $resp_arr = $r[0][
'string'];
1973 # EvaluateDeposit Risk Factors