You are here

function commerce_sermepa_order_form in Commerce sermepa 7

Build the order form for the sermepa.

Parameters

commerce_order $order: The fully loaded order being paid for.

array $settings: An array of the current settings.

Return value

array Form elements that should be submitted to the redirected payment service.

1 call to commerce_sermepa_order_form()
commerce_sermepa_redirect_form in ./commerce_sermepa.module
Payment method callback: redirect form to sermepa gateway.

File

./commerce_sermepa.module, line 386
Provides a payment method for Drupal Commerce using Sermepa/Redsys gateway.

Code

function commerce_sermepa_order_form($form, &$form_state, $order, $settings) {

  // Create a sermepa instance.
  if (!($gateway = commerce_sermepa_library_initialize($settings))) {
    return FALSE;
  }

  // Prepare transaction data.
  // Set Authorization trasaction type.
  // See \CommerceRedsys\Payment\Sermepa::getAvailableTransactionTypes() for full list.
  $gateway
    ->setTransactionType('0')
    ->setOrder(substr(date('ymdHis') . $order->order_id, -12, 12))
    ->setAmount($order->commerce_order_total[LANGUAGE_NONE][0]['amount'])
    ->setCurrency($settings['currency'])
    ->setMerchantURL($settings['merchant_url'])
    ->setUrlOK($settings['return'])
    ->setUrlKO($settings['cancel_return'])
    ->setConsumerLanguage($settings['Ds_Merchant_ConsumerLanguage'])
    ->setMerchantData($order->order_id);

  // Set payment methods.
  if (!empty($settings['Ds_Merchant_PayMethods'])) {
    $gateway
      ->setPaymentMethod(implode('', $settings['Ds_Merchant_PayMethods']));
  }

  // Allow user to make changes in the gateway configuration data.
  rules_invoke_all('commerce_sermepa_gateway', $gateway, $order);
  $form['#action'] = $gateway
    ->getEnvironment();

  // Force rebuild the form.
  $form_sate['rebuild'] = TRUE;

  // Create hidden fields.
  $parameters = $gateway
    ->composeMerchantParameters();
  if ($parameters) {
    $form['Ds_SignatureVersion'] = array(
      '#type' => 'hidden',
      '#value' => $gateway
        ->getSignatureVersion(),
    );
    $form['Ds_MerchantParameters'] = array(
      '#type' => 'hidden',
      '#value' => $parameters,
    );
    $form['Ds_Signature'] = array(
      '#type' => 'hidden',
      '#value' => $gateway
        ->composeMerchantSignature(),
    );
  }
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Redirect to Redsys platform'),
  );
  return $form;
}