/** * Transform array keys from external_name to name and vice-versa. * * @param array $scope_arr Array to transform * * @return array|bool|mixed */ public function transfrom_keys_to_internal_names($scope_arr, $parsing_params = false) { if (!$this->_init_variable()) { return false; } if (empty($parsing_params) or !is_array($parsing_params)) { $parsing_params = array(); } $parsing_params['check_external_names'] = true; if (!($return_arr = $this->_var->transform_keys($scope_arr, null, $parsing_params)) or !is_array($return_arr)) { $return_arr = false; } if (!empty($this->_merged_structures) and is_array($this->_merged_structures)) { if (empty($return_arr)) { $return_arr = array(); } /** * @var string $structure_name * @var S2P_SDK_Scope_Structure $structure_obj */ foreach ($this->_merged_structures as $structure_name => $structure_obj) { if (!($structure_result_arr = $structure_obj->transfrom_keys_to_internal_names($scope_arr, $parsing_params)) or !is_array($structure_result_arr)) { continue; } $return_arr = array_merge($return_arr, $structure_result_arr); } } return $return_arr; }
/** * This method should be overridden by methods which have actions to be taken after we receive response from server * * @param array $call_result * @param array $params * * @return array Returns array with finalize action details */ public function finalize($call_result, $params) { $return_arr = self::default_finalize_result(); if (!($call_result = S2P_SDK_Rest_API::validate_call_result($call_result)) or empty($call_result['response']['func'])) { return $return_arr; } switch ($call_result['response']['func']) { case self::FUNC_METHOD_DETAILS: if (!empty($call_result['response']['response_array']['method'])) { $return_arr['custom_validators'] = array(); $return_arr['custom_validators']['payment'] = array(); $return_arr['custom_validators']['recurrent'] = array(); $pay_request_obj = new S2P_SDK_Structure_Payment_Request(); $variable_obj = new S2P_SDK_Scope_Variable($pay_request_obj->get_definition()); $payment_request_arr = $variable_obj->nullify(null, array('check_external_names' => false, 'nullify_full_object' => true)); $we_have_validators = false; if (!empty($call_result['response']['response_array']['method']['validatorspayin']) and is_array($call_result['response']['response_array']['method']['validatorspayin'])) { $custom_validators = array(); foreach ($call_result['response']['response_array']['method']['validatorspayin'] as $validator_arr) { if ($custom_validator = self::extract_method_validator($validator_arr, $payment_request_arr)) { if (!($transform_result = $variable_obj->transform_keys(array('Payment' => $custom_validator['sources']), null, array('check_external_names' => true))) or !is_array($transform_result) or empty($transform_result['payment']) or !is_array($transform_result['payment'])) { continue; } $custom_validator['sources'] = $transform_result['payment']; $custom_validators[] = $custom_validator; } } if (!empty($custom_validators)) { $return_arr['custom_validators']['payment'] = $custom_validators; $we_have_validators = true; } } if (!empty($call_result['response']['response_array']['method']['validatorsrecurrent']) and is_array($call_result['response']['response_array']['method']['validatorsrecurrent'])) { $custom_validators = array(); foreach ($call_result['response']['response_array']['method']['validatorsrecurrent'] as $validator_arr) { if ($custom_validator = self::extract_method_validator($validator_arr, $payment_request_arr)) { if (!($transform_result = $variable_obj->transform_keys(array('Payment' => $custom_validator['sources']), null, array('check_external_names' => true))) or !is_array($transform_result) or empty($transform_result['payment']) or !is_array($transform_result['payment'])) { continue; } $custom_validator['sources'] = $transform_result['payment']; $custom_validators[] = $custom_validator; } } if (!empty($custom_validators)) { $return_arr['custom_validators']['recurrent'] = $custom_validators; $we_have_validators = true; } } if (empty($we_have_validators)) { $return_arr['custom_validators'] = false; } } break; } return $return_arr; }