Closed felipemathies closed 12 years ago
Oi Felipe, o estranho é que o #process! desse método de pagamento não usa #purchase como o que acontece com o source padrão de CreditCard do Spree. O ciclo de vida desse método de pagamento é:
A app em que eu estava usando essa gem usa Spree no branch 1-0-stable. Talvez alguma coisa tenha mudado no Spree desde então e é possível que a interface para qualquer payment precise de um #purchase agora.
Tenta descobrir quem está chamando #purchase.
opa cara obrigado pela resposta...
entendi...pois é tb achei estranho...dei uma olhada no código do Spree:PaymentMethod:Check que tb estende de PaymentMethod e não tem nada de purchase...vou dar uma debugada pra ver quem esta chamando esse purchase entaum...
opa e ae cara...ainda estou apanhando na gem aqui heheh cuida só aqui esta o trace do erro:
NoMethodError (undefined method purchase' for #<Spree::PaymentMethod::CieloRegularMethod:0x007fdde16068c0>): activemodel (3.2.7) lib/active_model/attribute_methods.rb:407:in
method_missing'
activerecord (3.2.7) lib/active_record/attribute_methods.rb:149:in method_missing' spree_core (1.1.3) app/models/spree/payment/processing.rb:128:in
block in gateway_action'
spree_core (1.1.3) app/models/spree/payment/processing.rb:172:in protect_from_connection_error' spree_core (1.1.3) app/models/spree/payment/processing.rb:125:in
gateway_action'
spree_core (1.1.3) app/models/spree/payment/processing.rb:27:in purchase!' spree_core (1.1.3) app/models/spree/payment/processing.rb:9:in
process!'
pra min ainda n faz muito sentido visto q não sei o fluxo do pagamento dentro do spree...uma outra coisa que achei estranho eh que na documentacao da gem fala pra selecionar Spree::Gateway::Cielo mas lá só aparece Spree::PaymentMethod::CieloRegularMethod isso é normal??
cara taba dando outra olhada aqui e de fato mudou bastante como é feito o processo de pagamento agora...antigamente o metodo process! do payment era assim:
def process!
if payment_method && payment_method.source_required?
if source
if !processing? && source.respond_to?(:process!)
started_processing!
source.process!(self) # source is responsible for updating the payment state when it's done processing
end
else
raise Core::GatewayError.new(I18n.t(:payment_processing_failed))
end
end
end
ou seja simplismente chamada o metodo process! do source(CieloRegularPayment), mas agora ele mudou para:
def process!
if payment_method && payment_method.source_required?
if source
if !processing?
if Spree::Config[:auto_capture]
purchase!
else
authorize!
end
end
else
raise Core::GatewayError.new(I18n.t(:payment_processing_failed))
end
end
end
ele esta dividido em 2 metodos:
def authorize!
started_processing!
gateway_action(source, :authorize, :pend)
end
def purchase!
started_processing!
gateway_action(source, :purchase, :complete)
end
def gateway_action(source, action, success_state)
protect_from_connection_error do
check_environment
response = payment_method.send(action, (amount * 100).round,
source,
gateway_options)
handle_response(response, success_state, :failure)
end
end
que fazem basicamente chamar o metodo referente na PaymentMethod::CieloRegularMethod e não mais na source CieloRegularPayment como antigamente, ou seja alem de mudar os metodos mudou a classe que recebe a chamanda dentro da gem...alguma ideia de como posso resolver isso??? voce tem alguma outra maneira de gente pode conversar?? gtalk, etc?? se voce poder me dar essa força fico muito agradecido...obrigado!
Te mandei um email
bah brigadao pela atenção cara...mas n to achando o email aqui...sera que foi para o endereço certo?? felipe.mathies@gmail.com, mais um vez obrigado! abraço!
Usa o branch spree-1-1-3
eae cara...primeiro parabens pela gem...estou aqui tentando colocar ele pra funcionar..e não estou conseguindo...tentei fazer um fork e alterar mas tb n tive muito sucesso...ainda não entendo muito bem como os pagamentos são processados no spree..o erro que estou tendo é esse no momento que faço o checkout e seleciono o numero de parcelas:
undefined method `purchase' for #Spree::PaymentMethod::CieloRegularMethod:0x007f9cf7953e68
alguma ideia que possa me ajudar cara??? abração...obrigado pela atenção!