You are here

function commerce_robokassa_order_form in Commerce robokassa 7.2

Builds a robokassa form from an order object.

1 call to commerce_robokassa_order_form()
commerce_robokassa_redirect_form in ./commerce_robokassa.module
Payment method callback: redirect form, building a robokassa form.

File

./commerce_robokassa.module, line 458
Drupal Commerce Robokassa payment method.

Code

function commerce_robokassa_order_form($form, &$form_state, $order, $settings) {
  $form['#action'] = commerce_robokassa_server_url($settings['server']);
  $form['#attributes'] = array(
    'name' => 'payment',
    'accept-charset' => 'UTF-8',
  );
  $form['#method'] = 'post';
  $transaction = $order->data['active_transaction'];
  $amount = commerce_currency_amount_to_decimal($transaction->amount, $transaction->currency_code);
  $settings["OutSum"] = $amount;
  $settings["InvId"] = $order->order_id;
  $settings["shp_trx_id"] = $transaction->remote_id;

  // For test transactions.
  if ($settings['server'] == 'test') {
    $settings['IsTest'] = '1';
  }
  $signature_data = array(
    $settings['MrchLogin'],
    $amount,
    $settings["InvId"],
    $settings['pass1'],
    'shp_trx_id=' . $settings["shp_trx_id"],
  );

  // Calculate signature.
  $settings['SignatureValue'] = hash($settings['hash_type'], implode(':', $signature_data));
  $inv_desc_params = array(
    '!orderid' => $order->order_id,
    '!mail' => $order->mail,
  );
  $inv_desc = t('Order ID: !orderid, User mail: !mail', $inv_desc_params);
  $settings['InvDesc'] = truncate_utf8($inv_desc, 100);
  $skiped_settings = array(
    'server',
    'show_robokassa_fee_message',
    'pass1',
    'pass2',
    'hash_type',
    'allowed_currencies',
  );
  if (isset($order->data['commerce_robokassa']['IncCurrLabel'])) {
    $settings['IncCurrLabel'] = $order->data['commerce_robokassa']['IncCurrLabel'];
  }
  foreach ($settings as $name => $value) {
    if (empty($value) || in_array($name, $skiped_settings)) {
      continue;
    }
    $form[$name] = array(
      '#type' => 'hidden',
      '#value' => $value,
    );
  }
  $form['process'] = array(
    '#type' => 'submit',
    '#value' => t('Proceed to robokassa'),
  );
  return $form;
}