/** * Entry point when making Smart2Pay API calls * * @param array $api_parameters Parameters passed to API object which contains request details * @param array|false $call_params Additional parameters sent to S2P_SDK\S2P_SDK_API::do_call() * @param array|false $finalize_params Array with parameters sent to * * @return array|false Returns false on error (error available with S2P_SDK\S2P_SDK_Module::st_get_error()) * * @see S2P_SDK\S2P_SDK_Module::st_get_error() * @see S2P_SDK\S2P_SDK_API::do_call() */ public static function quick_call($api_parameters, $call_params = false, $finalize_params = false) { self::st_reset_error(); if (empty($api_parameters) or !is_array($api_parameters)) { self::st_set_error(self::ERR_API_QUICK_CALL, self::s2p_t('Invalid API parameters.')); return false; } if (empty($finalize_params) or !is_array($finalize_params)) { $finalize_params = array(); } if (!isset($finalize_params['redirect_now'])) { $finalize_params['redirect_now'] = true; } else { $finalize_params['redirect_now'] = !empty($finalize_params['redirect_now']) ? true : false; } $return_arr = array(); // Time of call (in microseconds) $return_arr['call_microseconds'] = 0; // Result of API call $return_arr['call_result'] = false; // API call details (request + response) $return_arr['call_details'] = false; // In case we want to finish transaction in same call we pass $finalize_params['redirect_now'] to true and SDK // will try to also make the redirect automatically (if headers not sent already) $return_arr['finalize_result'] = S2P_SDK_Method::default_finalize_result(); try { /** @var S2P_SDK_API $api */ if (!($api = self::get_instance('S2P_SDK_API', $api_parameters))) { if (!self::st_has_error()) { self::st_set_error(self::ERR_API_QUICK_CALL, self::s2p_t('Failed initializing API object.')); } return false; } if (!($return_arr['call_details'] = $api->do_call($call_params))) { if (!$api->has_error()) { self::st_set_error(self::ERR_API_QUICK_CALL, self::s2p_t('Failed initializing API object.')); } else { self::st_copy_error($api); } return false; } if (!($return_arr['call_result'] = $api->get_result())) { if (!$api->has_error()) { self::st_set_error(self::ERR_API_QUICK_CALL, self::s2p_t('Failed obtaining API call result.')); } else { self::st_copy_error($api); } return false; } // You should call $api->do_finalize() before sending headers if you want to be redirected to payment page... if (!($return_arr['finalize_result'] = $api->do_finalize($finalize_params))) { if (!$api->has_error()) { self::st_set_error(self::ERR_API_QUICK_CALL, self::s2p_t('Failed finalizing transaction after API call.')); } else { self::st_copy_error($api); } return false; } $return_arr['call_microseconds'] = $api->get_call_time(); } catch (\Exception $ex) { self::st_set_error(self::ERR_API_QUICK_CALL, self::s2p_t('Call error: [%s].', $ex->getMessage())); return false; } return $return_arr; }