Forum: Rails-ES verificación de CVV

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Franco B. (Guest)
on 2009-02-03 20:15
(Received via mailing list)
Hola a todos,

  tengo un problema con la verificación del CVV (Card Verification
Value),
estoy usando ActiveMerchant como plugin y Moneris como el gateway,
funciona
bastante bien la cosa el único problema es que parece ser que no está
validando el CVV, le paso cualquier cosa y me sigue validando las
tarjetas
:(. He buscado por todos lados y nada, compré el peepcode de
ActiveMerchant,
ví los railscast de R. Bates, lo más cercano lo encontré en este thread
[1].

 Aca el código que considero relevante:

# Aunque esto no creo que sea necesario, pero lo puse por las dudas
#environment.rb
. . .
require 'active_merchant'
ActiveMerchant::Billing::CreditCard.require_verification_value = true
. . .


# order.rb
. . .
def process(order)
        Base.mode = :test

        gateway = MonerisGateway.new(:login => "store2", :password =>
"yesguy")

        credit_card = CreditCard.new(
            :type => order[:card_type],  :number => order[:card_number],
            :month => order[:card_expiration_month], :year =>
order[:card_expiration_year],
            :first_name => order[:card_name].split(' ').first,
:last_name =>
order[:card_name].split(' ').last,
            :verification_value => '1000'
#            :verification_value => order[:card_verification_code]
        )

        if credit_card.valid?
            billing_datas = {
                :name => order[:billing_name],
                :address1 => order[:billing_address], :address2 =>
order[:billing_address2],
                :phone => order[:contact_phone_number],
                :city => order[:billing_city], :state =>
order[:billing_state],
                :country => order[:billing_country], # Be sure that here
will be the country code instead the country name
                :zip => order[:billing_zip]
            }

            options = {
                :order_id => '36012-' + self.id.to_s,
                :billing_address => billing_datas,
                :email => order[:contact_email],
                :subtotal => total,
                :shipping => shipping_price,
                :tax1 => taxes,
                :custom => special_instructions
            }

#            response = gateway.authorize(pennis , credit_card, options)
#            response = gateway.authorize(1000 , credit_card, options)
            response = gateway.authorize(1036 , credit_card, options)
            # Pennis Simulation code to CVV verification
            # 10.35 APPROVED         M
            # 10.36 CAPTURE declined N

            # For debug
            cvv_result = response.cvv_result
            puts " ---------------------- "
            puts cvv_result
            puts cvv_result[:code]
            puts cvv_result[:message]
            puts " ----------------------"

            if response.success?
                self.status = 'processed'
            else
               puts response.message # for debug
               self.status = 'failed'
               self.error_message = response.message
               self.decline_times += 1 if
self.error_message.include?('ecline')
            end
        else # Credit Card is not valid
            self.error_message = "Error: credit card is not valid.
#{credit_card.errors.full_messages.join('. ')}"
        end
        self.save
    end
. . .

response.cvv_result siempre es un hash que tiene nil :(. Gracias de
antemano
por cualquier ayuda,
Franco.

[1]
http://groups.google.com/group/activemerchant/brow...
Andrés G. (Guest)
on 2009-02-03 21:10
(Received via mailing list)
>>def process(order)
¿Qué tienes en el controller?

2009/2/3 Franco B. <removed_email_address@domain.invalid>
Franco B. (Guest)
on 2009-02-03 21:18
(Received via mailing list)
Algo así

. . .
def place_order
   . . .
   @order.process(params[:order])

   if @order.status == 'processed'
        render :action => 'receipt'
   else
       render :template => 'shopping_carts/checkout'
   end
end
. . .

pero de todas formas no creo que sea un problema de que me falte algún
dato
porque he hecho (y estoy haciendo) pruebas con datos fijos y tampoco
nada
:(. Por ejemplo:

gateway = MonerisGateway.new(:login => "store5", :password => "yesguy")

credit_card = CreditCard.new(
            :type => 'visa',
            :number => '4242424242424242',
            :month => '12',
            :year => '2012',
            :first_name => 'first',
            :last_name => 'last',
            :verification_value => '1000'
        )
. . .
response = gateway.authorize(1030, credit_card, options)
Andrés G. (Guest)
on 2009-02-03 21:24
(Received via mailing list)
credit_card = CreditCard.new(
            :type => 'visa',
            :number => '4242424242424242',
            :month => '12',
            :year => '2012',
            :first_name => 'first',
            :last_name => 'last',
            :verification_value => '1000'
        )
Otra chorrada, por probar. Los campos :number, :month,
:verification_value
y :year ponlos sin comillas. Ya te digo que sólo es por probar

No sé, igual esto no te ayuda pero al probarlo te das cuenta de otra
cosa

Un saludo

El 3 de febrero de 2009 20:18, Franco B.
<removed_email_address@domain.invalid>escribió:
Franco B. (Guest)
on 2009-02-03 21:44
(Received via mailing list)
Gracias, todo sirve, de hecho no lo había probado de esa manera, aunque
tampoco tuve exito, parece que acepta los datos de las dos formas.

Me parece que la mano viene por la forma en que tomo la respuesta; por
la
documentación que he leido el resultado de validar el CVV esta en
response.cvv_result aunque yo siempre lo tengo en null a este hash :'(.

2009/2/3 Andrés gutiérrez <removed_email_address@domain.invalid>
Francesc E. (Guest)
on 2009-02-03 21:47
(Received via mailing list)
Ese Gateway que usas para procesar pagos permite cuentas bancarias
españolas?
Franco B. (Guest)
on 2009-02-03 21:52
(Received via mailing list)
2009/2/3 Francesc E. <removed_email_address@domain.invalid>

>
> Ese Gateway que usas para procesar pagos permite cuentas bancarias
> españolas?
>

La verdad que no lo sé, pero no creo. Es un gateway muy conocido en
Canada,
de hecho lo estoy usando justamente para una empresa de alla.

Saludos
Andrés G. (Guest)
on 2009-02-03 22:00
(Received via mailing list)
options = {
                :order_id => '36012-' + self.id.to_s,
                :billing_address => billing_datas,
                :email => order[:contact_email],
                :subtotal => total,
                :shipping => shipping_price,
                :tax1 => taxes,
                :custom => special_instructions
            }

Perdona, otra pregunta. veo que casi toda la info que pasas al modelo la
pasas en @order, ¿Pero de donde salen: shipping_price, total, taxes y
special_instructions?2009/2/3 Franco B. <removed_email_address@domain.invalid>
Franco B. (Guest)
on 2009-02-03 22:20
(Received via mailing list)
On Tue, Feb 3, 2009 at 5:59 PM, Andrés gutiérrez
<removed_email_address@domain.invalid>wrote:

> Perdona, otra pregunta. veo que casi toda la info que pasas al modelo la
> pasas en @order, ¿Pero de donde salen: shipping_price, total, taxes y
> special_instructions?


esteeeeeeee bueno me hiciste dar cuenta que no necesitaba pasar @order
como
parámentro al método, gracias. De todas formas el tema principal del
thread
sigue sin solución :'(
Franco B. (Guest)
on 2009-02-03 23:05
(Received via mailing list)
Creo que encontré el problema, aunque nose si lo voy a poder resolver de
todas maneras lo voy a intentar. Cambiando palabras en los buscadores
buscando información sobre el tema llegue a [1], después de ver ese
thread
revisé el código del gateway para moneris y parece tener razón, el
gateway
no implementa verificación de VCC o VCD como sea.

Voy a intentar escribir el código, a no ser que aparezca un guru aca y
me
diga que él ya lo ha hecho o que encontró el código en alguna parte :).
Si
tengo exito les aviso sino no sentiran más de mi por un tiempo :D.

Saludos.

[1]
http://groups.google.com/group/activemerchant/brow...

2009/2/3 Franco B. <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.