Thursday, June 4, 2009

Validating the Credit Card, Without Processing Credit Card.

# THIS MODULE IS USED TO CHECK FROM http://www.trynt.com/creditcard-validation-api
# API TO CHECK WHETHER CREDIT CARD NUMBER IS NOT A DUMMY CARD NUMBER.
require 'net/http'
require 'uri'
require 'rexml/document'

module CreditCardVarification

include REXML


def is_credit_card_valid?(credit_card_no, year, month)

begin

dummy_card = %w(371449635398431 378734493671000 5610591081018250 30569309025904 38520000023237 6011111111111117 6011000990139424

3530111333300000 3566002020360505 5555555555554444 5105105105105100 4111111111111111 4012888888881881 4222222222222 76009244561
5019717010103742 6331101999990016)

action = get_body_from_url(credit_card_no, year, month)


if defined? Document.new(action).elements['Trynt/Credit-Card-Validation/Result'].text


result = Document.new(action).elements['Trynt/Credit-Card-Validation/Result'].text


unless result.nil?

if result.eql?("Appears Valid") && !dummy_card.include?credit_card_no.to_s)
return true
end
end
end
return false
rescue
return false
end
end

def get_body_from_url(credit_card_no, year, month)
url = "http://www.trynt.com/credit-card-validation-api/v1/?cc=#{credit_card_no}&y=#{year}&m=#{month}"
url = URI.parse(url)
res = Net::HTTP.get_response(url)
return res.body
end
end

Using Thread to store session variable

# THE BELOW MENTIONED FUNCTION WILL BE USED TO STORE THE SESSION VALUE SO THAT SESSION VARIABLES CAN BE USED IN MODEL...

module UserInfo
def get_current_user_in_model
Thread.current[:user]
end

def self.get_current_user_in_model=(user)
Thread.current[:user] = user
end
end