55 #- BankAccountInactivate 57 define(
"MP_CHKFREE_ERROR_CODE",
"5012" );
58 define(
"SERVICE_NAME",
"CHKFREE" );
60 define(
"CACHE_KEY_ACCTS",
"ckfrAcctList" );
61 define(
"CACHE_KEY_PAYEE",
"ckfrPayeeList" );
62 define(
"CACHE_KEY_HIST",
"ckfrHistory" );
63 define(
"CACHE_KEY_PMTS",
"ckfrPending" );
66 function LogCheckFreeActivity( $logData ) {
68 $logPoint = substr( $logData[
"logPoint"], 0, 35 );
69 $sessionId = substr( $logData[
"token"], -20 );
70 $txnId = substr( $logData[
"txnId"], -20 );
71 $request = pg_escape_string(trim($logData[
"request"]));
72 $reply = pg_escape_string(trim($logData[
"reply"]));
76 $sql =
"INSERT INTO cu_vendorlog (cu, user_id, service, sub_service, 77 session_id, txn_id, user_ip, request, response) 78 VALUES ('{$logData["Cu
"]}', '{$logData["memberId
"]}', 'CHKFREE', 79 '$logPoint', '$sessionId', '$txnId', 80 '{$logData["userIP
"]}', '$request', '$reply')";
82 db_query($sql, $logData[
"dbConn"] );
87 function ReadCheckFreeCache($dbh, $user, $subscriber, $cu, $cacheType, $session) {
88 $sql =
"SELECT session, entry, data 91 AND username = '$user' 92 AND type = '$cacheType'";
94 $rs = db_query( $sql, $dbh );
99 while ($cacheRow = db_fetch_array($rs, $row++)) {
101 if ( strlen( $returnData ) > 0 ) {
102 DeleteCheckFreeCache($dbh, $user, $subscriber, $cu, $cacheType, $cacheRow[
"session"], $cacheRow[
"entry"]);
103 }
else if ( $cacheRow[
"session"] == $session ) {
105 $returnData = $cacheRow[
"data"];
108 DeleteCheckFreeCache($dbh, $user, $subscriber, $cu, $cacheType, $cacheRow[
"session"],
"");
112 $returnStructure = json_decode( $returnData,
true );
114 return $returnStructure;
119 function DeleteCheckFreeCache($dbh, $user, $subscriber, $cu, $cacheType, $session, $timestamp) {
120 $sql =
"DELETE FROM cu_vendorcache 122 AND username = '$user'";
124 if ( strlen( $cacheType ) ) {
125 $sql .=
" AND type = '$cacheType'";
128 if ( strlen( $session ) ) {
129 $sql .=
" AND session = '$session'";
132 if ( strlen( $timestamp ) ) {
133 $sql .=
" AND entry = '$timestamp'";
136 db_query( $sql, $dbh );
140 function WriteCheckFreeCache($dbh, $user, $subscriber, $cu, $cacheType, $session, $data) {
142 if ( !$dbh || !$user || !$subscriber || !$cu || !$cacheType || !$session || !$data ) {
148 $jsonData = json_encode( $data );
149 }
catch ( Exception $e ) {
153 if ( strlen( $jsonData ) ) {
154 $jsonData = pg_escape_string($jsonData);
156 $sql =
"INSERT INTO cu_vendorcache (cu, username, subscriber, session, type, data) 157 VALUES ('$cu', '$user', '$subscriber', '$session', '$cacheType', '$jsonData' )";
159 $result = db_query( $sql, $dbh );
164 function bpsmEnrollSub($HB_ENV,$parms) {
166 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
168 $cred = bpSetCred($parms);
169 if (HCU_array_key_value(
'message',$cred) !=
'success') {
170 throw new Exception($cred[
'message']);
172 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
173 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
174 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
175 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
176 $parms[
'Token']=$parms[
'passwith'][
'Token'];
177 $parms[
'clientIP']=$_SERVER[
'REMOTE_ADDR'];
178 $parms[
'billpayid']=$parms[
'passwith'][
'billpayid'];
179 $parms[
'live']=$HB_ENV[
'live'];
180 $parms[
'Cu']=$HB_ENV[
'Cu'];
181 $parms[
'Cn']=$HB_ENV[
'Cn'];
182 $parms[
'Ml']=$HB_ENV[
'Ml'];
183 $parms[
'rt']=$HB_ENV[
'rt'];
185 $mirInfo = $parms[
'MIR'];
186 # if mirInfo["data"]["EMail"] is blank use $Ml instead - make sure we have it? 187 if ($mirInfo[
'status'][
'response'] !=
'true') {
188 throw new Exception($mirInfo[
'status'][
'message']);
190 if (is_array($mirInfo[
'info'])) {
191 foreach($mirInfo[
'info'] as $mirkey => $mirval) {
192 $parms[
"mir{$mirkey}"] = $mirval;
195 if (is_array($parms[
'passwith'][
'payaccounts'])) {
196 foreach($parms[
'passwith'][
'payaccounts'][0] as $akey => $aval) {
197 $parms[
"payacct{$akey}"] = $aval;
223 $enrSub = ckfrSubscriberEnroll($parms);
225 if ($enrSub[
'status'][
'response'] !=
'true') {
226 throw new Exception($enrSub[
'status'][
'message']);
228 $return[
'data']=$enrSub[
'data'];
230 }
catch (Exception $e) {
231 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'line'=>$e->getLine(),
'data'=>array());
236 function bpsmModifySub($HB_ENV,$parms) {
238 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
239 $cred = bpSetCred($parms);
240 if (HCU_array_key_value(
'message',$cred) !=
'success') {
241 throw new Exception($cred[
'message']);
243 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
244 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
245 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
246 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
247 $parms[
'Token']=$parms[
'passwith'][
'Token'];
248 $parms[
'clientIP']=$_SERVER[
'REMOTE_ADDR'];
249 $parms[
'billpayid']=$parms[
'passwith'][
'billpayid'];
250 $parms[
'live']=$HB_ENV[
'live'];
251 $parms[
'Cu']=$HB_ENV[
'Cu'];
252 $parms[
'Cn']=$HB_ENV[
'Cn'];
253 $parms[
'Ml']=$HB_ENV[
'Ml'];
254 $parms[
'rt']=$HB_ENV[
'rt'];
256 $mirInfo = $parms[
'MIR'];
257 # if mirInfo["info"]["EMail"] is blank use $Ml instead - make sure we have it? 258 if ($mirInfo[
'status'][
'response'] !=
'true') {
259 throw new Exception($mirInfo[
'status'][
'message']);
261 if (is_array($mirInfo[
'info'])) {
262 foreach($mirInfo[
'info'] as $mirkey => $mirval) {
263 $parms[
"mir{$mirkey}"] = $mirval;
288 $enrSub = ckfrSubscriberModify($parms);
290 if ($enrSub[
'status'][
'response'] !=
'true') {
291 throw new Exception($enrSub[
'status'][
'message']);
293 $return[
'data']=$enrSub[
'data'];
295 }
catch (Exception $e) {
296 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'data'=>array());
300 function bpsmInfoSub($HB_ENV,$parms) {
302 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
303 $cred = bpSetCred($parms);
304 if (HCU_array_key_value(
'message',$cred) !=
'success') {
305 throw new Exception($cred[
'message']);
307 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
308 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
309 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
310 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
311 $parms[
'Token']=$parms[
'passwith'][
'Token'];
312 $parms[
'clientIP']=$_SERVER[
'REMOTE_ADDR'];
313 $parms[
'billpayid']=$parms[
'passwith'][
'billpayid'];
328 $enrSub = ckfrSubscriberGetInfo($parms);
330 if ($enrSub[
'status'][
'response'] !=
'true' && $enrSub[
"data"][
"Result"][
"ResultInfo"][
"Code"]!=
'301') {
331 throw new Exception($enrSub[
'status'][
'message']);
333 $return[
'data']=$enrSub[
'data'];
335 }
catch (Exception $e) {
336 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'data'=>array());
341 function bpsmAcctList($HB_ENV,$parms) {
343 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
344 $cred = bpSetCred($parms);
345 if (HCU_array_key_value(
'message',$cred) !=
'success') {
346 throw new Exception($cred[
'message']);
348 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
349 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
350 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
351 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
352 $parms[
'Token']=$parms[
'passwith'][
'Token'];
353 $parms[
'clientIP']=$_SERVER[
'REMOTE_ADDR'];
354 $parms[
'billpayid']=$parms[
'passwith'][
'billpayid'];
368 $enrSub = ckfrGetBankAccountList($parms);
370 if ($enrSub[
'status'][
'response'] !=
'true') {
371 throw new Exception($enrSub[
'status'][
'message']);
373 $return[
'data']=$enrSub[
'data'];
375 }
catch (Exception $e) {
376 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'data'=>array());
380 function bpsmAddAcct($HB_ENV,$parms) {
382 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
383 $cred = bpSetCred($parms);
384 if (HCU_array_key_value(
'message',$cred) !=
'success') {
385 throw new Exception($cred[
'message']);
387 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
388 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
389 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
390 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
391 $parms[
'Token']=$parms[
'passwith'][
'Token'];
392 $parms[
'clientIP']=$_SERVER[
'REMOTE_ADDR'];
393 $parms[
'billpayid']=$parms[
'passwith'][
'billpayid'];
411 $enrSub = ckfrBankAccountAdd($parms);
413 if ($enrSub[
'status'][
'response'] !=
'true') {
414 throw new Exception($enrSub[
'status'][
'message']);
416 $return[
'data']=$enrSub[
'data'];
418 }
catch (Exception $e) {
419 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'data'=>array());
424 function bpsmEchoPing($HB_ENV,$parms) {
426 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
427 $cred = bpSetCred($parms);
428 if (HCU_array_key_value(
'message',$cred) !=
'success') {
429 throw new Exception($cred[
'message']);
431 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
432 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
433 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
434 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
436 $echoPing = ckfrEchoPing($parms);
438 if ($echoPing[
'status'][
'response'] !=
'true') {
439 throw new Exception($echoPing[
'status'][
'message']);
441 $return[
'data']=$echoPing[
'data'];
443 }
catch (Exception $e) {
444 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'data'=>array());
449 function bpAuth($parms) {
451 $cred = bpSetCred($parms);
452 if (HCU_array_key_value(
'message',$cred) !=
'success') {
453 throw new Exception($cred[
'message']);
455 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
456 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
457 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
458 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
461 $parms[
"clientAppText"] = $parms[
"mblAppText"];
462 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
465 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
466 $parms[
'billpayid'] = $parms[
'BillpayId'];
469 $parms[
'Token'] = time();
471 $response = ckfrSubscriberGetInfo($parms);
473 if ($response[
'status'][
'response'] !=
'true' && $response[
"data"][
"Result"][
"ResultInfo"][
"Code"] !=
'301') {
474 throw new Exception($response[
'status'][
'message']);
477 # normalize the name for scalability 478 if ( $response[
"status"][
"response"] !=
'true' ) {
479 if ( empty($response[
"status"][
"message"]) ) {
480 $response[
"status"][
"message"] =
"Subscriber Validation Failed. {$response["data
"]["Result
"]["ResultInfo
"]["Code
"]}";
483 $output[
"Token"] = $parms[
'Token'];
484 $output[
"DateModel"] =
"PayeeProcess";
485 $output[
"BillpayId"] = $parms[
"BillpayId"];
486 $output[
'MoblPayName']= (trim($parms[
'MoblPayName']) ==
'' ? htmlentities(
'Pay Bills') : htmlentities($parms[
'MoblPayName']));
487 $output[
'Extras'] = htmlentities($parms[
'ExtraOptions']);
488 $response[
'data']= $output;
491 $response[
"status"][
"code"] =
"000";
496 }
catch (Exception $e) {
497 $return = array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage(),
'code'=>
'999'),
'data'=>array(
'Token'=>
'0'));
503 function bpHist( $parms ) {
504 $cred = bpSetCred($parms);
505 if (HCU_array_key_value(
'message',$cred) !=
'success') {
506 throw new Exception($cred[
'message']);
508 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
509 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
510 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
511 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
514 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
515 $parms[
"clientAppText"] = $parms[
"mblAppText"];
516 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
518 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
519 $parms[
'billpayid'] = $parms[
'BillpayId'];
520 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
522 $response = ckfrGetPaymentList( $parms,
"historical" );
524 if ( $response[
"status"][
"response"] !=
'true' ) {
525 if ( empty($response[
"status"][
"message"]) )
526 $response[
"status"][
"message"] =
'Get History Failed';
532 if ( isset( $response[
"data"][
"Payments"] ) && count( $response[
"data"][
"Payments"] ) > 0 ) {
534 if ( isset( $response[
"data"][
"Payments"][
"TransactionDate"] ) ) {
535 $payment = $response[
"data"][
"Payments"];
537 $outputElem = array();
538 $outputElem[
"TxnId"] = $payment[
"TransactionId"];
539 $outputElem[
"Type"] =
"Payment";
540 $outputElem[
"ToName"] = $payment[
"Payee"][
"Name"];
541 $outputElem[
"Amount"] = number_format( $payment[
"Amount"], 2 );
542 $outputElem[
"Date"] = date(
"m/d/Y", strtotime( $payment[
"TransactionDate"] ) );
545 $paymentDate = strtotime( $payment[
"PaymentDate"][
"Date"] );
548 $Additional = array(
"From" => $payment[
"BankAccountId"][
"AccountNumber"],
549 "Payment_Date" => date(
"m/d/Y", $paymentDate ),
550 "Confirmation" => $payment[
"ConfirmationNumber"],
551 "Status" => $payment[
"Status"] );
552 if ( strlen( $payment[
"PaymentDeliveryMethod"] ) ) {
553 $Additional[
"Rush"] = $payment[
"PaymentDeliveryMethod"];
555 if ( strlen( $payment[
"RecurringModelId"] ) ) {
556 $Additional[
"Recurring"] = $payment[
"RecurringModelId"];
558 if ( strlen( $payment[
"PaymentFee"] ) ) {
559 $Additional[
"Payment_Fee"] = $payment[
"PaymentFee"];
561 if ( strlen( $payment[
"CheckNumber"] ) ) {
562 $Additional[
"Check_Number"] = $payment[
"CheckNumber"];
564 if ( strlen( $payment[
"EbillId"] ) ) {
565 $Additional[
"EBill_ID"] = $payment[
"EbillId"];
568 $outputElem[
"AdditionalInfo"] = $Additional;
570 $output[] = $outputElem;
572 foreach( $response[
"data"][
"Payments"] as $payment ) {
573 $outputElem = array();
574 $outputElem[
"TxnId"] = $payment[
"TransactionId"];
575 $outputElem[
"Type"] =
"Payment";
576 $outputElem[
"ToName"] = $payment[
"Payee"][
"Name"];
577 $outputElem[
"Amount"] = number_format( $payment[
"Amount"], 2 );
578 $outputElem[
"Date"] = date(
"m/d/Y", strtotime( $payment[
"TransactionDate"] ) );
581 $paymentDate = strtotime( $payment[
"PaymentDate"][
"Date"] );
584 $Additional = array(
"From" => $payment[
"BankAccountId"][
"AccountNumber"],
585 "Payment_Date" => date(
"m/d/Y", $paymentDate ),
586 "Confirmation" => $payment[
"ConfirmationNumber"],
587 "Status" => $payment[
"Status"] );
588 if ( strlen( $payment[
"PaymentDeliveryMethod"] ) ) {
589 $Additional[
"Rush"] = $payment[
"PaymentDeliveryMethod"];
591 if ( strlen( $payment[
"RecurringModelId"] ) ) {
592 $Additional[
"Recurring"] = $payment[
"RecurringModelId"];
594 if ( strlen( $payment[
"PaymentFee"] ) ) {
595 $Additional[
"Payment_Fee"] = $payment[
"PaymentFee"];
597 if ( strlen( $payment[
"CheckNumber"] ) ) {
598 $Additional[
"Check_Number"] = $payment[
"CheckNumber"];
600 if ( strlen( $payment[
"EbillId"] ) ) {
601 $Additional[
"EBill_ID"] = $payment[
"EbillId"];
604 $outputElem[
"AdditionalInfo"] = $Additional;
606 $output[] = $outputElem;
609 usort( $output,
"histSort" );
612 # normalize the name for scalability 613 $return = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
614 $return[
'data'] = $output;
617 if ( isset( $response[
"data"][
"Result"][
"ResultInfo"][
"Description"] ) ) {
618 $message = $response[
"data"][
"Result"][
"ResultInfo"][
"Description"];
620 $message =
"No payments found.";
623 $return = array(
'status'=>array(
'response'=>
'true',
'message'=>$message,
'code'=>
"000"),
'data'=>
"");
631 function bpSched( $parms ) {
632 $cred = bpSetCred($parms);
633 if (HCU_array_key_value(
'message',$cred) !=
'success') {
634 throw new Exception($cred[
'message']);
636 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
637 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
638 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
639 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
642 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
643 $parms[
"clientAppText"] = $parms[
"mblAppText"];
644 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
646 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
647 $parms[
'billpayid'] = $parms[
'BillpayId'];
648 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
650 $response = ckfrGetPaymentList( $parms,
"pending" );
652 if ( $response[
"status"][
"response"] !=
'true' ) {
653 if ( empty($response[
"status"][
"message"]) )
654 $response[
"status"][
"message"] =
'Get Scheduled Payments Failed';
660 if ( isset( $response[
"data"][
"Payments"] ) && count( $response[
"data"][
"Payments"] ) > 0 ) {
662 if ( isset( $response[
"data"][
"Payments"][
"TransactionDate"] ) ) {
663 $payment = $response[
"data"][
"Payments"];
665 $fromId = implode(
"|", $payment[
"BankAccountId"] );
666 $outputElem = array();
667 $outputElem[
"TxnId"] = $payment[
"TransactionId"];
668 $outputElem[
"Type"] =
"Payment";
669 $outputElem[
"ToId"] = $payment[
"Payee"][
"Id"];
670 $outputElem[
"ToName"] = $payment[
"Payee"][
"Name"];
671 $outputElem[
"FromId"] = $fromId;
672 $outputElem[
"Amount"] = number_format( $payment[
"Amount"], 2 );
673 $outputElem[
"Date"] = date(
"m/d/Y", strtotime( $payment[
"PaymentDate"][
"Date"] ) );
676 $transactionDate = strtotime( $payment[
"TransactionDate"] );
679 $Additional = array(
"Paid_From" => $payment[
"BankAccountId"][
"AccountNumber"],
680 "Transaction_Date" => date(
"m/d/Y", $transactionDate ),
681 "Confirmation" => $payment[
"ConfirmationNumber"],
682 "Status" => $payment[
"Status"] );
683 if ( strlen( $payment[
"PaymentDeliveryMethod"] ) ) {
684 $Additional[
"Rush"] = $payment[
"PaymentDeliveryMethod"];
686 if ( strlen( $payment[
"RecurringModelId"] ) ) {
687 $Additional[
"Recurring"] = $payment[
"RecurringModelId"];
689 if ( strlen( $payment[
"PaymentFee"] ) ) {
690 $Additional[
"Payment_Fee"] = $payment[
"PaymentFee"];
692 if ( strlen( $payment[
"CheckNumber"] ) ) {
693 $Additional[
"Check_Number"] = $payment[
"CheckNumber"];
695 if ( strlen( $payment[
"EbillId"] ) ) {
696 $Additional[
"Ebill_Id"] = $payment[
"EbillId"];
699 $outputElem[
"AdditionalInfo"] = $Additional;
701 $output[] = $outputElem;
703 foreach( $response[
"data"][
"Payments"] as $payment ) {
704 $fromId = implode(
"|", $payment[
"BankAccountId"] );
705 $outputElem = array();
706 $outputElem[
"TxnId"] = $payment[
"TransactionId"];
707 $outputElem[
"Type"] =
"Payment";
708 $outputElem[
"ToId"] = $payment[
"Payee"][
"Id"];
709 $outputElem[
"ToName"] = $payment[
"Payee"][
"Name"];
710 $outputElem[
"FromId"] = $fromId;
711 $outputElem[
"Amount"] = number_format( $payment[
"Amount"], 2 );
712 $outputElem[
"Date"] = date(
"m/d/Y", strtotime( $payment[
"PaymentDate"][
"Date"] ) );
715 $transactionDate = strtotime( $payment[
"TransactionDate"] );
718 $Additional = array(
"From" => $payment[
"BankAccountId"][
"AccountNumber"],
719 "Transaction_Date" => date(
"m/d/Y", $transactionDate ),
720 "Confirmation"=> $payment[
"ConfirmationNumber"],
721 "Status" => $payment[
"Status"] );
722 if ( strlen( $payment[
"PaymentDeliveryMethod"] ) ) {
723 $Additional[
"Rush"] = $payment[
"PaymentDeliveryMethod"];
725 if ( strlen( $payment[
"RecurringModelId"] ) ) {
726 $Additional[
"Recurring"] = $payment[
"RecurringModelId"];
728 if ( strlen( $payment[
"PaymentFee"] ) ) {
729 $Additional[
"Payment_Fee"] = $payment[
"PaymentFee"];
731 if ( strlen( $payment[
"CheckNumber"] ) ) {
732 $Additional[
"Check_Number"] = $payment[
"CheckNumber"];
735 $outputElem[
"AdditionalInfo"] = $Additional;
737 $output[] = $outputElem;
740 usort( $output,
"schedSort" );
743 # normalize the name for scalability 744 $return = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
745 $return[
'data'] = $output;
748 if ( isset( $response[
"data"][
"Result"][
"ResultInfo"][
"Description"] ) ) {
749 $message = $response[
"data"][
"Result"][
"ResultInfo"][
"Description"];
751 $message =
"No payments found.";
754 $return = array(
'status'=>array(
'response'=>
'true',
'message'=>$message,
'code'=>
"000"),
'data'=>
"");
761 function bpSourceAccts( $parms ) {
763 $cred = bpSetCred($parms);
764 if (HCU_array_key_value(
'message',$cred) !=
'success') {
765 throw new Exception($cred[
'message']);
767 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
768 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
769 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
770 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
773 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
774 $parms[
"clientAppText"] = $parms[
"mblAppText"];
775 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
778 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
779 $parms[
'billpayid'] = $parms[
'BillpayId'];
780 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
782 $response = ckfrGetBankAccountList( $parms );
784 if ($response[
"status"][
"response"] !=
'true'){
785 if (empty($response[
"status"][
"message"]))
786 $response[
"status"][
"message"]=
'Get Bank Accounts Failed';
790 if ( isset( $response[
"data"][
"BankAccounts"] ) && count( $response[
"data"][
"BankAccounts"] ) ) {
792 if ( isset( $response[
"data"][
"BankAccounts"][
"AccountId"] ) ) {
794 $value = $response[
"data"][
"BankAccounts"];
796 $outputElem = array();
797 $outputElem[
"Name"] = (isset( $value[
"AccountNickName"] ) && count( $value[
"AccountNickName"] ) > 0) ? $value[
"AccountNickName"] :
"";
798 $accountId = implode(
"|", $value[
"AccountId"] );
799 $outputElem[
"FromId"] = $accountId;
800 $outputElem[
"CanRush"] =
"0";
803 if ( strlen( trim( $outputElem[
"Name"] ) ) == 0 ) {
804 $outputElem[
"Name"] = $value[
"AccountId"][
"AccountNumber"];
807 $output[] = $outputElem;
810 for ( $i = 0; $i < count( $response[
"data"][
"BankAccounts"] ); $i++ ) {
811 $value = $response[
"data"][
"BankAccounts"][$i];
812 $outputElem = array();
813 $outputElem[
"Name"] = (isset( $value[
"AccountNickName"] ) && count( $value[
"AccountNickName"] ) > 0) ? $value[
"AccountNickName"] :
"";
814 $accountId = implode(
"|", $value[
"AccountId"] );
815 $outputElem[
"FromId"] = $accountId;
816 $outputElem[
"CanRush"] =
"0";
819 if ( strlen( trim( $outputElem[
"Name"] ) ) == 0 ) {
820 $outputElem[
"Name"] = $value[
"AccountId"][
"AccountNumber"];
823 $output[] = $outputElem;
828 if ( !count( $output ) ) {
829 throw new Exception(
"No source accounts received from vendor.");
832 # normalize the name for scalability 833 $response = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
834 $response[
'data']= $output;
836 }
catch (Exception $e) {
837 $response[
"status"][
"response"] =
"false";
838 $response[
"status"][
"message"] = $e->getMessage();
839 $response[
"code"] = MP_CHKFREE_ERROR_CODE;
840 $response[
"data"] = array();
849 function bpDestAccts( $parms ) {
851 $cred = bpSetCred($parms);
852 if (HCU_array_key_value(
'message',$cred) !=
'success') {
853 throw new Exception($cred[
'message']);
855 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
856 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
857 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
858 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
861 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
862 $parms[
"clientAppText"] = $parms[
"mblAppText"];
863 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
866 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
867 $parms[
'billpayid'] = $parms[
'BillpayId'];
868 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
870 $response = ckfrGetPayeeList( $parms );
872 if ($response[
"status"][
"response"] !=
'true'){
873 if (empty($response[
"status"][
"message"]))
874 $response[
"status"][
"message"]=
'Get Payee List Failed';
878 if ( isset( $response[
"data"][
"Payees"] ) && count( $response[
"data"][
"Payees"] ) ) {
880 if ( isset( $response[
"data"][
"Payees"][
"Name"] ) ) {
882 $value = $response[
"data"][
"Payees"];
884 $outputElem = array();
885 $outputElem[
"Name"] = $value[
"Name"];
886 $outputElem[
"Type"] = $value[
"Type"];
887 $outputElem[
"ToId"] = $value[
"Id"];
891 $outputElem[
"CanRush"] =
"0";
894 if ( strlen( trim( $outputElem[
"Name"] ) ) == 0 ) {
895 $outputElem[
"Name"] =
"Unknown";
898 $output[] = $outputElem;
901 for ( $i = 0; $i < count( $response[
"data"][
"Payees"] ); $i++ ) {
902 $value = $response[
"data"][
"Payees"][$i];
903 $outputElem = array();
904 $outputElem[
"Name"] = $value[
"Name"];
905 $outputElem[
"Type"] =
"";
906 $outputElem[
"ToId"] = $value[
"Id"];
910 $outputElem[
"CanRush"] =
"0";
913 if ( strlen( trim( $outputElem[
"Name"] ) ) == 0 ) {
914 $outputElem[
"Name"] =
"Unknown";
917 $output[] = $outputElem;
922 if ( !count( $output ) ) {
923 throw new Exception(
"No destination accounts received from vendor.");
926 # normalize the name for scalability 927 $response = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
928 $response[
'data']= $output;
930 }
catch (Exception $e) {
931 $response[
"status"][
"response"] =
"false";
932 $response[
"status"][
"message"] = $e->getMessage();
933 $response[
"code"] = MP_CHKFREE_ERROR_CODE;
934 $response[
"data"] = array();
940 function bpPmtAdd( $parms ) {
941 $cred = bpSetCred($parms);
942 if (HCU_array_key_value(
'message',$cred) !=
'success') {
943 throw new Exception($cred[
'message']);
945 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
946 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
947 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
948 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
951 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
952 $parms[
"clientAppText"] = $parms[
"mblAppText"];
953 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
956 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
957 $parms[
'billpayid'] = $parms[
'BillpayId'];
958 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
960 $parms[
'Payment'][
'From'] = $parms[
"passwith"][
"FromId"];
961 $parms[
'Payment'][
'To'] = $parms[
"passwith"][
"ToId"];
962 $parms[
'Payment'][
'Amount'] = $parms[
"passwith"][
"Amount"];
963 $parms[
'Payment'][
'Rush'] = $parms[
"passwith"][
"Rush"];
964 $parms[
'Payment'][
'Date'] = $parms[
"passwith"][
"Date"];
965 $response = ckfrAddPayment( $parms );
967 if ($response[
"status"][
"response"] !=
'true'){
968 if (empty($response[
"status"][
"message"]))
969 $response[
"status"][
"message"]=
'Submit Payment Failed';
974 $outputElem = array();
975 $outputElem[
"Confirmation"] = $response[
"data"][
"PaymentResponses"][
"ConfirmationNumber"];
976 $outputElem[
"EstimatedArrival"] = $response[
"data"][
"PaymentResponses"][
"NextPaymentDate"][
"Date"];
978 # normalize the name for scalability 979 $response = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
980 $response[
'data'] = $outputElem;
987 function bpTrnAdd( $parms ) {
988 $cred = bpSetCred($parms);
989 if (HCU_array_key_value(
'message',$cred) !=
'success') {
990 throw new Exception($cred[
'message']);
992 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
993 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
994 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
995 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
997 $parms[
'Account'][
'types'] =
"PayFrom";
998 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
1000 $parms[
'Payment'][
'From'] = $parms[
"passwith"][
"FromId"];
1001 $parms[
'Payment'][
'To'] = $parms[
"passwith"][
"ToId"];
1002 $parms[
'Payment'][
'Amount'] = $parms[
"passwith"][
"Amount"];
1003 $parms[
'Payment'][
'Date'] = $parms[
"passwith"][
"Date"];
1005 $response = array();
1007 if ($response[
"status"][
"response"] !=
'true'){
1008 if (empty($response[
"status"][
"message"]))
1009 $response[
"status"][
"message"]=
'Submit Transfer Failed';
1012 $outputElem = array();
1013 $outputElem[
"Confirmation"] = $response[
"ipaydata"][0][
"Confirmation"];
1014 $outputElem[
"EstimatedArrival"] = $response[
"ipaydata"][0][
"EstimatedArrival"];
1016 # normalize the name for scalability 1017 $response = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
1018 $response[
'data']= $outputElem;
1024 function bpPmtEdit( $parms ) {
1025 $cred = bpSetCred($parms);
1026 if (HCU_array_key_value(
'message',$cred) !=
'success') {
1027 throw new Exception($cred[
'message']);
1029 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
1030 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
1031 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
1032 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
1035 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
1036 $parms[
"clientAppText"] = $parms[
"mblAppText"];
1037 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
1040 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
1041 $parms[
'billpayid'] = $parms[
'BillpayId'];
1042 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
1044 $parms[
'Payment'][
'Id'] = $parms[
"passwith"][
"TxnId"];
1045 $parms[
'Payment'][
'From'] = $parms[
"passwith"][
"FromId"];
1046 $parms[
'Payment'][
'Amount'] = $parms[
"passwith"][
"Amount"];
1047 $parms[
'Payment'][
'Date'] = $parms[
"passwith"][
"Date"];
1048 $response = ckfrModPayment( $parms );
1050 if ($response[
"status"][
"response"] !=
'true'){
1051 if (empty($response[
"status"][
"message"]))
1052 $response[
"status"][
"message"]=
'Edit Payment Failed';
1055 $outputElem = array();
1056 $outputElem[
"Confirmation"] = $response[
"data"][
"PaymentModResponse"][
"ConfirmationNumber"];
1057 $outputElem[
"EstimatedArrival"] = $response[
"data"][
"PaymentModResponse"][
"NextPaymentDate"][
"Date"];
1059 # normalize the name for scalability 1060 $response = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
1061 $response[
'data']= $outputElem;
1067 function bpPmtStop($parms) {
1068 $cred = bpSetCred($parms);
1069 if (HCU_array_key_value(
'message',$cred) !=
'success') {
1070 throw new Exception($cred[
'message']);
1072 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
1073 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
1074 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
1075 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
1078 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
1079 $parms[
"clientAppText"] = $parms[
"mblAppText"];
1080 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
1083 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
1084 $parms[
'billpayid'] = $parms[
'BillpayId'];
1085 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
1086 $parms[
'transactionId'] = $parms[
"passwith"][
"TxnId"];
1088 $response = ckfrPaymentCancel($parms);
1090 if ($response[
"status"][
"response"] !=
'true') {
1091 if (empty($response[
"status"][
"message"]))
1092 $response[
"status"][
"message"] =
'Stop Payment Failed';
1094 # normalize the name for scalability 1095 $response = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
1096 $response[
'data'][
"StopResult"] = 1;
1102 function bpGetPaymentDates( $parms ) {
1104 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success'));
1105 $cred = bpSetCred($parms);
1106 if (HCU_array_key_value(
'message',$cred) !=
'success') {
1107 throw new Exception($cred[
'message']);
1109 $parms[
'serviceurl'] = HCU_array_key_value(
'serviceurl', $cred);
1110 $parms[
'servicecert'] = HCU_array_key_value(
'servicecert', $cred);
1111 $parms[
'servicekey'] = HCU_array_key_value(
'servicekey', $cred);
1112 $parms[
'serviceca'] = HCU_array_key_value(
'serviceca', $cred);
1115 $parms[
"serviceurl"] = str_replace(
"Subscriber",
"Mobile", $parms[
"serviceurl"] );
1116 $parms[
"clientAppText"] = $parms[
"mblAppText"];
1117 $parms[
"clientAppVer"] = $parms[
"mblAppVer"];
1120 $parms[
'clientIP'] = $_SERVER[
'REMOTE_ADDR'];
1121 $parms[
'billpayid'] = $parms[
'BillpayId'];
1122 $parms[
'Token'] = $parms[
"passwith"][
"Token"];
1123 # CheckFree always gets dates relative to Payee 1124 $parms[
'PayeeId']=$parms[
"passwith"][
"PayeeId"];
1126 $response = ckfrGetPayeeList($parms);
1128 if ($response[
'status'][
'response'] !=
'true') {
1129 throw new Exception($response[
'status'][
'message']);
1133 if ( isset( $response[
"data"][
"Payees"][
"Name"] ) ) {
1135 $payee = $response[
"data"][
"Payees"];
1138 foreach ($response[
'data'][
"Payees"] as $payee) {
1139 if ($payee[
'Id'] == $parms[
'PayeeId']) {
1140 # this is the $account we want, break out of foreach(reqdata['data']); 1146 if ( $payee[
"Id"] == $parms[
"PayeeId"] ) {
1147 $lead = $payee[
"LeadDays"];
1148 $firstpay = $payee[
"EarliestPaymentDate"][
"Date"];
1149 $nextpay = $payee[
"NextPaymentDate"][
"Date"];
1150 $cutoff = $payee[
"CutoffTime"];
1152 throw new Exception(
"Payee not found - No payment dates");
1155 $datelist = array();
1156 # test $firstpay to make sure it is a date? 1157 $defaultTZ = date_default_timezone_get(); # so we can put it back
1158 date_default_timezone_set(
'UTC');
1160 if($now > strtotime( $cutoff )) {
1161 $Start = strtotime( $nextpay );
1163 $Start = strtotime( $firstpay );
1165 # if Start is false (strtotime failed) use current time 1166 $Start = ($Start ? $Start : $now);
1167 $End = $Start + (90 * 24 * 60 * 60);
1168 $holidays = ListHolidays(date(
'Y',$Start),date(
'Y',$End));
1169 for ($i = $Start; $i <= $End; $i += 86400) {
1170 $i = GetNextBusiness($i);
1172 $idate = gmdate(
'Y-m-d',$i);
1173 if (!in_array($idate,$holidays)) {
1174 $item[
'Proc'] = gmdate(
'Y-m-d',$i);
1175 if (strtoupper($parms[
'datemodel']) ==
'DUE') {
1176 $item[
'Due'] = gmdate(
'Y-m-d',GetNextBusiness($i+($lead*86400)));
1179 $datelist[] = $item;
1183 date_default_timezone_set($defaultTZ);
1185 $return = array(
'status'=>array(
'response'=>
'true',
'message'=>
"",
'code'=>
"000"),
'data'=>
"");
1186 $return[
'data'][
'EarliestPay'] = $firstpay;
1187 $return[
'data'][
'NextPay'] = $nextpay;
1188 $return[
'data'][
'Cutoff'] = $cutoff;
1189 $return[
'data'][
'LeadDays'] = $lead;
1190 # build RushOptions list like this: 1192 $return[
'data'][
'RushOptions'] = array();
1193 $return[
'data'][
'PaymentDates'] = $datelist;
1195 }
catch (Exception $e) {
1196 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'code'=>MP_CHKFREE_ERROR_CODE,
'data'=>array());
1202 function bpGetTerms($parms) {
1204 # CheckFree has no Get Terms functionality - just return empty success 1205 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success',
'code'=>
"000"),
'data'=>array(
'Terms'=>
''));
1206 }
catch (Exception $e) {
1207 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'code'=>MP_CHKFREE_ERROR_CODE,
'data'=>array());
1212 function bpGetRushOptions($parms) {
1214 # CheckFree has no separate Rush Options functionality - just return empty success 1215 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success',
"code"=>
"000"),
'data'=>array());
1216 }
catch (Exception $e) {
1217 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'code'=>MP_CHKFREE_ERROR_CODE,
'data'=>array());
1222 function bpAcceptTerms($parms) {
1224 # CheckFree has no Accept Terms functionality - just return empty success 1225 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success',
"code"=>
"000"),
'data'=>array());
1226 }
catch (Exception $e) {
1227 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'code'=>MP_CHKFREE_ERROR_CODE,
'data'=>array());
1232 function bpGetFeatureList($parms) {
1234 # Need to decide what the data looks like here -- string list of available features 1235 # maybe something out of trusteddetail (which comes to this function in $parms) 1236 # to allow customizing by cu 1237 $extraOptions = htmlentities($parms[
'ExtraOptions']);
1239 $return=array(
'status'=>array(
'response'=>
'true',
'message'=>
'success',
"code"=>
"000"),
1240 'data'=>array(
"extras" => $extraOptions,
'featurelist'=>
""));
1241 }
catch (Exception $e) {
1242 $return=array(
'status'=>array(
'response'=>
'false',
'message'=>$e->getMessage()),
'code'=>MP_CHKFREE_ERROR_CODE,
'data'=>array());
1247 function schedSort($a, $b)
1249 $atime = strtotime($a[
'Date']);
1250 $btime = strtotime($b[
'Date']);
1251 if ($atime == $btime) {
1252 if ($a[
'ToName'] == $b[
'ToName']) {
1253 if ( $a[
"TxnId"] == $b[
"TxnId"] ) {
1256 return ($a[
'TxnId'] < $b[
'TxnId']) ? -1 : 1;
1258 return ($a[
'ToName'] < $b[
'ToName']) ? -1 : 1;
1260 return ($atime < $btime) ? -1 : 1;
1263 function histSort($a, $b) {
1264 $atime = strtotime($a[
'Date']);
1265 $btime = strtotime($b[
'Date']);
1266 if ($atime == $btime) {
1267 if ($a[
'ToName'] == $b[
'ToName']) {
1268 if ( $a[
"TxnId"] == $b[
"TxnId"] ) {
1271 return ($a[
'TxnId'] < $b[
'TxnId']) ? -1 : 1;
1273 return ($a[
'ToName'] < $b[
'ToName']) ? -1 : 1;
1275 return ($atime > $btime) ? -1 : 1;
1279 function ckfrembcurl($soapString, $soapHeaders, $soapServer, $soapCertfile=
'', $soapKeyfile=
'', $soapCACert=
'') {
1284 $useEmbedded =
false;
1288 CURLOPT_SSL_VERIFYPEER => 0,
1289 CURLOPT_RETURNTRANSFER => 1,
1290 CURLOPT_HEADER => 0,
1292 CURLOPT_POSTFIELDS =>
"$soapString",
1293 CURLOPT_URL =>
"$soapServer");
1294 if (!empty($soapCertfile)) {
1295 $curlopts[CURLOPT_SSLCERT] =
"$soapCertfile";
1297 if (!empty($soapKeyfile)) {
1298 $curlopts[CURLOPT_SSLKEY] =
"$soapKeyfile";
1300 if (!empty($soapCACert)) {
1301 $curlopts[CURLOPT_CAINFO] =
"$soapCACert";
1305 @curl_setopt_array($ch, $curlopts);
1306 @curl_setopt($ch, CURLOPT_HTTPHEADER, $soapHeaders);
1308 $response = @curl_exec($ch);
1309 if (curl_errno($ch)) {
1319 $clData =
"--data-binary '$soapString' ";
1323 if (is_array($soapHeaders)) {
1324 foreach ($soapHeaders as $hdrLine) {
1325 $clHeaders .=
"-H '$hdrLine' ";
1329 if (!empty($soapCertfile)) {
1330 $clCert =
"--cert '$soapCertfile' ";
1333 if (!empty($soapKeyfile)) {
1334 $clKey=
"--key '$soapKeyfile' ";
1337 if (!empty($soapCACert)) {
1338 $clCA =
"--cacert $soapCACert";
1342 $clAction =
"'$soapServer'";
1344 $curlExec =
"/usr/bin/curl $clData $clHeaders $clCert $clKey $clCA $clAction";
1346 $clCurl = popen($curlExec,
"r");
1352 while ($buff = fread ($clCurl, 1500)) {
1355 $pipe_err = pclose($clCurl);
1360 function ckfrEchoPing($parms) {
1362 $reqparms = array(
'serviceurl' => 1,
1367 $missing = array_diff_key($reqparms,$parms);
1368 if (
sizeof($missing)) {
1369 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
1372 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1373 $soapString =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 1376 <v3:echo>test</v3:echo> 1378 </soapenv:Envelope>";
1390 $soapHeaders = array();
1391 $soapHeaders[] =
"Content-Type: text/xml; charset=UTF-8";
1392 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/EchoPing"';
1393 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
1395 if (empty($response)) {
1396 throw new Exception(
"EchoPing No Response");
1398 # call parse function to format response array 1400 $xmlreturn = hcuGetCFXMLResponse($response,
'EchoPingResult',
'http://schemas.xmlsoap.org/soap/envelope/');
1401 if (!is_array($xmlreturn) || $xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
1402 throw new Exception(
"EchoPing Invalid XML Response {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
1405 $return[
"status"][
"response"] =
'true';
1406 $return[
"status"][
"message"] =
'Success';
1407 $return[
"data"] = $xmlreturn[
"data"];
1409 }
catch (Exception $e) {
1410 $return[
"status"][
"response"] =
'false';
1411 $return[
"status"][
"message"] = $e->getMessage();
1412 $return[
"status"][
"line"] = $e->getLine();
1413 $return[
"data"] = array();
1414 $return[
"data"][
"xmlreturns"] = print_r($xmlreturn,
true);
1419 function ckfrSubscriberEnroll($parms) {
1422 $reqparms = array(
'SponsorID'=>1,
1430 'miraccountnumber' => 1,
1431 'mirfirstname' => 1,
1441 'payacctmicraccount' => 1,
1442 'payacctdescription' => 1,
1447 $missing = array_diff_key($reqparms,$parms);
1448 if (
sizeof($missing)) {
1449 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
1451 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
1452 if (strlen($parms[
"mirzip"])==5) {
1453 $ZIPclause =
"<v3:Zip5>{$parms['mirzip']}</v3:Zip5>";
1454 }
else if (strlen($parms[
"mirzip"]) == 9) {
1455 $ZIPclause =
"<v3:Zip5>" . substr($parms[
'mirzip'],0,5) .
"</v3:Zip5>";
1456 $ZIPclause .=
"<v3:Zip4>" . substr($parms[
'mirzip'],5,4) .
"</v3:Zip4>";
1460 $parms[
"miraddress2"] = trim($parms[
"miraddress2"]);
1461 if (empty($parms[
"miraddress2"])) {
1465 <v3:Address2>{$parms["miraddress2
"]}</v3:Address2> 1468 $parms[
"mircity"] = str_replace($rmlist,
"", $parms[
"mircity"]);
1469 $parms[
"mirstate"] = str_replace($rmlist,
"", $parms[
"mirstate"]);
1470 $parms[
"mirssn"] = str_replace(
"-",
"", $parms[
"mirssn"]);
1471 # decode the ProdList if given in parms 1472 if (
sizeof($parms[
'ProductList']) > 0) {
1473 $ProdList = json_decode($parms[
'ProductList'],TRUE);
1475 # if no ProdList (not given, or decode failed) set the default 1476 if (!is_array($ProdList)) {
1477 $ProdList = array(
'WBP' =>
'0411');
1482 foreach ($ProdList as $cfprod => $cfver) {
1485 <v3:Name>$cfprod</v3:Name> 1486 <v3:Version>$cfver</v3:Version> 1493 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1494 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 1499 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 1500 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 1501 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 1502 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 1503 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 1504 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 1505 <v3:CorrID>{$now}</v3:CorrID> 1509 <v3:ExternalSubscriberId>$subscriber</v3:ExternalSubscriberId> 1510 <v3:BillingClass>{$parms['billingclass']}</v3:BillingClass> 1511 <v3:UserId>{$subscriber}</v3:UserId> 1512 <v3:Password>{$parms['billpaypw']}</v3:Password> 1513 <v3:TaxId>{$parms['mirssn']}</v3:TaxId> 1515 <v3:First>{$parms['mirfirstname']}</v3:First> 1516 <v3:Last>{$parms['mirlastname']}</v3:Last> 1519 <v3:Address1>{$parms['miraddress1']}</v3:Address1>$addr2 1520 <v3:City>{$parms['mircity']}</v3:City> 1521 <v3:State>{$parms['mirstate']}</v3:State> 1525 <v3:value>{$parms['miremail']}</v3:value> 1527 <v3:DayPhone>{$parms['mirphone']}</v3:DayPhone> 1529 <v3:Date>{$parms['mirdob']}</v3:Date> 1531 <v3:AllowedToSolicit>N</v3:AllowedToSolicit> 1533 <v3:PerformAccountConfirmation>false</v3:PerformAccountConfirmation> 1536 <v3:RoutingTransitNumber>{$parms['rt']}</v3:RoutingTransitNumber> 1537 <v3:AccountType>DDA</v3:AccountType> 1538 <v3:AccountNumber>{$parms['payacctmicraccount']}</v3:AccountNumber> 1540 <v3:AccountNickName>{$parms['payacctdescription']}</v3:AccountNickName> 1541 <v3:IsBillPaymentEnabled>true</v3:IsBillPaymentEnabled> 1542 <v3:IsBankingEnabled>false</v3:IsBankingEnabled> 1543 <v3:IsDefaultPpsReceiveAccount>false</v3:IsDefaultPpsReceiveAccount> 1544 <v3:IsBillingAccount>true</v3:IsBillingAccount> 1545 <v3:IsPreferredAccount>true</v3:IsPreferredAccount> 1546 <v3:CheckPrintAddress> 1547 <v3:Address1>{$parms['miraddress1']}</v3:Address1>$addr2 1548 <v3:City>{$parms['mircity']}</v3:City> 1549 <v3:State>{$parms['mirstate']}</v3:State> 1551 </v3:CheckPrintAddress> 1556 </soapenv:Envelope>\n";
1557 $soapHeaders = array();
1558 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1559 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/SubscriberEnroll"';
1560 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
1562 if ( $parms[
"logging"] ==
"enabled" ) {
1563 $logParms = $parms[
"environment"];
1564 $logParms[
"token"] = $parms[
'Token'];
1565 $logParms[
"txnId"] = $now;
1566 $logParms[
"logPoint"] =
"enrollRequest";
1567 $logParms[
"request"] = $soapString;
1568 $logParms[
"reply"] = $response;
1569 LogCheckFreeActivity( $logParms );
1572 if (empty($response)) {
1573 throw new Exception(
"SubMaint No Response");
1582 # call parse function to format response array 1584 $xmlreturn = hcuGetCFXMLResponse($response,
'SubscriberEnrollResult',
'http://schemas.xmlsoap.org/soap/envelope/');
1585 if (!is_array($xmlreturn)) {
1586 throw new Exception(
"SubscriberEnroll Invalid XML Response");
1588 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
1589 throw new Exception(
"SubscriberEnroll Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
1591 $return[
"status"][
"response"] =
'true';
1592 $return[
"status"][
"message"] =
'Success';
1593 $return[
"data"] = $xmlreturn[
"data"];
1595 }
catch (Exception $e) {
1596 $return[
"status"][
"response"] =
'false';
1597 $return[
"status"][
"message"] = $e->getMessage();
1603 $return[
"data"] = array();
1607 function ckfrSubscriberGetInfo($parms) {
1610 $reqparms = array(
'SponsorID'=>1,
1620 $missing = array_diff_key($reqparms,$parms);
1621 if (
sizeof($missing)) {
1622 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
1624 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
1628 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1629 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 1632 <v3:subscriberGetInfoRequest> 1634 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 1635 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 1636 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 1637 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 1638 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 1639 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 1640 <v3:CorrID>{$now}</v3:CorrID> 1642 </v3:subscriberGetInfoRequest> 1644 </soapenv:Envelope>\n";
1646 $soapHeaders = array();
1647 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1648 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/SubscriberGetInfo"';
1649 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
1651 if ( $parms[
"logging"] ==
"enabled" ) {
1652 $logParms = $parms[
"environment"];
1653 $logParms[
"token"] = $parms[
'Token'];
1654 $logParms[
"txnId"] = $now;
1655 $logParms[
"logPoint"] =
"subscriberGetInfoRequest";
1656 $logParms[
"request"] = $soapString;
1657 $logParms[
"reply"] = $response;
1658 LogCheckFreeActivity( $logParms );
1661 if (empty($response)) {
1662 throw new Exception(
"SubMaint No Response");
1665 # call parse function to format response array 1667 $xmlreturn = hcuGetCFXMLResponse($response,
'SubscriberGetInfoResult',
'http://schemas.xmlsoap.org/soap/envelope/');
1669 if (!is_array($xmlreturn)) {
1670 throw new Exception(
"SubscriberGetInfo Invalid XML Response");
1685 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true' && $xmlreturn[
"data"][
"Result"][
"ResultInfo"][
"Code"]!=
'301') {
1686 throw new Exception(
"SubscriberGetInfo Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
1688 $return[
"status"][
"response"] =
'true';
1689 $return[
"status"][
"message"] =
'Success';
1690 $return[
"data"] = $xmlreturn[
"data"];
1692 }
catch (Exception $e) {
1693 $return[
"status"][
"response"] =
'false';
1694 $return[
"status"][
"message"] = $e->getMessage();
1696 $return[
"status"][
"line"] = $e->getLine();
1699 $return[
"data"] = array();
1704 function ckfrGetBankAccountList($parms) {
1707 $reqparms = array(
'SponsorID'=>1,
1716 $missing = array_diff_key($reqparms,$parms);
1717 if (
sizeof($missing)) {
1718 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
1722 $cacheType = CACHE_KEY_ACCTS;
1723 $cachedData = ReadCheckFreeCache( $parms[
"environment"][
"dbConn"],
1724 $parms[
"environment"][
"memberId"],
1725 $parms[
"BillpayId"],
1726 $parms[
"environment"][
"Cu"],
1730 if ( !is_array( $cachedData ) ) {
1731 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
1734 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1735 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 1740 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 1741 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 1742 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 1743 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 1744 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 1745 <v3:CorrID>{$now}</v3:CorrID> 1749 </soapenv:Envelope>\n";
1751 $soapHeaders = array();
1752 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1753 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/BankAccountList"';
1754 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
1756 if ( $parms[
"logging"] ==
"enabled" ) {
1757 $logParms = $parms[
"environment"];
1758 $logParms[
"token"] = $parms[
'Token'];
1759 $logParms[
"txnId"] = $now;
1760 $logParms[
"logPoint"] =
"listrq";
1761 $logParms[
"request"] = $soapString;
1762 $logParms[
"reply"] = $response;
1763 LogCheckFreeActivity( $logParms );
1766 if (empty($response)) {
1767 throw new Exception(
"SubMaint No Response");
1769 # call parse function to format response array 1771 $xmlreturn = hcuGetCFXMLResponse($response,
'GetBankAccountListResult',
'http://schemas.xmlsoap.org/soap/envelope/');
1772 if (!is_array($xmlreturn)) {
1773 throw new Exception(
"GetBankAccountList Invalid XML Response");
1775 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
1776 throw new Exception(
"GetBankAccountList Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
1779 WriteCheckFreeCache( $parms[
"environment"][
"dbConn"],
1780 $parms[
"environment"][
"memberId"],
1781 $parms[
"BillpayId"],
1782 $parms[
"environment"][
"Cu"],
1785 $xmlreturn[
"data"]);
1787 $return[
"data"] = $xmlreturn[
"data"];
1789 $return[
"data"] = $cachedData;
1792 $return[
"status"][
"response"] =
'true';
1793 $return[
"status"][
"message"] =
'Success';
1795 }
catch (Exception $e) {
1796 $return[
"status"][
"response"] =
'false';
1797 $return[
"status"][
"message"] = $e->getMessage();
1798 $return[
"status"][
"line"] = $e->getLine();
1799 $return[
"data"] = array();
1805 function ckfrGetPayeeList($parms) {
1808 $reqparms = array(
'SponsorID'=>1,
1817 $missing = array_diff_key($reqparms,$parms);
1818 if (
sizeof($missing)) {
1819 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
1823 $cacheType = CACHE_KEY_PAYEE;
1824 $cachedData = ReadCheckFreeCache( $parms[
"environment"][
"dbConn"],
1825 $parms[
"environment"][
"memberId"],
1826 $parms[
"BillpayId"],
1827 $parms[
"environment"][
"Cu"],
1831 if ( !is_array( $cachedData ) ) {
1832 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
1835 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1836 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 1841 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 1842 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 1843 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 1844 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 1845 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 1846 <v3:CorrID>{$now}</v3:CorrID> 1850 </soapenv:Envelope>\n";
1852 $soapHeaders = array();
1853 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1854 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/PayeeList"';
1855 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
1857 if ( $parms[
"logging"] ==
"enabled" ) {
1858 $logParms = $parms[
"environment"];
1859 $logParms[
"token"] = $parms[
'Token'];
1860 $logParms[
"txnId"] = $now;
1861 $logParms[
"logPoint"] =
"pyreq";
1862 $logParms[
"request"] = $soapString;
1863 $logParms[
"reply"] = $response;
1864 LogCheckFreeActivity( $logParms );
1867 if (empty($response)) {
1868 throw new Exception(
"GetPayeeList No Response");
1870 # call parse function to format response array 1872 $xmlreturn = hcuGetCFXMLResponse($response,
'GetPayeeListResult',
'http://schemas.xmlsoap.org/soap/envelope/');
1873 if (!is_array($xmlreturn)) {
1874 throw new Exception(
"GetPayeeList Invalid XML Response");
1876 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
1877 throw new Exception(
"GetPayeeList Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
1880 WriteCheckFreeCache( $parms[
"environment"][
"dbConn"],
1881 $parms[
"environment"][
"memberId"],
1882 $parms[
"BillpayId"],
1883 $parms[
"environment"][
"Cu"],
1886 $xmlreturn[
"data"]);
1888 $return[
"data"] = $xmlreturn[
"data"];
1890 $return[
"data"] = $cachedData;
1893 $return[
"status"][
"response"] =
'true';
1894 $return[
"status"][
"message"] =
'Success';
1895 }
catch (Exception $e) {
1896 $return[
"status"][
"response"] =
'false';
1897 $return[
"status"][
"message"] = $e->getMessage();
1898 $return[
"status"][
"line"] = $e->getLine();
1899 $return[
"data"] = array();
1905 function ckfrGetPaymentList($parms, $type) {
1908 $reqparms = array(
'SponsorID'=>1,
1918 $missing = array_diff_key($reqparms,$parms);
1919 if (
sizeof($missing)) {
1920 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
1922 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
1924 if ( strtoupper( $type ) ==
"PENDING" ) {
1925 $filterType =
"Pending";
1927 $cacheType = CACHE_KEY_PMTS;
1929 $filterType =
"Historical";
1931 $cacheType = CACHE_KEY_HIST;
1935 $cachedData = ReadCheckFreeCache( $parms[
"environment"][
"dbConn"],
1936 $parms[
"environment"][
"memberId"],
1937 $parms[
"BillpayId"],
1938 $parms[
"environment"][
"Cu"],
1942 if ( !is_array( $cachedData ) ) {
1945 $startDate = date(
"Y-m-d" );
1946 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
1947 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 1952 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 1953 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 1954 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 1955 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 1956 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 1957 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 1958 <v3:CorrID>{$now}</v3:CorrID> 1961 <v3:MaxPaymentsReturned>100</v3:MaxPaymentsReturned> 1964 <v3:StartingPaymentDate> 1965 <v3:Date>$startDate</v3:Date> 1966 </v3:StartingPaymentDate> 1967 <v3:NumberOfDays>$numDays</v3:NumberOfDays> 1968 <v3:StatusFilter>$filterType</v3:StatusFilter> 1972 </soapenv:Envelope>\n";
1974 $soapHeaders = array();
1975 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
1976 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/PaymentList"';
1977 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
1979 if ( $parms[
"logging"] ==
"enabled" ) {
1980 $logParms = $parms[
"environment"];
1981 $logParms[
"token"] = $parms[
'Token'];
1982 $logParms[
"txnId"] = $now;
1983 $logParms[
"logPoint"] =
"plreq";
1984 $logParms[
"request"] = $soapString;
1985 $logParms[
"reply"] = $response;
1987 LogCheckFreeActivity( $logParms );
1990 if (empty($response)) {
1991 throw new Exception(
"SubMaint No Response");
1993 # call parse function to format response array 1995 $xmlreturn = hcuGetCFXMLResponse($response,
'GetPaymentListResult',
'http://schemas.xmlsoap.org/soap/envelope/');
1996 if (!is_array($xmlreturn)) {
1997 throw new Exception(
"GetPaymentList Invalid XML Response");
2000 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
2001 if ( strlen( $xmlreturn[
'faultcode'] ) > 0 ) {
2002 throw new Exception(
"GetPaymentList failed with the following error: [{$xmlreturn['faultcode']}] {$xmlreturn['faultstring']}");
2005 throw new Exception(
"GetPaymentList Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
2009 WriteCheckFreeCache( $parms[
"environment"][
"dbConn"],
2010 $parms[
"environment"][
"memberId"],
2011 $parms[
"BillpayId"],
2012 $parms[
"environment"][
"Cu"],
2015 $xmlreturn[
"data"]);
2017 $return[
"data"] = $xmlreturn[
"data"];
2019 $return[
"data"] = $cachedData;
2022 $return[
"status"][
"response"] =
'true';
2023 $return[
"status"][
"message"] =
'Success';
2024 }
catch (Exception $e) {
2025 $return[
"status"][
"response"] =
'false';
2026 $return[
"status"][
"message"] = $e->getMessage();
2027 $return[
"status"][
"line"] = $e->getLine();
2028 $return[
"data"] = array();
2035 function ckfrAddPayment($parms) {
2038 $reqparms = array(
'SponsorID'=>1,
2047 $missing = array_diff_key($reqparms,$parms);
2048 if (
sizeof($missing)) {
2049 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2051 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2053 $paymentDate = date(
"Y-m-d", strtotime( $parms[
"Payment"][
'Date'] ) );
2055 $accountParts = explode(
"|", $parms[
"Payment"][
"From"] );
2057 $routing = $accountParts[0];
2058 $accountType = $accountParts[1];
2059 $account = $accountParts[2];
2062 $rush = $parms[
"Payment"][
"Rush"] ==
"Expedited" ?
"ExpeditedPayment" :
"RegularPayment";
2063 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2064 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2069 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2070 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2071 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2072 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2073 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2074 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2075 <v3:CorrID>{$now}</v3:CorrID> 2078 <!--Zero or more repetitions:--> 2079 <v3:PaymentAddInput> 2080 <v3:SequenceNumber>1</v3:SequenceNumber> 2081 <v3:PayeeId>{$parms["Payment
"]['To']}</v3:PayeeId> 2083 <v3:RoutingTransitNumber>$routing</v3:RoutingTransitNumber> 2084 <v3:AccountType>$accountType</v3:AccountType> 2085 <v3:AccountNumber>$account</v3:AccountNumber> 2087 <v3:PaymentAmount>{$parms["Payment
"]['Amount']}</v3:PaymentAmount> 2089 <v3:Date>$paymentDate</v3:Date> 2091 <v3:PaymentDeliveryMethod>$rush</v3:PaymentDeliveryMethod> 2092 </v3:PaymentAddInput> 2096 </soapenv:Envelope>\n";
2098 $soapHeaders = array();
2099 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2100 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/AddPayments"';
2101 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2103 if ( $parms[
"logging"] ==
"enabled" ) {
2104 $logParms = $parms[
"environment"];
2105 $logParms[
"token"] = $parms[
'Token'];
2106 $logParms[
"txnId"] = $now;
2107 $logParms[
"logPoint"] =
"pmtsrq";
2108 $logParms[
"request"] = $soapString;
2109 $logParms[
"reply"] = $response;
2110 LogCheckFreeActivity( $logParms );
2113 if (empty($response)) {
2114 throw new Exception(
"SubMaint No Response");
2116 # call parse function to format response array 2118 $xmlreturn = hcuGetCFXMLResponse($response,
'AddPaymentsResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2119 if (!is_array($xmlreturn)) {
2120 throw new Exception(
"AddPayments Invalid XML Response");
2122 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
2123 throw new Exception(
"AddPayments Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
2125 $return[
"status"][
"response"] =
'true';
2126 $return[
"status"][
"message"] =
'Success';
2127 $return[
"data"] = $xmlreturn[
"data"];
2130 $cacheType = CACHE_KEY_PMTS;
2131 DeleteCheckFreeCache( $parms[
"environment"][
"dbConn"],
2132 $parms[
"environment"][
"memberId"],
2133 $parms[
"BillpayId"],
2134 $parms[
"environment"][
"Cu"],
2139 if ( $parms[
"logging"] ==
"enabled" ) {
2140 $logParms = $parms[
"environment"];
2141 $logParms[
"token"] = $parms[
'Token'];
2142 $logParms[
"txnId"] = $now;
2143 $logParms[
"logPoint"] =
"pmtsrq";
2144 $logParms[
"request"] = print_r( $parms,
true );
2145 $logParms[
"reply"] = print_r( $return,
true );
2146 LogCheckFreeActivity( $logParms );
2149 }
catch (Exception $e) {
2150 $return[
"status"][
"response"] =
'false';
2151 $return[
"status"][
"message"] = $e->getMessage();
2152 $return[
"status"][
"line"] = $e->getLine();
2153 $return[
"data"] = array();
2160 function ckfrModPayment($parms) {
2163 $reqparms = array(
'SponsorID'=>1,
2172 $missing = array_diff_key($reqparms,$parms);
2173 if (
sizeof($missing)) {
2174 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2176 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2178 $paymentDate = date(
"Y-m-d", strtotime( $parms[
"Payment"][
'Date'] ) );
2180 $accountParts = explode(
"|", $parms[
"Payment"][
"From"] );
2182 $routing = $accountParts[0];
2183 $accountType = $accountParts[1];
2184 $account = $accountParts[2];
2187 $txnId = $parms[
"Payment"][
"Id"];
2188 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2189 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2192 <v3:paymentModifyRq> 2194 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2195 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2196 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2197 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2198 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2199 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2200 <v3:CorrID>{$now}</v3:CorrID> 2203 <v3:TransactionId>$txnId</v3:TransactionId> 2205 <v3:RoutingTransitNumber>$routing</v3:RoutingTransitNumber> 2206 <v3:AccountType>$accountType</v3:AccountType> 2207 <v3:AccountNumber>$account</v3:AccountNumber> 2209 <v3:PaymentAmount>{$parms["Payment
"]['Amount']}</v3:PaymentAmount> 2211 <v3:Date>$paymentDate</v3:Date> 2214 </v3:paymentModifyRq> 2216 </soapenv:Envelope>\n";
2218 $soapHeaders = array();
2219 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2220 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/ModifyPayment"';
2221 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2223 if ( $parms[
"logging"] ==
"enabled" ) {
2224 $logParms = $parms[
"environment"];
2225 $logParms[
"token"] = $parms[
'Token'];
2226 $logParms[
"txnId"] = $now;
2227 $logParms[
"logPoint"] =
"paymentModifyRq";
2228 $logParms[
"request"] = $soapString;
2229 $logParms[
"reply"] = $response;
2230 LogCheckFreeActivity( $logParms );
2233 if (empty($response)) {
2234 throw new Exception(
"SubMaint No Response");
2236 # call parse function to format response array 2238 $xmlreturn = hcuGetCFXMLResponse($response,
'PaymentModifyResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2239 if (!is_array($xmlreturn)) {
2240 throw new Exception(
"ModifyPayment Invalid XML Response");
2242 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
2243 throw new Exception(
"ModifyPayment Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
2245 $return[
"status"][
"response"] =
'true';
2246 $return[
"status"][
"message"] =
'Success';
2247 $return[
"data"] = $xmlreturn[
"data"];
2250 $cacheType = CACHE_KEY_PMTS;
2251 DeleteCheckFreeCache( $parms[
"environment"][
"dbConn"],
2252 $parms[
"environment"][
"memberId"],
2253 $parms[
"BillpayId"],
2254 $parms[
"environment"][
"Cu"],
2258 }
catch (Exception $e) {
2259 $return[
"status"][
"response"] =
'false';
2260 $return[
"status"][
"message"] = $e->getMessage();
2261 $return[
"status"][
"line"] = $e->getLine();
2262 $return[
"data"] = array();
2268 function ckfrPaymentCancel($parms) {
2271 $reqparms = array(
'SponsorID'=>1,
2280 $missing = array_diff_key($reqparms,$parms);
2281 if (
sizeof($missing)) {
2282 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2284 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2287 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2288 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2291 <v3:paymentCancelRq> 2293 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2294 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2295 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2296 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2297 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2298 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2299 <v3:CorrID>{$now}</v3:CorrID> 2302 <v3:TransactionId>{$parms["transactionId
"]}</v3:TransactionId> 2304 </v3:paymentCancelRq> 2306 </soapenv:Envelope>\n";
2308 $soapHeaders = array();
2309 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2310 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/CancelPayment"';
2311 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2313 if ( $parms[
"logging"] ==
"enabled" ) {
2314 $logParms = $parms[
"environment"];
2315 $logParms[
"token"] = $parms[
'Token'];
2316 $logParms[
"txnId"] = $now;
2317 $logParms[
"logPoint"] =
"paymentCancelRq";
2318 $logParms[
"request"] = $soapString;
2319 $logParms[
"reply"] = $response;
2320 LogCheckFreeActivity( $logParms );
2323 if (empty($response)) {
2324 throw new Exception(
"SubMaint No Response");
2326 # call parse function to format response array 2328 $xmlreturn = hcuGetCFXMLResponse($response,
'PaymentCancelResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2329 if (!is_array($xmlreturn)) {
2330 throw new Exception(
"CancelPayment Invalid XML Response");
2332 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
2333 throw new Exception(
"CancelPayment Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
2335 $return[
"status"][
"response"] =
'true';
2336 $return[
"status"][
"message"] =
'Success';
2337 $return[
"data"] = $xmlreturn[
"data"];
2340 $cacheType = CACHE_KEY_PMTS;
2341 DeleteCheckFreeCache( $parms[
"environment"][
"dbConn"],
2342 $parms[
"environment"][
"memberId"],
2343 $parms[
"BillpayId"],
2344 $parms[
"environment"][
"Cu"],
2349 }
catch (Exception $e) {
2350 $return[
"status"][
"response"] =
'false';
2351 $return[
"status"][
"message"] = $e->getMessage();
2352 $return[
"status"][
"line"] = $e->getLine();
2353 $return[
"data"] = array();
2359 function ckfrSubscriberModify($parms) {
2362 $reqparms = array(
'SponsorID'=>1,
2368 'miraccountnumber' => 1,
2382 $missing = array_diff_key($reqparms,$parms);
2383 if (
sizeof($missing)) {
2384 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2386 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2387 if (strlen($parms[
"mirzip"])==5) {
2388 $ZIPclause =
"<v3:Zip5>{$parms['mirzip']}</v3:Zip5>";
2389 }
else if (strlen($parms[
"mirzip"]) == 9) {
2390 $ZIPclause =
"<v3:Zip5>" . substr($parms[
'mirzip'],0,5) .
"</v3:Zip5>";
2391 $ZIPclause .=
"<v3:Zip4>" . substr($parms[
'mirzip'],5,4) .
"</v3:Zip4>";
2395 $parms[
"miraddress2"] = trim($parms[
"miraddress2"]);
2396 if (empty($parms[
"miraddress2"])) {
2400 <v3:Address2>{$parms["miraddress2
"]}</v3:Address2> 2403 $parms[
"mircity"] = str_replace($rmlist,
"", $parms[
"mircity"]);
2404 $parms[
"mirstate"] = str_replace($rmlist,
"", $parms[
"mirstate"]);
2405 $parms[
"mirssn"] = str_replace(
"-",
"", $parms[
"mirssn"]);
2408 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2409 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2412 <v3:subscriberModifyRequest> 2414 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2415 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2416 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2417 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2418 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2419 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2420 <v3:CorrID>{$now}</v3:CorrID> 2423 <v3:ExternalSubscriberId>$subscriber</v3:ExternalSubscriberId> 2424 <v3:BillingClass>{$parms['billingclass']}</v3:BillingClass> 2425 <v3:UserId>{$subscriber}</v3:UserId> 2426 <v3:Password>{$parms['billpaypw']}</v3:Password> 2427 <v3:TaxId>{$parms['mirssn']}</v3:TaxId> 2429 <v3:First>{$parms['mirfirstname']}</v3:First> 2430 <v3:Last>{$parms['mirlastname']}</v3:Last> 2433 <v3:Address1>{$parms['miraddress1']}</v3:Address1>$addr2 2434 <v3:City>{$parms['mircity']}</v3:City> 2435 <v3:State>{$parms['mirstate']}</v3:State> 2439 <v3:value>{$parms['miremail']}</v3:value> 2441 <v3:DayPhone>{$parms['mirphone']}</v3:DayPhone> 2443 <v3:Date>{$parms['mirdob']}</v3:Date> 2445 <v3:AllowedToSolicit>N</v3:AllowedToSolicit> 2447 </v3:subscriberModifyRequest> 2449 </soapenv:Envelope>\n";
2451 $soapHeaders = array();
2452 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2453 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/SubscriberModify"';
2454 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2456 if ( $parms[
"logging"] ==
"enabled" ) {
2457 $logParms = $parms[
"environment"];
2458 $logParms[
"token"] = $parms[
'Token'];
2459 $logParms[
"txnId"] = $now;
2460 $logParms[
"logPoint"] =
"subscriberModifyRequest";
2461 $logParms[
"request"] = $soapString;
2462 $logParms[
"reply"] = $response;
2463 LogCheckFreeActivity( $logParms );
2466 if (empty($response)) {
2467 throw new Exception(
"SubMaint No Response");
2474 # call parse function to format response array 2476 $xmlreturn = hcuGetCFXMLResponse($response,
'SubscriberModifyResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2477 if (!is_array($xmlreturn)) {
2478 throw new Exception(
"SubscriberModify Invalid XML Response");
2480 if ($xmlreturn[
"data"][
"Result"][
"Success"] !=
'true') {
2481 throw new Exception(
"SubscriberModify Failed {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Code
"]} {$xmlreturn["data
"]["Result
"]["ResultInfo
"]["Description
"]}");
2483 $return[
"status"][
"response"] =
'true';
2484 $return[
"status"][
"message"] =
'Success';
2485 $return[
"data"] = $xmlreturn[
"data"];
2487 }
catch (Exception $e) {
2488 $return[
"status"][
"response"] =
'false';
2489 $return[
"status"][
"message"] = $e->getMessage();
2491 $return[
"status"][
"line"] = $e->getLine();
2492 $return[
"data"] = array();
2497 function hcuGetCFXMLResponse($cfxXML, $cfxITEM, $cfxNS) {
2499 $xml = simplexml_load_string($cfxXML,
"SimpleXMLElement",LIBXML_NOWARNING);
2500 if (!is_object($xml)) {
2501 throw new Exception(
"Invalid XML");
2503 $xml->registerXPathNamespace(
'cfx', $cfxNS);
2504 $dataobj = $xml->xpath(
"//cfx:Body");
2505 if (!is_array($dataobj)) {
2506 throw new Exception(
"xPath Failed");
2508 $errorresponse = $xml->xpath(
"//cfx:Fault");
2510 if (is_array($errorresponse) && count($errorresponse)) {
2511 $fault = trim( $errorresponse[0]->faultcode );
2512 $faultString = trim( $errorresponse[0]->faultstring );
2513 $resp_arr = array(
'faultcode' => $fault,
2514 'faultstring' => $faultString);
2515 $resp_arr[
"status"][
"response"] =
'false';
2517 $dataresponse = objectToArray($dataobj);
2518 if (!is_array($dataresponse)) {
2519 throw new Exception(
"objectToArray conversion Failed");
2521 $resp_arr[
"status"][
"response"] =
'true';
2522 $resp_arr[
"status"][
"message"] =
'Success';
2523 $resp_arr[
"data"] = $dataresponse[0][$cfxITEM];
2525 }
catch (Exception $e) {
2526 $resp_arr[
"status"][
"response"] =
'false';
2527 $resp_arr[
"status"][
"message"] = $e->getMessage();
2528 $resp_arr[
"status"][
"line"] = $e->getLine();
2536 function objectToArray( $object )
2539 if( !is_object( $object ) && !is_array( $object ) )
2543 if( is_object( $object ) )
2545 $object = get_object_vars( $object );
2547 return array_map(
'objectToArray', $object );
2550 function ckfrBankAccountAdd($parms) {
2553 $reqparms = array(
'SponsorID'=>1,
2563 'payacctmicraccount' => 1,
2564 'payacctdescription' => 1
2566 $missing = array_diff_key($reqparms,$parms);
2567 if (
sizeof($missing)) {
2568 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2570 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2571 $parms[
"miremail"] = str_replace($rmlist,
"", $parms[
"miremail"]);
2574 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2575 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2578 <v3:bankAccountAddRequest> 2580 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2581 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2582 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2583 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2584 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2585 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2586 <v3:CorrID>{$now}</v3:CorrID> 2588 <v3:PerformAccountConfirmation>false</v3:PerformAccountConfirmation> 2591 <v3:RoutingTransitNumber>{$parms['rt']}</v3:RoutingTransitNumber> 2592 <v3:AccountType>DDA</v3:AccountType> 2593 <v3:AccountNumber>{$parms['payacctmicraccount']}</v3:AccountNumber> 2595 <v3:AccountNickName>{$parms['payacctdescription']}</v3:AccountNickName> 2596 <v3:IsBillPaymentEnabled>true</v3:IsBillPaymentEnabled> 2597 <v3:IsBankingEnabled>false</v3:IsBankingEnabled> 2598 <v3:IsDefaultPpsReceiveAccount>false</v3:IsDefaultPpsReceiveAccount> 2599 <v3:IsBillingAccount>false</v3:IsBillingAccount> 2600 <v3:IsPreferredAccount>false</v3:IsPreferredAccount> 2602 </v3:bankAccountAddRequest> 2604 </soapenv:Envelope>\n";
2606 $soapHeaders = array();
2607 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2608 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/BankAccountAdd"';
2609 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2611 if ( $parms[
"logging"] ==
"enabled" ) {
2612 $logParms = $parms[
"environment"];
2613 $logParms[
"token"] = $parms[
'Token'];
2614 $logParms[
"txnId"] = $now;
2615 $logParms[
"logPoint"] =
"bankAccountAddRequest";
2616 $logParms[
"request"] = $soapString;
2617 $logParms[
"reply"] = $response;
2618 LogCheckFreeActivity( $logParms );
2621 if (empty($response)) {
2622 throw new Exception(
"SubMaint No Response");
2628 # call parse function to format response array 2630 $xmlreturn = hcuGetCFXMLResponse($response,
'BankAccountAddResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2631 if (!is_array($xmlreturn) || $xmlreturn[
"status"][
"response"] !=
'true') {
2632 throw new Exception(
"BankAccountAdd Invalid XML Response {$xmlreturn["status
"]["message
"]}");
2634 $return[
"status"][
"response"] =
'true';
2635 $return[
"status"][
"message"] =
'Success';
2636 $return[
"data"] = $xmlreturn[
"data"];
2638 }
catch (Exception $e) {
2639 $return[
"status"][
"response"] =
'false';
2640 $return[
"status"][
"message"] = $e->getMessage();
2641 $return[
"status"][
"line"] = $e->getLine();
2642 $return[
"data"] = array();
2646 function ckfrBankAccountModify($parms) {
2649 $reqparms = array(
'SponsorID'=>1,
2655 'miraccountnumber' => 1,
2661 $missing = array_diff_key($reqparms,$parms);
2662 if (
sizeof($missing)) {
2663 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2665 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2666 $parms[
"miremail"] = str_replace($rmlist,
"", $parms[
"miremail"]);
2669 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2670 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2673 <v3:bankAccountModifyRequest> 2675 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2676 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2677 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2678 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2679 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2680 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2681 <v3:CorrID>{$now}</v3:CorrID> 2685 <v3:RoutingTransitNumber>?</v3:RoutingTransitNumber> 2686 <v3:AccountType>?</v3:AccountType> 2687 <v3:AccountNumber>?</v3:AccountNumber> 2688 <v3:AccountNickName>?</v3:AccountNickName> 2689 <v3:IsBillPaymentEnabled>?</v3:IsBillPaymentEnabled> 2690 <v3:IsBankingEnabled>?</v3:IsBankingEnabled> 2692 <v3:DownloadTransactionsEnabled>?</v3:DownloadTransactionsEnabled> 2693 <v3:CanUseAsTransferSource>?</v3:CanUseAsTransferSource> 2694 <v3:CanUseAsTransferDestination>?</v3:CanUseAsTransferDestination> 2695 </v3:BankingOptions> 2696 <v3:IsDefaultPpsReceiveAccount>?</v3:IsDefaultPpsReceiveAccount> 2697 <v3:IsBillingAccount>?</v3:IsBillingAccount> 2698 <v3:IsPreferredAccount>?</v3:IsPreferredAccount> 2699 <v3:BusinessName>?</v3:BusinessName> 2700 <v3:PrimaryAccountOwner>?</v3:PrimaryAccountOwner> 2701 <v3:SecondaryAccountOwner>?</v3:SecondaryAccountOwner> 2702 <v3:StartingCheckNumber>?</v3:StartingCheckNumber> 2703 <v3:CheckPrintAddress> 2704 <v3:Address1>?</v3:Address1> 2705 <v3:Address2>?</v3:Address2> 2706 <v3:City>?</v3:City> 2707 <v3:State>?</v3:State> 2708 <v3:Zip5>?</v3:Zip5> 2709 <v3:Zip4>?</v3:Zip4> 2710 <v3:Zip2>?</v3:Zip2> 2711 </v3:CheckPrintAddress> 2712 <v3:CheckPrintAddressInternational> 2713 <v3:Address1>?</v3:Address1> 2714 <v3:Address2>?</v3:Address2> 2715 <v3:City>?</v3:City> 2716 <v3:State>?</v3:State> 2717 <v3:PostalCode>?</v3:PostalCode> 2718 <v3:CountryCode>?</v3:CountryCode> 2719 <v3:ProvinceName>?</v3:ProvinceName> 2720 </v3:CheckPrintAddressInternational> 2722 </v3:bankAccountModifyRequest> 2724 </soapenv:Envelope>\n";
2726 $soapHeaders = array();
2727 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2728 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/BankAccountModify"';
2729 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2731 if ( $parms[
"logging"] ==
"enabled" ) {
2732 $logParms = $parms[
"environment"];
2733 $logParms[
"token"] = $parms[
'Token'];
2734 $logParms[
"txnId"] = $now;
2735 $logParms[
"logPoint"] =
"bankAccountModifyRequest";
2736 $logParms[
"request"] = $soapString;
2737 $logParms[
"reply"] = $response;
2738 LogCheckFreeActivity( $logParms );
2741 if (empty($response)) {
2742 throw new Exception(
"SubMaint No Response");
2744 # call parse function to format response array 2746 $xmlreturn = hcuGetCFXMLResponse($response,
'BankAccountModifyResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2747 if (!is_array($xmlreturn) || $xmlreturn[
"status"][
"response"] !=
'true') {
2748 throw new Exception(
"BankAccountModify Invalid XML Response {$xmlreturn["status
"]["message
"]}");
2750 $return[
"status"][
"response"] =
'true';
2751 $return[
"status"][
"message"] =
'Success';
2752 $return[
"data"] = $xmlreturn[
"data"];
2754 }
catch (Exception $e) {
2755 $return[
"status"][
"response"] =
'false';
2756 $return[
"status"][
"message"] = $e->getMessage();
2757 $return[
"status"][
"line"] = $e->getLine();
2758 $return[
"data"] = array();
2762 function ckfrBankAccountInactivate($parms) {
2765 $reqparms = array(
'SponsorID'=>1,
2775 $missing = array_diff_key($reqparms,$parms);
2776 if (
sizeof($missing)) {
2777 throw new Exception(
"Missing Parameters (" . join(
", ",array_keys($missing)) .
" )");
2779 $subscriber = substr(
"000000000{$parms['billpayid']}", -9, 9);
2780 $parms[
"miremail"] = str_replace($rmlist,
"", $parms[
"miremail"]);
2783 $soapString =
'<?xml version="1.0" encoding="utf-8"?>';
2784 $soapString .=
"\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v3=\"http://fiserv.com/builder/v3_0\"> 2787 <v3:bankAccountInactivateRequest> 2789 <v3:SponsorId>{$parms['SponsorID']}</v3:SponsorId> 2790 <v3:SubscriberId>{$subscriber}</v3:SubscriberId> 2791 <v3:ClientAppText>{$parms['clientAppText']}</v3:ClientAppText> 2792 <v3:ClientAppVersion>{$parms['clientAppVer']}</v3:ClientAppVersion> 2793 <v3:SubscriberIpAddress>{$parms['clientIP']}</v3:SubscriberIpAddress> 2794 <v3:SessionCorrID>{$parms['Token']}</v3:SessionCorrID> 2795 <v3:CorrID>{$now}</v3:CorrID> 2798 <v3:RoutingTransitNumber>?</v3:RoutingTransitNumber> 2799 <v3:AccountType>?</v3:AccountType> 2800 <v3:AccountNumber>?</v3:AccountNumber> 2802 </v3:bankAccountInactivateRequest> 2804 </soapenv:Envelope>\n";
2806 $soapHeaders = array();
2807 $soapHeaders[] =
"Content-Type: text/xml; charset=utf-8";
2808 $soapHeaders[] =
'SOAPAction: "http://fiserv.com/builder/v3_0/BankAccountInactivate"';
2809 $response = ckfrembcurl($soapString, $soapHeaders, $parms[
'serviceurl'],$parms[
'servicecert'],$parms[
'servicekey'],$parms[
'serviceca']);
2811 if ( $parms[
"logging"] ==
"enabled" ) {
2812 $logParms = $parms[
"environment"];
2813 $logParms[
"token"] = $parms[
'Token'];
2814 $logParms[
"txnId"] = $now;
2815 $logParms[
"logPoint"] =
"bankAccountInactivateRequest";
2816 $logParms[
"request"] = $soapString;
2817 $logParms[
"reply"] = $response;
2818 LogCheckFreeActivity( $logParms );
2821 if (empty($response)) {
2822 throw new Exception(
"SubMaint No Response");
2824 # call parse function to format response array 2826 $xmlreturn = hcuGetCFXMLResponse($response,
'BankAccountInactivateResult',
'http://schemas.xmlsoap.org/soap/envelope/');
2827 if (!is_array($xmlreturn) || $xmlreturn[
"status"][
"response"] !=
'true') {
2828 throw new Exception(
"BankAccountInactivate Invalid XML Response {$xmlreturn["status
"]["message
"]}");
2830 $return[
"status"][
"response"] =
'true';
2831 $return[
"status"][
"message"] =
'Success';
2832 $return[
"data"] = $xmlreturn[
"data"];
2834 }
catch (Exception $e) {
2835 $return[
"status"][
"response"] =
'false';
2836 $return[
"status"][
"message"] = $e->getMessage();
2837 $return[
"status"][
"line"] = $e->getLine();
2838 $return[
"data"] = array();
2852 function bpSetCred($parms) {
2858 $return = array(
'status' =>
'true',
'message' =>
'success');
2860 if (HCU_array_key_value(
'pilot', $parms) == 1) {
2861 $tdCertFileId = $parms[
'certcred'];
2862 $tdKeyFileId = $parms[
'certkey'];
2863 $serviceurl = HCU_array_key_value(
'certurl', $parms);
2864 $serviceca = HCU_array_key_value(
'certca', $parms);
2866 $tdCertFileId = $parms[
'prodcred'];
2867 $tdKeyFileId = $parms[
'prodkey'];
2868 $serviceurl = HCU_array_key_value(
'produrl', $parms);
2869 $serviceca = HCU_array_key_value(
'prodca', $parms);
2875 $hcuCertFile = GetAwsCertFile($tdCertFileId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
2880 $hcuKeyFile = GetAwsCertFile($tdKeyFileId, HOMECU_ENC_CERT_DIR, HOMECU_DOCK_CERT_DIR);
2883 if (($hcuCertFile ==
'' || !(is_readable($hcuCertFile))) || ($hcuKeyFile ==
'' || !(is_readable($hcuKeyFile)))) {
2884 throw new Exception(
"Security Files missing or unreadable");
2887 $return[
'data'] = array(
'servicecert' => $hcuCertFile,
'servicekey' => $hcuKeyFile,
'serviceurl' => $serviceurl,
'serviceca' => $serviceca);
2888 }
catch (Exception $e) {
2889 $return = array(
'status' =>
'false',
'message' => $e->getMessage(),
'data' => array());
2895 function ListHolidays($Start, $End) {
2904 $holidays = array();
2905 for ($i = $Start; $i <= $End; $i++) {
2906 for ($m = 1; $m <= 12; $m++) {
2917 $dtHoliday = mktime(12, 0, 0, 1, 1, $i);
2919 $holidays[] = date(
'Y-m-d',$dtHoliday);
2921 $dow = idate(
'w', $dtHoliday);
2925 $dtHoliday += 86400;
2927 case 1: #already Monday
2930 $dtHoliday += (86400 * 6);
2933 $dtHoliday += (86400 * 5);
2936 $dtHoliday += (86400 * 4);
2939 $dtHoliday += (86400 * 3);
2942 $dtHoliday += (86400 * 2);
2945 $dtHoliday += (86400 * 14); # add 2 weeks to
get 3rd Monday
2946 $holidays[] = date(
'Y-m-d',$dtHoliday);
2951 $dtHoliday = mktime(12, 0, 0, 2, 1, $i);
2952 $dow = idate(
'w', $dtHoliday);
2956 $dtHoliday += 86400;
2958 case 1: #already Monday
2961 $dtHoliday += (86400 * 6);
2964 $dtHoliday += (86400 * 5);
2967 $dtHoliday += (86400 * 4);
2970 $dtHoliday += (86400 * 3);
2973 $dtHoliday += (86400 * 2);
2976 $dtHoliday += (86400 * 14); # add 2 weeks to
get 3rd Monday
2977 $holidays[] = date(
'Y-m-d',$dtHoliday);
2982 $dtHoliday = mktime(12, 0, 0, 5, 31, $i);
2983 $dow = idate(
'w', $dtHoliday);
2984 # find last day & back up 2987 $dtHoliday -= (86400 * 6);
2989 case 1: #already Monday
2992 $dtHoliday -= 86400;
2995 $dtHoliday -= (86400 * 2);
2998 $dtHoliday -= (86400 * 3);
3001 $dtHoliday -= (86400 * 4);
3004 $dtHoliday -= (86400 * 5);
3007 $holidays[] = date(
'Y-m-d',$dtHoliday);
3012 $dtHoliday = mktime(12, 0, 0, 7, 4, $i);
3014 $holidays[] = date(
'Y-m-d',$dtHoliday);
3020 $dtHoliday = mktime(12, 0, 0, 9, 1, $i);
3021 $dow = idate(
'w', $dtHoliday);
3025 $dtHoliday += 86400;
3027 case 1: #already Monday
3030 $dtHoliday += (86400 * 6);
3033 $dtHoliday += (86400 * 5);
3036 $dtHoliday += (86400 * 4);
3039 $dtHoliday += (86400 * 3);
3042 $dtHoliday += (86400 * 2);
3045 $holidays[] = date(
'Y-m-d',$dtHoliday);
3050 $dtHoliday = mktime(12, 0, 0, 10, 1, $i);
3051 $dow = idate(
'w', $dtHoliday);
3055 $dtHoliday += 86400;
3057 case 1: #already Monday
3060 $dtHoliday += (86400 * 6);
3063 $dtHoliday += (86400 * 5);
3066 $dtHoliday += (86400 * 4);
3069 $dtHoliday += (86400 * 3);
3072 $dtHoliday += (86400 * 2);
3075 $dtHoliday += (86400 * 7); # add 1 week to
get 2nd Monday
3076 $holidays[] = date(
'Y-m-d',$dtHoliday);
3081 $dtHoliday = mktime(12, 0, 0, 11, 11, $i);
3083 $holidays[] = date(
'Y-m-d',$dtHoliday);
3086 $dtHoliday = mktime(12, 0, 0, 11, 1, $i);
3087 $dow = idate(
'w', $dtHoliday);
3088 # find first Thursday 3091 $dtHoliday += (86400 * 4);
3094 $dtHoliday += (86400 * 3);
3097 $dtHoliday += (86400 * 2);
3100 $dtHoliday += 86400;
3105 $dtHoliday += (86400 * 6);
3108 $dtHoliday += (86400 * 5);
3111 $dtHoliday += (86400 * 21); # add 3 weeks to
get 4th Thursday
3112 $holidays[] = date(
'Y-m-d',$dtHoliday);
3117 $dtHoliday = mktime(12, 0, 0, 12, 25, $i);
3119 $holidays[] = date(
'Y-m-d',$dtHoliday);
3129 function GetNextBusiness($dtTimeStamp) {
3132 $intWeekday = idate(
'w', $dtTimeStamp);
3133 switch ($intWeekday) {
3134 case 0: #Sunday - move forward to Monday
3135 $dtTimeStamp += 86400;
3137 case 6: #Saturday - move forward to Monday
3138 $dtTimeStamp += (86400*2);
3140 case 1: # Monday - Friday -
do nothing
3148 return $dtTimeStamp;