You are here

function commerce_sagepay_sagepay_order_data_alter in Drupal Commerce SagePay Integration 7

Implements hook_sagepay_order_data_alter().

Make specific changes to order data for countries that have no City requirement in their address format. SagePay expects a City and therefore will fail the transaction if the address does not contain one.

File

./commerce_sagepay.module, line 777

Code

function commerce_sagepay_sagepay_order_data_alter(&$query, $order) {
  switch ($query['BillingCountry']) {
    case 'SG':
      $query['BillingCity'] = 'Singapore';
      break;
    case 'GI':
      $query['BillingCity'] = 'Gibraltar';
      break;
    case 'HK':
      $query['BillingCity'] = 'Hong Kong';
      break;
    case 'NR':
      $query['BillingCity'] = 'Nauru';
      break;
    case 'SM':
      $query['BillingCity'] = 'San Marino';
      break;
    case 'AE':
      $query['BillingCity'] = 'United Arab Emirates';
      break;
  }
  switch ($query['DeliveryCountry']) {
    case 'SG':
      $query['DeliveryCity'] = 'Singapore';
      break;
    case 'GI':
      $query['DeliveryCity'] = 'Gibraltar';
      break;
    case 'HK':
      $query['DeliveryCity'] = 'Hong Kong';
      break;
    case 'NR':
      $query['DeliveryCity'] = 'Nauru';
      break;
    case 'SM':
      $query['DeliveryCity'] = 'San Marino';
      break;
    case 'AE':
      $query['DeliveryCity'] = 'United Arab Emirates';
      break;
  }

  // Check if the user has entered a first and last name as required.
  // If not, add dummy data so that the transaction still works.
  if (empty($query['BillingSurname'])) {
    $query['BillingSurname'] = '.';
  }
  if (empty($query['DeliverySurname'])) {
    $query['DeliverySurname'] = '.';
  }
}