Module: ActiveMerchant::Billing::MigsCodes

Included in:
MigsGateway
Defined in:
lib/active_merchant/billing/gateways/migs/migs_codes.rb

Defined Under Namespace

Classes: CreditCardType

Constant Summary

TXN_RESPONSE_CODES =
{
  '?' => 'Response Unknown',
  '0' => 'Transaction Successful',
  '1' => 'Transaction Declined - Bank Error',
  '2' => 'Bank Declined Transaction',
  '3' => 'Transaction Declined - No Reply from Bank',
  '4' => 'Transaction Declined - Expired Card',
  '5' => 'Transaction Declined - Insufficient funds',
  '6' => 'Transaction Declined - Error Communicating with Bank',
  '7' => 'Payment Server Processing Error - Typically caused by invalid input data such as an invalid credit card number. Processing errors can also occur',
  '8' => 'Transaction Declined - Transaction Type Not Supported',
  '9' => 'Bank Declined Transaction (Do not contact Bank)',
  'A' => 'Transaction Aborted',
  'C' => 'Transaction Cancelled',
  'D' => 'Deferred Transaction',
  'E' => 'Issuer Returned a Referral Response',
  'F' => '3D Secure Authentication Failed',
  'I' => 'Card Security Code Failed',
  'L' => 'Shopping Transaction Locked (This indicates that there is another transaction taking place using the same shopping transaction number)',
  'N' => 'Cardholder is not enrolled in 3D Secure (Authentication Only)',
  'P' => 'Transaction is Pending',
  'R' => 'Retry Limits Exceeded, Transaction Not Processed',
  'S' => 'Duplicate OrderInfo used. (This is only relevant for Payment Servers that enforce the uniqueness of this field)',
  'U' => 'Card Security Code Failed'
}
ISSUER_RESPONSE_CODES =
{
  '00' => 'Approved',
  '01' => 'Refer to Card Issuer',
  '02' => 'Refer to Card Issuer',
  '03' => 'Invalid Merchant',
  '04' => 'Pick Up Card',
  '05' => 'Do Not Honor',
  '07' => 'Pick Up Card',
  '12' => 'Invalid Transaction',
  '14' => 'Invalid Card Number (No such Number)',
  '15' => 'No Such Issuer',
  '33' => 'Expired Card',
  '34' => 'Suspected Fraud',
  '36' => 'Restricted Card',
  '39' => 'No Credit Account',
  '41' => 'Card Reported Lost',
  '43' => 'Stolen Card',
  '51' => 'Insufficient Funds',
  '54' => 'Expired Card',
  '57' => 'Transaction Not Permitted',
  '59' => 'Suspected Fraud',
  '62' => 'Restricted Card',
  '65' => 'Exceeds withdrawal frequency limit',
  '91' => 'Cannot Contact Issuer'
}
VERIFIED_3D_CODES =
{
  'Y' => 'The cardholder was successfully authenticated.',
  'E' => 'The cardholder is not enrolled.',
  'N' => 'The cardholder was not verified.',
  'U' => 'The cardholder\'s Issuer was unable to authenticate due to a system error at the Issuer.',
  'F' => 'An error exists in the format of the request from the merchant. For example, the request did not contain all required fields, or the format of some fields was invalid.',
  'A' => 'Authentication of your Merchant ID and Password to the Directory Server Failed (see "What does a Payment Authentication Status of "A" mean?" on page 85).',
  'D' => 'Error communicating with the Directory Server, for example, the Payment Server could not connect to the directory server or there was a versioning mismatch.',
  'C' => 'The card type is not supported for authentication.',
  'M' => 'This indicates that attempts processing was used. Verification is marked with status M - ACS attempts processing used. Payment is performed with authentication. Attempts is when a cardholder has successfully passed the directory server but decides not to continue with the authentication process and cancels.',
  'S' => 'The signature on the response received from the Issuer could not be validated. This should be considered a failure.',
  'T' => 'ACS timed out. The Issuer\'s ACS did not respond to the Authentication request within the time out period.',
  'P' => 'Error parsing input from Issuer.',
  'I' => 'Internal Payment Server system error. This could be caused by a temporary DB failure or an error in the security module or by some error in an internal system.'
}
CARD_TYPES =
[
  # The following are 4 different representations of credit card types
  # am_code: The active merchant code
  # migs_code: Used in response for purchase/authorize/status
  # migs_long_code: Used to pre-select card for server_purchase_url
  # name: The nice display name
  %w(american_express AE Amex             American\ Express),
  %w(diners_club      DC Dinersclub       Diners\ Club),
  %w(jcb              JC JCB              JCB\ Card),
  %w(maestro          MS Maestro          Maestro\ Card),
  %w(master           MC Mastercard       MasterCard),
  %w(na               PL PrivateLabelCard Private\ Label\ Card),
  %w(visa             VC Visa             Visa\ Card')
].map do |am_code, migs_code, migs_long_code, name|
  CreditCardType.new(am_code, migs_code, migs_long_code, name)
end