module QuickpayCommon MD5_CHECK_FIELDS = { 3 => { :authorize => %w(protocol msgtype merchant ordernumber amount currency autocapture cardnumber expirationdate cvd cardtypelock testmode), :capture => %w(protocol msgtype merchant amount finalize transaction), :cancel => %w(protocol msgtype merchant transaction), :refund => %w(protocol msgtype merchant amount transaction), :subscribe => %w(protocol msgtype merchant ordernumber cardnumber expirationdate cvd cardtypelock description testmode), :recurring => %w(protocol msgtype merchant ordernumber amount currency autocapture transaction), :status => %w(protocol msgtype merchant transaction), :chstatus => %w(protocol msgtype merchant) }, 4 => { :authorize => %w(protocol msgtype merchant ordernumber amount currency autocapture cardnumber expirationdate cvd cardtypelock testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :capture => %w(protocol msgtype merchant amount finalize transaction apikey), :cancel => %w(protocol msgtype merchant transaction apikey), :refund => %w(protocol msgtype merchant amount transaction apikey), :subscribe => %w(protocol msgtype merchant ordernumber cardnumber expirationdate cvd cardtypelock description testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :recurring => %w(protocol msgtype merchant ordernumber amount currency autocapture transaction apikey), :status => %w(protocol msgtype merchant transaction apikey), :chstatus => %w(protocol msgtype merchant apikey) }, 5 => { :authorize => %w(protocol msgtype merchant ordernumber amount currency autocapture cardnumber expirationdate cvd cardtypelock testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :capture => %w(protocol msgtype merchant amount finalize transaction apikey), :cancel => %w(protocol msgtype merchant transaction apikey), :refund => %w(protocol msgtype merchant amount transaction apikey), :subscribe => %w(protocol msgtype merchant ordernumber cardnumber expirationdate cvd cardtypelock description testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :recurring => %w(protocol msgtype merchant ordernumber amount currency autocapture transaction apikey), :status => %w(protocol msgtype merchant transaction apikey), :chstatus => %w(protocol msgtype merchant apikey) }, 6 => { :authorize => %w(protocol msgtype merchant ordernumber amount currency autocapture cardnumber expirationdate cvd cardtypelock testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :capture => %w(protocol msgtype merchant amount finalize transaction apikey), :cancel => %w(protocol msgtype merchant transaction apikey), :refund => %w(protocol msgtype merchant amount transaction apikey), :subscribe => %w(protocol msgtype merchant ordernumber cardnumber expirationdate cvd cardtypelock description testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :recurring => %w(protocol msgtype merchant ordernumber amount currency autocapture transaction apikey), :status => %w(protocol msgtype merchant transaction apikey), :chstatus => %w(protocol msgtype merchant apikey) }, 7 => { :authorize => %w(protocol msgtype merchant ordernumber amount currency autocapture cardnumber expirationdate cvd acquirers cardtypelock testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :capture => %w(protocol msgtype merchant amount finalize transaction apikey), :cancel => %w(protocol msgtype merchant transaction apikey), :refund => %w(protocol msgtype merchant amount transaction apikey), :subscribe => %w(protocol msgtype merchant ordernumber amount currency cardnumber expirationdate cvd acquirers cardtypelock description testmode fraud_remote_addr fraud_http_accept fraud_http_accept_language fraud_http_accept_encoding fraud_http_accept_charset fraud_http_referer fraud_http_user_agent apikey), :recurring => %w(protocol msgtype merchant ordernumber amount currency autocapture transaction apikey), :status => %w(protocol msgtype merchant transaction apikey), :chstatus => %w(protocol msgtype merchant apikey) }, 10 => { :authorize => %w(mobile_number acquirer autofee customer_id extras zero_auth customer_ip), :capture => %w( extras ), :cancel => %w( extras ), :refund => %w( extras ), :subscribe => %w( variables branding_id), :authorize_subscription => %w( mobile_number acquirer customer_ip), :recurring => %w(auto_capture autofee zero_auth) } } RESPONSE_CODES = { 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 400 => 'Bad Request', 401 => 'UnAuthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 409 => 'Conflict', 500 => 'Internal Server Error' } def self.included(base) base.default_currency = 'DKK' base.money_format = :cents base.supported_cardtypes = [:dankort, :forbrugsforeningen, :visa, :master, :american_express, :diners_club, :jcb, :maestro] base.supported_countries = ['DE', 'DK', 'ES', 'FI', 'FR', 'FO', 'GB', 'IS', 'NO', 'SE'] base.homepage_url = 'http://quickpay.net/' base.display_name = 'QuickPay' end def expdate(credit_card) year = format(credit_card.year, :two_digits) month = format(credit_card.month, :two_digits) "#{year}#{month}" end end