You are here

function commerce_worldpay_bg_schema in Commerce Worldpay 7

Implements hook_schema().

File

./commerce_worldpay_bg.install, line 12
Installs the tables required by Commerce WorldPay.

Code

function commerce_worldpay_bg_schema() {
  $schema = array();
  $schema['commerce_worldpay_bg_txn'] = array(
    'description' => 'Stores more details on a WorldPay transaction.',
    'fields' => array(
      'txn_id' => array(
        'description' => 'Serial numeric ID of the transaction in the local database.',
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'txn_md5' => array(
        'description' => 'The WorldPay transaction ID.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'order_id' => array(
        'description' => 'The order ID the payment belongs to.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      // transId.
      'wp_txn_id' => array(
        'description' => 'Wolrdpay\'s transaction id.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      // Foreign key.
      'transaction_id' => array(
        'description' => 'The DC payment transaction ID the payment belongs to.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      // authMode - A or E.
      'authmode' => array(
        'description' => 'The authorisation mode used. A = Full auth. E = pre-auth',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      // transStatus - 'pre' is our own status meaning that
      // no comunication has happended with wolrdpay yet.
      'transaction_status' => array(
        'description' => 'The status set by Worldpay (Y or C).',
        'type' => 'varchar',
        'length' => 3,
        'not null' => TRUE,
        'default' => 'pre',
      ),
      'name' => array(
        'description' => 'The buyer name WorldPay sent.',
        'type' => 'varchar',
        'length' => 100,
        'not null' => TRUE,
        'default' => '',
      ),
      'shoppers_email' => array(
        'description' => 'The e-mail the shopper used at Worldpay.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      // companyName.
      'company_name' => array(
        'description' => 'The company name Worldpay sent that corresponds to an installtion.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'currency' => array(
        'description' => 'The currency code of the payment use by Worldpay.',
        'type' => 'varchar',
        'length' => 10,
        'not null' => TRUE,
        'default' => '',
      ),
      'amount' => array(
        'description' => 'The amount of fees collected by Worldpay for this payment.',
        'type' => 'numeric',
        'size' => 'normal',
        'precision' => 10,
        'scale' => 2,
        'not null' => TRUE,
        'default' => 0,
      ),
      // authCurrency.
      'auth_currency' => array(
        'description' => 'The currency code of the payment use by Worldpay.',
        'type' => 'varchar',
        'length' => 10,
        'not null' => TRUE,
        'default' => '',
      ),
      // authAmount.
      'auth_amount' => array(
        'description' => 'Amount that the transaction was authorised for, in the currency given as auth_currency..',
        'type' => 'numeric',
        'size' => 'normal',
        'precision' => 10,
        'scale' => 2,
        'not null' => TRUE,
        'default' => 0,
      ),
      // rawAuthMessage.
      'raw_auth_message' => array(
        'description' => 'The text received from the bank summarising the different states.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      // wafMerchMessage.
      'waf_merch_message' => array(
        'description' => 'Risk managment fraud messages.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      // AVS.
      'avs' => array(
        'description' => 'Risk managment fraud messages.',
        'type' => 'varchar',
        'length' => 5,
        'not null' => TRUE,
        'default' => '',
      ),
      'authentication' => array(
        'description' => 'SecureCode authentication.',
        'type' => 'varchar',
        'length' => 30,
        'not null' => TRUE,
        'default' => '',
      ),
      // The IP address WorldPay thinks the payment came from.
      'ip_address' => array(
        'description' => 'IP address of user accessing WorldPay.',
        'type' => 'varchar',
        'length' => 30,
        'not null' => TRUE,
        'default' => '',
      ),
      'created' => array(
        'description' => 'The Unix timestamp when this row was received.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'changed' => array(
        'description' => 'The Unix timestamp when the IPN was last updated.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      // transTime.
      'transaction_time' => array(
        'description' => 'The Unix timestamp when Worldpay made contact. (transTime)',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'test_mode' => array(
        'description' => 'Boolean indicating whether or not this was a test sent by Worldpays test mode.',
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
      ),
      'signature_fields' => array(
        'description' => 'The fields used to create the MD5.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
    ),
    'primary key' => array(
      'txn_id',
    ),
    'foreign keys' => array(
      'order_id' => array(
        'table' => 'commerce_order',
        'columns' => array(
          'order_id' => 'order_id',
        ),
      ),
      'transaction_id' => array(
        'table' => 'commerce_payment_transaction',
        'columns' => array(
          'transaction_id' => 'transaction_id',
        ),
      ),
    ),
    'indexes' => array(
      'wp_txn_id' => array(
        'wp_txn_id',
      ),
      'txn_md5' => array(
        'txn_md5',
      ),
    ),
  );
  return $schema;
}