public function renderCheckoutForm(Payment $payment, Order $order, $return = false) { $settings = $payment->getPaymentSystemSettings(); $mrhLogin = $settings['login']; $mrhPass1 = $settings['password1']; $culture = $settings['language']; $invId = $order->id; $invDesc = Yii::t('RobokassaModule.robokassa', 'Payment order #{id} on "{site}" website', ['{id}' => $order->id, '{site}' => Yii::app()->getModule('yupe')->siteName]); $outSum = Yii::app()->money->convert($order->getTotalPrice(), $payment->currency_id); $crc = md5("{$mrhLogin}:{$outSum}:{$invId}:{$mrhPass1}"); $form = CHtml::form($settings['testmode'] ? "http://test.robokassa.ru/Index.aspx" : "https://merchant.roboxchange.com/Index.aspx"); $form .= CHtml::hiddenField('MrchLogin', $mrhLogin); $form .= CHtml::hiddenField('OutSum', $outSum); $form .= CHtml::hiddenField('InvId', $invId); $form .= CHtml::hiddenField('Desc', $invDesc); $form .= CHtml::hiddenField('SignatureValue', $crc); $form .= CHtml::hiddenField('Culture', $culture); $form .= CHtml::submitButton(Yii::t('RobokassaModule.robokassa', 'Pay')); $form .= CHtml::endForm(); if ($return) { return $form; } else { echo $form; } }
/** * Distribute Items. * * @param Order $order * @param float $maxPricePerPackage * * @return void * * @throws \UnexpectedValueException */ public function distributeItems(Order $order, $maxPricePerPackage) { // Calculate initial number of packages $numPackages = ceil($order->getTotalPrice() / $maxPricePerPackage); if ($numPackages > count($order->getItems())) { throw new \UnexpectedValueException('Some items will not fit into packages.'); } $this->distributeItemsIntoPackages($order, $maxPricePerPackage, $numPackages); }
/** * @param Payment $payment * @param Order $order * @param bool|false $return * @return mixed|string */ public function renderCheckoutForm(Payment $payment, Order $order, $return = false) { return Yii::app()->getController()->renderPartial('application.modules.robokassa.views.form', ['id' => $order->id, 'price' => Yii::app()->money->convert($order->getTotalPrice(), $payment->currency_id), 'settings' => $payment->getPaymentSystemSettings()], $return); }
} else { $products = array(); } $aprtData = array('pageType' => \Actionpay\APRT::PAGETYPE_PURCHASE, 'basketProducts' => array()); foreach ($products as $product) { $aprtData['basketProducts'][] = array('id' => $product->id, 'name' => $product->name, 'price' => $product->price, 'quantity' => $basket[$product->id]); } // отображение формы заказа return $app->render('page_order', array('title' => 'Оформление заказа', 'aprtData' => $aprtData)); }); /** * http://demoshop.actionpay.ru/thankyou * Страница "спасибо за заказ" */ $app->page('/thankyou', function (Order $order) use($app) { $aprtData = array('pageType' => \Actionpay\APRT::PAGETYPE_THANKYOU, 'purchasedProducts' => array(), 'orderInfo' => array('id' => $order->id, 'totalPrice' => $order->getTotalPrice())); foreach ($order->getOrderedProducts() as $orderProduct) { $aprtData['purchasedProducts'][] = array('id' => $orderProduct->getProduct()->id, 'name' => $orderProduct->getProduct()->name, 'price' => $orderProduct->getProduct()->price, 'quantity' => $orderProduct->count); } return $app->render('page_thankyou', array('title' => 'Спасибо за заказ', 'order' => $order, 'aprtData' => $aprtData)); }); /** * http://demoshop.actionpay.ru/admin/order?order=<ORDER_ID> * Страница просмотра заказа для сотрудника магазина */ $app->page('/admin/order', function (Order $order, $status) use($app) { $status = (int) $status; // если запрошено изменение статуса заказа if (array_key_exists($status, Order::$statusList)) { $order->status = $status; $order->save();