if ($order_status == STATUS_INCOMPLETED_ORDER) { $pp_response = array(); $pp_response['order_status'] = 'F'; $pp_response['reason_text'] = __('merchant_response_was_not_received'); $pp_response['transaction_id'] = ''; fn_finish_payment($order_id, $pp_response); } fn_order_placement_routines('route', $order_id, false); } elseif ($mode == 'cancel') { $pp_response['order_status'] = 'N'; $pp_response['reason_text'] = __('text_transaction_cancelled'); fn_finish_payment($order_id, $pp_response, false); fn_order_placement_routines('route', $order_id); } } else { $total = fn_rus_pay_format_price($order_info['total'], $processor_data['processor_params']['currency']); if ($processor_data['processor_params']['commission'] == 'admin') { $url = 'https://auth.robokassa.ru/Merchant/WebService/Service.asmx/CalcOutSumm'; $data = array('MerchantLogin' => $processor_data['processor_params']['merchantid'], 'IncCurrLabel' => $processor_data['processor_params']['payment_method'], 'IncSum' => $total); $total_xml = Http::post($url, $data); $xml = @simplexml_load_string($total_xml); if (isset($xml->Result->Code) && $xml->Result->Code == 0) { $total = $xml->OutSum; } } $crc = md5($processor_data['processor_params']['merchantid'] . ':' . $total . ':' . $order_id . ':' . $processor_data['processor_params']['password1']); $url = $processor_data['processor_params']['mode'] == 'live' ? 'https://merchant.roboxchange.com/Index.aspx' : 'http://test.robokassa.ru/Index.aspx'; $post_data = array('MrchLogin' => $processor_data['processor_params']['merchantid'], 'OutSum' => $total, 'InvId' => $order_id, 'Desc' => $processor_data['processor_params']['details'], 'SignatureValue' => $crc, 'Culture' => CART_LANGUAGE, 'IncCurrLabel' => $processor_data['processor_params']['payment_method']); fn_create_payment_form($url, $post_data, 'Robokassa server'); } exit;
$pp_response['order_status'] = 'P'; $pp_response['reason_text'] = __('approved'); } else { $pp_response['order_status'] = 'F'; $pp_response['reason_text'] = __('control_summ_wrong'); } fn_finish_payment($order_id, $pp_response); die('OK' . $order_id); } elseif ($mode == 'return') { $order_info = fn_get_order_info($order_id); if ($order_info['status'] == 'O') { $pp_response = array(); $pp_response['order_status'] = 'F'; $pp_response['reason_text'] = __('merchant_response_was_not_received'); $pp_response['transaction_id'] = ''; fn_finish_payment($order_id, $pp_response); } fn_order_placement_routines('route', $order_id, false); } elseif ($mode == 'cancel') { $pp_response['order_status'] = 'N'; $pp_response['reason_text'] = __('text_transaction_cancelled'); fn_finish_payment($order_id, $pp_response, false); fn_order_placement_routines('route', $order_id); } } else { $total = fn_rus_pay_format_price($order_info['total'], 'RUB'); $url = 'https://partner.rficb.ru/a1lite/input/'; $post_data = array('key' => $processor_data['processor_params']['rficbkey'], 'cost' => $total, 'order_id' => $order_id, 'name' => 'заказ ' . $order_id); fn_create_payment_form($url, $post_data, 'Rficb server'); } exit;