Я на шел кусок как это делается, но что то не работает (
Для этих целей создан специальный XML-интерфейс:
Метод расчёта суммы к получению магазином — CalcOutSumm
Описание метода: Позволяет расчитать сумму к получению, исходя из текущих курсов ROBOKASSA, по сумме, которую заплатит пользователь.
Параметры метода: MerchantLogin — идентификатор магазина (строка), IncCurrLabel — метка валюты (строка), для которой нужно произвести расчёт суммы, IncSum — сумма, которую должен заплатить пользователь.
Формат запроса: merchant.roboxchange.com/WebService/Service.asmx/CalcOutSumm?MerchantLogin=string&IncCurrLabel=string&IncSum=string
if( $this->config->get('robokassa_commission') == 'shop' && !$this->config->get('robokassa_test_mode') ) { $url = 'http://merchant.roboxchange.com/WebService/Service.asmx/CalcOutSumm?MerchantLogin='.$mrh_login. '&IncCurrLabel='.$this->data['in_curr'].'&IncSum='.$out_summ; #echo $url; { } else { } //<OutSum>93.200000</OutSum> { { $out_summ = $ar[1]; } } }
Как бы это всё воткнуть в InstantShop
components/shop/payments/robokassa/robokassa.php
попробовал так (( не выходит.
<?php class ps_robokassa extends shopPaymentSystem{ /* ========================================================================== */ /* ========================================================================== */ /** * Получает всю информацию о заказе в массиве $order * и сохраняет внутри класса * @param array $order */ public function __construct($order, $config){ parent::__construct(); $this->order = $order; $this->config = $config; } /* ========================================================================== */ /* ========================================================================== */ /** * Генерирует и возвращает код формы для отправки в платежную систему */ public function getHtmlForm($order, $currency){ global $_LANG; $currency_kurs = $this->config['currency'][$currency]; $signature = $this->config['sMerchantLogin']['value'] . ':' . $this->order['summ'] . ':' . $this->order['id'] . ':' . $this->config['sMerchantPass1']['value']; include('form.php'); } /* ========================================================================== */ /* ========================================================================== */ private function preRequest($model) { $inCore = cmsCore::getInstance(); $out_summ = $inCore->request('OutSum', 'str'); $out_id = $inCore->request('InvId', 'int'); $out_signature = $inCore->request('SignatureValue', 'str'); $url = 'http://merchant.roboxchange.com/WebService/Service.asmx/CalcOutSumm?MerchantLogin='.$this->config['sMerchantLogin']['value'] . ':' . '&IncCurrLabel='.$currency_kurs.'&IncSum='.$out_summ; #echo $url; { } else { } //<OutSum>93.200000</OutSum> { { $out_summ = $ar[1]; } } // Проверяем, не произошла ли подмена суммы $currency_kurs = $this->config['currency']['RUR']; if ($currency_price != $out_summ) { return "ERR1: НЕВЕРНАЯ СУММА ЗАКАЗА"; } // Проверяем, не произошла ли подмена номера заказа if ($this->order['id'] != $out_id) { return "ERR2: НЕВЕРНЫЙ НОМЕР ЗАКАЗА"; } // Проверяем сигнатуру $signature = $out_summ . ':' . $this->order['id'] . ':' . $this->config['sMerchantPass2']['value']; // Фиксируем оплату заказа $model->setOrderStatus($this->order['id'], $this->order['secret_key'], 2); // Очищаем корзину $model->clearCart($client_sess_id); return "OK{$out_id}"; } /* ========================================================================== */ /* ========================================================================== */ public function processPayment($model) { } /* ========================================================================== */ /* ========================================================================== */ } ?>