· 6 years ago · Apr 19, 2020, 12:36 PM
1public function processRegisterChild($child){
2 $adapter_list = array();
3 if(is_array($child)){
4 if(isset($child["temp_status"]) && $child["temp_status"] == 1){
5 $data = array(
6 "va_no" => self::$parent_va,
7 "acc_no" => $child["beneficiary_account"],
8 "acc_no_name" => $child["beneficiary_account_name"],
9 "bank_code" => $child["beneficiary_bank_code"],
10 "bank_branch" => $child["beneficiary_bank_branch"],
11 "created_by" => 'API',
12 "account_name" => is_null($child["va_name"])?$child["beneficiary_va_name"]:trim($child["va_name"]),
13 "region_code" => (isset($child["beneficiary_region_code"]) && $child["beneficiary_region_code"] != '') ? $child["beneficiary_region_code"] : NULL,
14 "country_code" => (isset($child["beneficiary_country_code"]) && $child["beneficiary_country_code"] != '') ? $child["beneficiary_country_code"] : NULL,
15 "purpose_code" => (isset($child["beneficiary_purpose_code"]) && $child["beneficiary_purpose_code"] != '') ? $child["beneficiary_purpose_code"] : NULL,
16 "beneficiary_email" => (isset($child["beneficiary_email"]) && $child["beneficiary_email"] != '') ? $child["beneficiary_email"] : NULL,
17 "beneficiary_phone" => (isset($child["beneficiary_phone"]) && $child["beneficiary_phone"] != '') ? $child["beneficiary_phone"] : NULL,
18 "ktp_id" => (isset($child["ktp_id"]) && $child["ktp_id"] != '') ? $child["ktp_id"] : NULL,
19 "place_of_birth" => (isset($child["place_of_birth"]) && $child["place_of_birth"] != '') ? $child["place_of_birth"] : NULL,
20 "date_of_birth" => (isset($child["date_of_birth"]) && $child["date_of_birth"] != '') ? $child["date_of_birth"] : NULL,
21 "gender" => (isset($child["gender"]) && $child["gender"] != '') ? $child["gender"] : NULL,
22 "citizenship" => (isset($child["citizenship"]) && $child["citizenship"] != '') ? $child["citizenship"] : NULL,
23 "occupation" => (isset($child["occupation"]) && $child["occupation"] != '') ? $child["occupation"] : NULL,
24 "address" => (isset($child["address"]) && $child["address"] != '') ? $child["address"] : NULL,
25 "is_cashout" => (isset($child["is_cashout"]) && $child["is_cashout"] != '') ? $child["is_cashout"] : NULL
26 );
27 $save = BoiAccWalletTemp::saveChild($data);
28 if($save){
29 $cashout_status = ReffAdapter::getBankCashOutStatus($child["beneficiary_bank_code"]);
30 $child["reg_id"] = $save;
31 if($cashout_status['is_cashout']==1){
32 self::$status = 1;
33 //echo self::$status;
34 BoiAccWalletTemp::confirmation([
35 "va_no" => self::$parent_va,
36 "acc_no" => $child["beneficiary_account"],
37 "source_acc_no_name" => $data["acc_no_name"],
38 "modified_by" => 'API',
39 "status" => self::$status,
40 "reg_id" => $child["reg_id"]
41 ]);
42 }
43 else{
44 $adapter = BoiAdapter::getAdapterSetting($data["bank_code"], self::$parent_va, self::$service);
45 if($adapter){
46 $adapter_list = $adapter;
47 }
48
49 $listErrorReturn = self::listErrorReturn();
50 $request = null;
51 $adapter_code = null;
52 foreach($adapter_list as $key => $item){
53 if(!empty($item["channel_adapter"])){
54 $child["boi_adapter"] = $item["boi_adapter"];
55 $child["channel_code_adapter"] = $item["channel_adapter"];
56 $request = self::request2FaspayDisbCore("inquiry_name", $child);
57 if($request && !isset($request["error"])){
58 $code = $request["response_code"];
59 if(!isset($request["response_code"])) $code = "00";
60 if(isset($request["bank_response_code"])) $code = $request["bank_response_code"];
61 if(isset($request["bank_error_no"]) && !empty($request["bank_error_no"])) $code = $request["bank_error_no"];
62
63 if(!in_array($code, $listErrorReturn[$item["channel_adapter"]], true)){
64 $adapter_code = $item["channel_adapter"];
65 break;
66 }
67 }
68 }
69 }
70
71 if($request && !isset($request["error"])){
72 if(isset($request["bank_response_code"]) && ($request["bank_response_code"] == 1 || $request["bank_response_code"] == '00')){
73 $bank = ReffBankCode::getBankName($data["bank_code"]);
74 $child = self::addResponseParam($child, array("beneficiary_bank_code" => array(
75 "after" => array(
76 "beneficiary_bank_name" => $bank["bank_name"]
77 )
78 )));
79
80 $child["bank_account_number"] = $request["bank_account_number"];
81 $child["bank_account_name"] = trim($request["bank_account_name"]);
82 self::$status = 1;
83 self::$message = $request["bank_response_msg"];
84
85 BoiAccWalletTemp::confirmation([
86 "va_no" => self::$parent_va,
87 "acc_no" => $child["beneficiary_account"],
88 "source_acc_no_name" => $child["bank_account_name"],
89 "modified_by" => 'API',
90 "status" => self::$status,
91 "reg_id" => $child["reg_id"]
92 ]);
93
94 unset($child["reg_id"]);
95 }elseif(isset($request["response_code"]) && $request["response_code"] != "00"){
96 $trx_status = 4;
97 self::$error = TRUE;
98 self::setManualErrorMessage($request["response_desc"]);
99 }else{
100 $trx_status = 4;
101 self::$error = TRUE;
102 self::setManualErrorMessage(($request["bank_error_msg"]) ? $request["bank_error_msg"] : $request["bank_response_msg"]);
103 }
104 }elseif($request && isset($request["error"])){
105 $trx_status = 4;
106 self::$error = TRUE;
107 self::setManualErrorMessage($request["message"]);
108 }else{
109 $trx_status = 4;
110 self::$error = TRUE;
111 self::setManualErrorMessage("Internal Error");
112 self::setManualErrorResponseDesc('99', "Internal Error");
113 }
114
115 $checkFee = VBoiAccFee::getBoiAccFee(self::$parent_va, self::$service, $adapter_code);
116 if($checkFee){
117 if(($checkFee["is_trx_success"] == 1 && self::$status == 1) || $checkFee["is_trx_success"] == 0){
118 $checkFee["trx_acc_no"] = $child["beneficiary_account"];
119 $checkFee["trx_acc_no_name"] = isset($child["bank_account_name"]) ? $child["bank_account_name"] : NULL;
120 $checkFee["trx_no"] = "MPDIS_".self::datetime("YmdHis");
121 $checkFee["bank_response_code"] = ($request["bank_error_no"]) ? $request["bank_error_no"] : $request["bank_response_code"];
122 $checkFee["bank_response_msg"] = ($request["bank_error_msg"]) ? $request["bank_error_msg"] : $request["bank_response_msg"];
123 $validfee = self::processFeeTrx($checkFee, NULL, $adapter_code);
124
125 if (!$validfee){
126 $trx_status = 4;
127 self::$error = TRUE;
128 self::setManualErrorMessage("Insufficient balance");
129 }
130 }
131 }
132 }
133 }else{
134 self::$error = TRUE;
135 }
136 }
137
138 if(isset($trx_status)){
139 BoiAccWalletTemp::confirmation(array(
140 "va_no" => self::$parent_va,
141 "acc_no" => $child["beneficiary_account"],
142 "status" => $trx_status,
143 "source_acc_no_name" => $child["bank_account_name"],
144 "modified_by" => 'API',
145 "reg_id" => $child["reg_id"]
146 ));
147 }
148
149 if(!self::$error){
150 unset($child["temp_status"]);
151 unset($child["boi_adapter"]);
152 unset($child["channel_code_adapter"]);
153 return $child;
154 }
155// else{
156// BoiAccWalletTemp::confirmation(array(
157// "va_no" => self::$parent_va,
158// "acc_no" => $child["beneficiary_account"],
159// "status" => $trx_status,
160// "source_acc_no_name" => $child["bank_account_name"],
161// "modified_by" => 'API',
162// "reg_id" => $child["reg_id"]
163// ));
164// }
165 }
166
167 return false;
168 }