payment_type!='authorize' || !$method->enabled){
continue;
}
if(!empty($method->payment_zone_namekey)){
$zoneClass=hikashop_get('class.zone');
$zones = $zoneClass->getOrderZones($order);
if(!in_array($method->payment_zone_namekey,$zones)){
return true;
}
}
$currencyClass = hikashop_get('class.currency');
$null=null;
$currency_id = intval(@$order->total->prices[0]->price_currency_id);
$currency = $currencyClass->getCurrencies($currency_id,$null);
if(!empty($currency) && @$currency[$currency_id]->currency_code != 'USD'){
return true;
}
$this->needCC($method);
$usable_methods[$method->ordering]=$method;
}
}
return true;
}
function needCC(&$method) {
if(@$method->payment_params->api=='aim'){
$method->ask_cc=true;
if($method->payment_params->ask_ccv){
$method->ask_ccv = true;
}
return true;
}
return false;
}
function onPaymentSave(&$cart,&$rates,&$payment_id){
$usable = array();
$this->onPaymentDisplay($cart,$rates,$usable);
$payment_id = (int) $payment_id;
foreach($usable as $usable_method){
if($usable_method->payment_id==$payment_id){
return $usable_method;
}
}
return false;
}
function onBeforeOrderCreate(&$order,&$do){
$app =& JFactory::getApplication();
if($app->isAdmin()){
return true;
}
if(empty($order->order_payment_method) || $order->order_payment_method != 'authorize'){
return true;
}
$db =& JFactory::getDBO();
$query = 'SELECT * FROM '.hikashop_table('payment').' WHERE payment_type='.$db->Quote($order->order_payment_method);
$db->setQuery($query);
$paymentData = $db->loadObjectList('payment_id');
$pluginsClass = hikashop_get('class.plugins');
$pluginsClass->params($paymentData,'payment');
$method =& $paymentData[$order->order_payment_id];
if(@$method->payment_params->api!='aim'){
return true;
}
if(!function_exists('curl_init')){
$app->enqueueMessage('The Authorize.net payment plugin in AIM mode needs the CURL library installed but it seems that it is not available on your server. Please contact your web hosting to set it up.','error');
return false;
}
$vars = $this->_loadStandardVars($order,$method);
$vars["x_delim_data"]= "TRUE";
$vars["x_delim_char"] = "|";
$this->cc_number = $app->getUserState( HIKASHOP_COMPONENT.'.cc_number');
if(!empty($this->cc_number)){
$this->cc_number = base64_decode($this->cc_number);
}
$this->cc_month = $app->getUserState( HIKASHOP_COMPONENT.'.cc_month');
if(!empty($this->cc_month)){
$this->cc_month = base64_decode($this->cc_month);
}
$this->cc_year = $app->getUserState( HIKASHOP_COMPONENT.'.cc_year');
if(!empty($this->cc_year)){
$this->cc_year = base64_decode($this->cc_year);
}
$vars["x_card_num"] = $this->cc_number;
if($method->payment_params->ask_ccv){
$this->cc_CCV = $app->getUserState( HIKASHOP_COMPONENT.'.cc_CCV');
if(!empty($this->cc_CCV)){
$this->cc_CCV = base64_decode($this->cc_CCV);
}
$vars["x_card_code"] = $this->cc_CCV;
}
$vars["x_exp_date"] = $this->cc_month.$this->cc_year;
$vars["x_tran_key"] = $method->payment_params->transaction_key;
$post_string = "";
foreach( $vars as $key => $value ){
if(is_array($value)){
foreach($value as $v){
$post_string .= "$key=" . urlencode( $v ) . "&";
}
}else{
$post_string .= "$key=" . urlencode( $value ) . "&";
}
}
$post_string = rtrim( $post_string, "& " );
$request = curl_init($method->payment_params->url);
curl_setopt($request, CURLOPT_HEADER, 0);
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($request, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
$post_response = curl_exec($request);
if(empty($post_response)){
$app->enqueueMessage('The connection to the payment plateform did not succeed. It is often caused by the hosting company blocking external connections so you should contact him for further guidance. The cURL error message was: '.curl_error($request),'error');
return false;
}
curl_close ($request);
$response_array = explode("|",$post_response);
$response_code = (int)@$response_array[0];
$response_subcode = @$response_array[1];
$response_reason_code = @$response_array[2];
$response_reason_text = @$response_array[3];
$this->response_code = $response_code;
switch($response_code) {
case 2:
$app->enqueueMessage(JText::_('TRANSACTION_DECLINED_WRONG_CARD'));
$app->setUserState( HIKASHOP_COMPONENT.'.cc_number','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_month','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_year','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_CCV','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_owner','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_valid',0);
$do = false;
break;
case 3:
default:
$app->enqueueMessage(JText::sprintf('TRANSACTION_PROCESSING_ERROR',$response_reason_code.' '.$response_reason_text));
$app->setUserState( HIKASHOP_COMPONENT.'.cc_number','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_month','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_year','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_CCV','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_owner','');
$app->setUserState( HIKASHOP_COMPONENT.'.cc_valid',0);
$do = false;
break;
case 1:
$order->history->history_reason=JText::sprintf('AUTOMATIC_PAYMENT_NOTIFICATION');
$order->history->history_notified=0;
$order->history->history_amount= round($order->cart->full_total->prices[0]->price_value_with_tax,2).'USD';
$order->history->history_payment_id = $order->order_payment_id;
$order->history->history_payment_method =$order->order_payment_method;
$order->history->history_data = '';
$order->history->history_type = 'payment';
$order->order_status = $method->payment_params->verified_status;
break;
case 4:
$order->history->history_reason=JText::sprintf('AUTOMATIC_PAYMENT_NOTIFICATION');
$order->history->history_notified=0;
$order->history->history_amount= round($order->cart->full_total->prices[0]->price_value_with_tax,2).'USD';
$order->history->history_payment_id = $order->order_payment_id;
$order->history->history_payment_method =$order->order_payment_method;
$order->history->history_data = '';
$order->history->history_type = 'payment';
$order->order_status = $element->payment_params->pending_status;
break;
}
return true;
}
function onAfterOrderCreate(&$order,&$send_email){
$app =& JFactory::getApplication();
if($app->isAdmin()){
return true;
}
if($order->order_payment_method!='authorize'){
return true;
}
$db =& JFactory::getDBO();
$query = 'SELECT * FROM '.hikashop_table('payment').' WHERE payment_type='.$db->Quote($order->order_payment_method);
$db->setQuery($query);
$paymentData = $db->loadObjectList('payment_id');
$pluginsClass = hikashop_get('class.plugins');
$pluginsClass->params($paymentData,'payment');
$method =& $paymentData[$order->order_payment_id];
if(@$method->payment_params->api!='aim'){
return true;
}
if(!empty($this->response_code)){
switch($this->response_code){
case 1:
$mailer =& JFactory::getMailer();
$config =& hikashop_config();
$sender = array(
$config->get('from_email'),
$config->get('from_name') );
$mailer->setSender($sender);
$mailer->addRecipient(explode(',',$config->get('payment_notification_email')));
$url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=listing';
$order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE',$order->order_number,HIKASHOP_LIVE);
$order_text .= "\r\n".str_replace('
',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
$mailer->setSubject(JText::sprintf('PAYMENT_NOTIFICATION','Authorize.net','Accepted'));
$body = str_replace('
',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','Authorize.net','Accepted')).' '.JText::sprintf('ORDER_STATUS_CHANGED',$order->order_status)."\r\n\r\n".$order_text;
$mailer->setBody($body);
$mailer->Send();
break;
case 4:
$mailer =& JFactory::getMailer();
$config =& hikashop_config();
$sender = array(
$config->get('from_email'),
$config->get('from_name') );
$mailer->setSender($sender);
$mailer->addRecipient(explode(',',$config->get('payment_notification_email')));
$url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=listing';
$order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE',$order->order_number,HIKASHOP_LIVE);
$order_text .= "\r\n".str_replace('
',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
$mailer->setSubject(JText::sprintf('PAYMENT_NOTIFICATION','Authorize.net','Pending'));
$body = str_replace('
',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','Authorize.net','Pending')).' '.JText::sprintf('ORDER_STATUS_CHANGED',$order->order_status)."\r\n\r\n".$order_text;
$mailer->setBody($body);
$mailer->Send();
break;
}
}
}
function _loadStandardVars(&$order,&$method){
$tax_total = '';
$discount_total = '';
$currencyClass = hikashop_get('class.currency');
$currencies=null;
$currencies = $currencyClass->getCurrencies($order->order_currency_id,$currencies);
$currency=$currencies[$order->order_currency_id];
$user = hikashop_loadUser(true);
$debug = $method->payment_params->debug;
$vars = Array(
"x_amount" => round($order->cart->full_total->prices[0]->price_value_with_tax,(int)$currency->currency_locale['int_frac_digits']),
"x_version" => '3.1',
"x_test_request" => $debug,
);
$vars["x_relay_response"] = 'FALSE';
$vars["x_customer_ip"] = $order->order_ip;
if(!isset($this->element->payment_params->capture))$this->element->payment_params->capture=1;
if($this->element->payment_params->capture){
/* PUTTING BOTH OPTIONS AT AUTHORIZATION ONLY - FIRST WAS FORMERLY 'AUTH_CAPTURE' */
$vars["x_type"] = 'AUTH_ONLY';
}else{
$vars["x_type"] = 'AUTH_ONLY';
}
$vars["x_login"] = $method->payment_params->login_id;
if(!empty($order->order_id)){
$vars["x_invoice_num"] = $order->order_id;
$vars["x_po_num"] = $vars["x_invoice_num"];
}
$vars["x_email"]=$user->user_email;
$app =& JFactory::getApplication();
$cart = hikashop_get('class.cart');
$address=$app->getUserState( HIKASHOP_COMPONENT.'.billing_address');
if(!empty($address)){
$cart->loadAddress($order->cart,$address,'object','billing');
$vars["x_first_name"]=substr(@$order->cart->billing_address->address_firstname,0,50);
$vars["x_last_name"]=substr(@$order->cart->billing_address->address_lastname,0,50);
$vars["x_address"]=substr(@$order->cart->billing_address->address_street,0,60);
$vars["x_company"]=substr(@$order->cart->billing_address->address_company,0,50);
$vars["x_country"]=substr(@$order->cart->billing_address->address_country->zone_name_english,0,60);
$vars["x_zip"]=substr(@$order->cart->billing_address->address_post_code,0,20);
$vars["x_city"]=substr(@$order->cart->billing_address->address_city,0,40);
$vars["x_state"]=substr(@$order->cart->billing_address->address_state->zone_name_english,0,40);
$vars["x_phone"]=substr(@$order->cart->billing_address->address_telephone,0,25);
}
$address=$app->getUserState( HIKASHOP_COMPONENT.'.shipping_address');
if(!empty($address)){
$cart->loadAddress($order->cart,$address,'object','shipping');
$vars["x_ship_to_first_name"]=substr(@$order->cart->shipping_address->address_firstname,0,50);
$vars["x_ship_to_last_name"]=substr(@$order->cart->shipping_address->address_lastname,0,50);
$vars["x_ship_to_address"]=substr(@$order->cart->shipping_address->address_street,0,60);
$vars["x_ship_to_company"]=substr(@$order->cart->shipping_address->address_company,0,50);
$vars["x_ship_to_country"]=substr(@$order->cart->shipping_address->address_country->zone_name_english,0,60);
$vars["x_ship_to_zip"]=substr(@$order->cart->shipping_address->address_post_code,0,20);
$vars["x_ship_to_city"]=substr(@$order->cart->shipping_address->address_city,0,40);
$vars["x_ship_to_state"]=substr(@$order->cart->shipping_address->address_state->zone_name_english,0,40);
}
$i = 1;
$tax = 0;
$vars["x_line_item"]=array();
foreach($order->cart->products as $product){
if(bccomp($product->order_product_tax,0,5)){
$tax+=$product->order_product_quantity*round($product->order_product_tax,(int)$currency->currency_locale['int_frac_digits']);
$has_tax = 'TRUE';
}else{
$has_tax = 'FALSE';
}
$vars["x_line_item"][]=substr($product->order_product_code,0,30).'<|>'.substr(strip_tags($product->order_product_name),0,30).'<|><|>'.$product->order_product_quantity.'<|>'.round($product->order_product_price,(int)$currency->currency_locale['int_frac_digits']).'<|>'.$has_tax;
}
if(!empty($order->cart->coupon) && @$order->cart->coupon->discount_value>0){
$vars["x_line_item"][]='coupon<|>'.JText::_('HIKASHOP_COUPON').'<|><|>1<|>'.round($order->cart->coupon->discount_value,(int)$currency->currency_locale['int_frac_digits']).'<|>N';
}
if(!empty($order->order_payment_price)){
$vars["x_line_item"][]='payment<|>'.JText::_('HIKASHOP_PAYMENT').'<|><|>1<|>'.round($order->order_payment_price,(int)$currency->currency_locale['int_frac_digits']).'<|>N';
}
if(bccomp($tax,0,5)){
$vars['x_tax']=$tax;
$vars['x_tax_exempt']='FALSE';
}else{
$vars['x_tax_exempt']='TRUE';
}
if(!empty($order->order_shipping_price)){
$vars["x_freight"]=round($order->order_shipping_price,(int)$currency->currency_locale['int_frac_digits']);
}
return $vars;
}
function onAfterOrderConfirm(&$order,&$methods,$method_id){
$method =& $methods[$method_id];
if(@$method->payment_params->api=='aim'){
$viewType='_thankyou';
global $Itemid;
$url_itemid='';
if(!empty($Itemid)){
$url_itemid='&Itemid='.$Itemid;
}
$return_url = HIKASHOP_LIVE.'index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id='.$order->order_id.$url_itemid;
$this->removeCart = true;
}else{
$method->payment_params->iframe = 1;
$vars = $this->_loadStandardVars($order,$method);
$viewType = '_end';
$vars["x_show_form"] = 'PAYMENT_FORM';
if(@$method->payment_params->notification){
$vars["x_relay_response"] = 'TRUE';
$lang = &JFactory::getLanguage();
$locale=strtolower(substr($lang->get('tag'),0,2));
global $Itemid;
$url_itemid='';
if(!empty($Itemid)){
$url_itemid='&Itemid='.$Itemid;
}
$vars["x_relay_url"] = HIKASHOP_LIVE.'index.php?option=com_hikashop&ctrl=checkout&task=notify¬if_payment=authorize&tmpl=component&lang='.$locale.$url_itemid;
}
$vars["x_fp_sequence"] = $vars["x_invoice_num"];
$vars["x_fp_timestamp"] = time();
$vars["x_fp_hash"] = hash_hmac("md5", $vars["x_login"] . "^" . $vars["x_fp_sequence"] . "^" . $vars["x_fp_timestamp"] . "^" . $vars["x_amount"] . "^", $method->payment_params->transaction_key);
if(!empty($method->payment_params->x_logo_url)){
$vars['x_logo_url']=$method->payment_params->x_logo_url;
}
}
JHTML::_('behavior.mootools');
$app =& JFactory::getApplication();
$name = $method->payment_type.$viewType.'.php';
$path = JPATH_THEMES.DS.$app->getTemplate().DS.'hikashoppayment'.DS.$name;
if(!file_exists($path)){
if(version_compare(JVERSION,'1.6','<')){
$path = JPATH_PLUGINS .DS.'hikashoppayment'.DS.$name;
}else{
$path = JPATH_PLUGINS .DS.'hikashoppayment'.DS.$method->payment_type.DS.$name;
}
if(!file_exists($path)){
return true;
}
}
require($path);
return true;
}
function onPaymentNotification(&$statuses){
$pluginsClass = hikashop_get('class.plugins');
$elements = $pluginsClass->getMethods('payment','authorize');
if(empty($elements)) return JText::_('ORDER_VALID_AFTER_PAYMENT');
$element = reset($elements);
global $Itemid;
$url_itemid='';
if(!empty($Itemid)){
$url_itemid='&Itemid='.$Itemid;
}
$return_url = HIKASHOP_LIVE.'index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id='.@$order->order_id.$url_itemid;
$vars = array();
$data = array();
$filter = & JFilterInput::getInstance();
foreach($_REQUEST as $key => $value){
$key = $filter->clean($key);
$value = JRequest::getString($key);
$vars[$key]=$value;
}
$app =& JFactory::getApplication();
if($element->payment_params->debug){
echo print_r($vars,true)."\n\n\n";
}
if(@$element->payment_params->api=='dpm' && @$_GET['iframe']){
$vars = unserialize(base64_decode($vars['iframe']));
$method =& $element;
JHTML::_('behavior.mootools');
$name = $element->payment_type.'_end.php';
}else{
$name = $element->payment_type.'_thankyou.php';
}
$path = JPATH_THEMES.DS.$app->getTemplate().DS.'hikashoppayment'.DS.$name;
if(!file_exists($path)){
if(version_compare(JVERSION,'1.6','<')){
$path = JPATH_PLUGINS .DS.'hikashoppayment'.DS.$name;
}else{
$path = JPATH_PLUGINS .DS.'hikashoppayment'.DS.$element->payment_type.DS.$name;
}
if(!file_exists($path)){
}
}
ob_start();
require($path);
$msg = ob_get_clean();
if(@$element->payment_params->api=='dpm'&&@$_GET['iframe']){
echo $msg;
ob_start();
return;
}
if(!$element->payment_params->notification){
echo 'Notification not activated for authorize.net';
return $msg;
}
$vars['x_MD5_Hash_calculated']=$this->md5Hash(@$element->payment_params->md5_hash,@$element->payment_params->login_id,@$vars['x_trans_id'],@$vars['x_amount']);
if($element->payment_params->debug){
echo print_r($vars,true)."\n\n\n";
}
$orderClass = hikashop_get('class.order');
$dbOrder = $orderClass->get((int)@$vars['x_po_num']);
$order = null;
$order->order_id = @$dbOrder->order_id;
if(!empty($dbOrder)){
$order->old_status->order_status=$dbOrder->order_status;
$url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=edit&order_id='.$order->order_id;
$order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE',$dbOrder->order_number,HIKASHOP_LIVE);
$order_text .= "\r\n".str_replace('
',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
}else{
echo "Could not load any order for your notification ".@$vars['x_po_num'];
return $msg;
}
if($element->payment_params->debug){
echo print_r($dbOrder,true)."\n\n\n";
}
$mailer =& JFactory::getMailer();
$config =& hikashop_config();
$sender = array(
$config->get('from_email'),
$config->get('from_name') );
$mailer->setSender($sender);
$mailer->addRecipient(explode(',',$config->get('payment_notification_email')));
if (@$vars['x_MD5_Hash']!=$vars['x_MD5_Hash_calculated']) {
$mailer->setSubject(JText::sprintf('NOTIFICATION_REFUSED_FOR_THE_ORDER','Authorize.net').'invalid response');
$body = JText::sprintf("Hello,\r\n An Authorize.net notification was refused because the response from the Authorize.net server was invalid. The hash received was ".$vars['x_MD5_Hash']." while the calculated hash was ".$vars['x_MD5_Hash_calculated'].". Please cehck that you're set the same md5 hash key in Authorize.net and the plugin")."\r\n\r\n".$order_text;
$mailer->setBody($body);
$mailer->Send();
if($element->payment_params->debug){
echo 'invalid md5'."\n\n\n";
}
return $msg;
}
$vars['x_response_code']=(int)@$vars['x_response_code'];
if(!in_array($vars['x_response_code'],array(1,4))) {
if($vars['x_response_code']==2){
$vars['payment_status']='Declined';
}else{
$vars['payment_status']='Error';
}
$body = str_replace('
',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','Authorize.net',$vars['payment_status'])).' '.JText::_('STATUS_NOT_CHANGED')."\r\n\r\n".$order_text;
$mailer->setSubject(JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER','Authorize.net',$vars['payment_status'],$dbOrder->order_number));
$mailer->setBody($body);
$mailer->Send();
if($element->payment_params->debug){
echo 'payment with code '.@$vars['x_response_code'].' : '.@$vars['x_response_reason_text']."\n\n\n";
}
return $msg;
}
$order->history->history_reason=JText::sprintf('AUTOMATIC_PAYMENT_NOTIFICATION');
$order->history->history_notified=0;
$order->history->history_amount=@$vars['x_amount'].'USD';
$order->history->history_payment_id = $element->payment_id;
$order->history->history_payment_method =$element->payment_type;
$order->history->history_data = ob_get_clean();
$order->history->history_type = 'payment';
$price_check = round($dbOrder->order_full_price, 2 );
if($price_check != @$vars['x_amount']){
$order->order_status = $element->payment_params->invalid_status;
$orderClass->save($order);
$mailer->setSubject(JText::sprintf('NOTIFICATION_REFUSED_FOR_THE_ORDER','Authorize.net').JText::_('INVALID_AMOUNT'));
$body = str_replace('
',"\r\n",JText::sprintf('AMOUNT_RECEIVED_DIFFERENT_FROM_ORDER','Authorize.net',$order->history->history_amount,$price_check.'USD'))."\r\n\r\n".$order_text;
$mailer->setBody($body);
$mailer->Send();
return $msg;
}
if($vars['x_response_code']==1){
$order->order_status = $element->payment_params->verified_status;
$vars['payment_status']='Accepted';
}else{
$order->order_status = $element->payment_params->pending_status;
$order_text =@$vars['x_response_reason_text']."\r\n\r\n".$order_text;
$vars['payment_status']='Pending';
}
$config =& hikashop_config();
if($config->get('order_confirmed_status','confirmed')==$order->order_status){
$order->history->history_notified=1;
}
$mailer->setSubject(JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER','Authorize.net',$vars['payment_status'],$dbOrder->order_number));
$body = str_replace('
',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','Authorize.net',$vars['payment_status'])).' '.JText::sprintf('ORDER_STATUS_CHANGED',$statuses[$order->order_status])."\r\n\r\n".$order_text;
$mailer->setBody($body);
$mailer->Send();
$orderClass->save($order);
return $msg;
}
function onPaymentConfiguration(&$element){
$subtask = JRequest::getCmd('subtask','');
$this->authorize = JRequest::getCmd('name','authorize');
if(empty($element)){
$element = null;
$element->payment_name='Authorize';
$element->payment_description='You can pay by credit card using this payment method';
$element->payment_images='MasterCard,VISA,Credit_card,American_Express';
$element->payment_type=$this->authorize;
$element->payment_params=null;
$element->payment_params->url='https://secure.authorize.net/gateway/transact.dll';
$element->payment_params->api='sim';
$element->payment_params->invalid_status='cancelled';
$element->payment_params->pending_status='created';
$element->payment_params->verified_status='confirmed';
$element = array($element);
}
$bar = & JToolBar::getInstance('toolbar');
JToolBarHelper::save();
JToolBarHelper::apply();
JToolBarHelper::cancel();
JToolBarHelper::divider();
$bar->appendButton( 'Pophelp','payment-authorize-form');
hikashop_setTitle('Authorize','plugin','plugins&plugin_type=payment&task=edit&name='.$this->authorize);
$app =& JFactory::getApplication();
$app->setUserState( HIKASHOP_COMPONENT.'.payment_plugin_type', $this->authorize);
$this->address = hikashop_get('type.address');
$this->category = hikashop_get('type.categorysub');
$this->category->type = 'status';
}
function onPaymentConfigurationSave(&$element){
return true;
}
function md5Hash($md5Hash, $login_id, $trans_id, $amount) {
if ($amount == '' || $amount == '0'){
$amount = '0.00';
}
return strtoupper(md5($md5Hash.$login_id.$trans_id.$amount));
}
}
if(!function_exists('hash_hmac')){
function hash_hmac($algo, $data, $key, $raw_output = false){
$algo = strtolower($algo);
$pack = 'H'.strlen($algo('test'));
$size = 64;
$opad = str_repeat(chr(0x5C), $size);
$ipad = str_repeat(chr(0x36), $size);
if (strlen($key) > $size) {
$key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
} else {
$key = str_pad($key, $size, chr(0x00));
}
for ($i = 0; $i < strlen($key) - 1; $i++) {
$opad[$i] = $opad[$i] ^ $key[$i];
$ipad[$i] = $ipad[$i] ^ $key[$i];
}
$output = $algo($opad.pack($pack, $algo($ipad.$data)));
return ($raw_output) ? pack($pack, $output) : $output;
}
}