Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tutorial #2

Open
ghost opened this issue Jun 3, 2012 · 14 comments
Open

Tutorial #2

ghost opened this issue Jun 3, 2012 · 14 comments

Comments

@ghost
Copy link

ghost commented Jun 3, 2012

Dobry den,
bylo by mozne pripravit nejaky kratsi tutorial?
Pokusil jsem se to rozjet na GoPay-API-Example. To se mi podarilo po par upravach rozjet, nicmene jsem se zasekl na:
undefined method `payment_session_id' for false:FalseClass ( http://cl.ly/2L1O3H1r3D0n1x3b2z2l )
Predpokladam ze je to zpusobeno tim, ze data nejsou odesilany na testovaci branu, proto mi to nevraci payment_session_id, mozna take ne.
Diky za odpoved

@papricek
Copy link
Contributor

papricek commented Jun 4, 2012

Zdravím,

podrobněji se na to podívám někdy v týdnu, nicméně tuším, že problém není v neodeslání dat - problém je v tom, že platba nebyla správně ověřena.

Také se asi tedy podívám na GoPay-API-Example, nedávno jsem jej sám využíval jako šablonu a je možné, že jsem něco v šabloně neopravil a v ostré aplikaci ano.

@ghost
Copy link
Author

ghost commented Jun 4, 2012

Diky, ona bude nejpravdepodobneji chyba u me, nejak se do toho nemohu dostat.

@papricek
Copy link
Contributor

papricek commented Jun 4, 2012

Zkuste tohle, to je aktuální verze funkčního modelu Order

class Order < ActiveRecord::Base

  validates :client_name, :presence => true
  validates :email,
            :presence => true,
            :format => {:with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i}

  include AASM

  aasm_column :state
  aasm_initial_state :new
  aasm_state :new
  aasm_state :waiting
  aasm_state :payment_done
  aasm_state :timeouted
  aasm_state :canceled

  aasm_event :submit do
    transitions :to => :waiting, :from => [:new]
  end

  aasm_event :cancel do
    transitions :to => :canceled, :from => [:waiting]
  end

  aasm_event :timeout do
    transitions :to => :timeouted, :from => [:waiting]
  end

  aasm_event :pay do
    transitions :to => :payment_done, :from => [:waiting]
  end

  def name
    "Pernamentka pro 6 vstupů"
  end

  def price
    490000
  end

  def save_on_gopay
    vs = "gopay_#{'test_' if configatron.environment != :production }#{GoPay.configuration.goid}"
    payment = GoPay::EshopPayment.new({:variable_symbol => vs,
                                       :total_price_in_cents => price.to_i,
                                       :product_name => name,
                                       :payment_channels => payment_method_code.present? ? [payment_method_code] : GoPay::PaymentMethod.all.map(&:code)}).create
    self.payment_session_id = payment.payment_session_id
    save!
  end

  def payment
    vs = "gopay_#{'test_' if configatron.environment != :production }#{GoPay.configuration.goid}"
    GoPay::EshopPayment.new(:variable_symbol => vs,
                            :total_price_in_cents => price.to_i,
                            :product_name => name,
                            :payment_session_id => payment_session_id,
                            :payment_channels => []).actual
  end

  def payment_attrs
    response = payment.last_response
    ppayment_chanel = response[:payment_channel].is_a?(Hash) ? "" : payment.last_response[:payment_channel]
    {:payment_channel => ppayment_chanel,
     :session_state => response[:session_state]}
  end

  def gopay_url
    GoPay::Payment.new(:payment_session_id => payment_session_id,
                       :payment_channel => "eu_mb_a").gopay_url
  end

end

@ghost
Copy link
Author

ghost commented Jun 4, 2012

Porad stejne (musel jsem smazat validaci a 'configatron'). Config mam nastaveny do :test, tudiz by mela byt pouzivana testovaci brana a objednavky to vytvori ( http://cl.ly/2L3L1k2u0M191u1E382m )
Nejsou GoPay udaje vazany na domenu? Pouzivam udaje k eshopu, ktery nepouzivam (testovaci brana funguje, provozni ne)

@papricek
Copy link
Contributor

papricek commented Jun 9, 2012

Nene, nejsou. Máte aktuální verzi gemu? Tuším, že jedna z posledních oprav se týkala právě toho, že jel pouze v testovacím provozu...

@ghost
Copy link
Author

ghost commented Jun 9, 2012

Mel jsem 0.0.5 z defactory.net, pak jsem tam dal 0.0.6 z github.
Ted jsem se dostal k tomuto:

undefined method attribute' for nil:NilClass app/controllers/orders_controller.rb:6:inindex'

orders_controller.rb:6
@payment_methods = GoPay::PaymentMethod.all

Zkusim si s tim jeste pohrat, treba na neco prijdu

@papricek
Copy link
Contributor

0.0.6 je určitě lepší, ta už je na ostrém provozu.

Tohle by zrovna mělo fungovat jako první - podle mě pořád nemáte gem správně nakonfigurovaný. Příklad toho, co vložit do config/initializers/gopay.rb:

GoPay.configure do |config|
  config.environment = :test #důležité, pokud jste skutečně v testovacím módu GoPay
  config.goid = "xxxxx"
  config.secret = "yyyy"
  config.success_url = "http://test.example.com/orders/success"
  config.failed_url = "http://test.example.com/orders/failed"
end

@ghost
Copy link
Author

ghost commented Jun 11, 2012

Ano, presne takto to mam. Environment v test a zbytek jsem zkousel jak rovnou, tak pres yml

@papricek
Copy link
Contributor

Skoro mi z toho vychází, že máte problém někde v instalaci závislostí. Mně následující skript (umístěný pro bezproblémový bundle install přímo do rootu GoPay-API gemu) bezproblémově vyhodí seznam platebních metod.

require 'rubygems'
require 'bundler/setup'
require 'gopay'

GoPay.configure do |config|
    config.environment = :test
    config.goid = "xxxxxxxx"
    config.secret = "yyyyyyy"
    config.success_url = "http://example.com/success"
    config.failed_url = "http://example.com/failed"
end

puts GoPay::PaymentMethod.all.inspect

@ghost
Copy link
Author

ghost commented Jun 13, 2012

Maly uspech, je potreba mit wasabi ve verzi 2.0.0, s vyssi verzi to nejde a vyhazuje to error :"undefined method attribute' for nil:NilClass"

Nyni uz mi to seznam platebnich metod vypise, ale vratil jsem se k prvnimu problemu: "undefined method `payment_session_id' for false:FalseClass"

Jake pouzivate verze vsech gems vazanych ke gopay?

@papricek
Copy link
Contributor

Toto je můj Gemfile.lock:

PATH
  remote: .
  specs:
    gopay (0.0.6)
      savon

GEM
  remote: http://rubygems.org/
  specs:
    akami (1.0.0)
      gyoku (>= 0.4.0)
    builder (3.0.0)
    gyoku (0.4.4)
      builder (>= 2.1.2)
    httpi (0.9.7)
      rack
    metaclass (0.0.1)
    mocha (0.11.4)
      metaclass (~> 0.0.1)
    nokogiri (1.5.2)
    nori (1.1.0)
    rack (1.4.1)
    savon (0.9.9)
      akami (~> 1.0)
      builder (>= 2.1.2)
      gyoku (>= 0.4.0)
      httpi (~> 0.9)
      nokogiri (>= 1.4.0)
      nori (~> 1.1)
      wasabi (~> 2.1)
    shoulda (3.0.1)
      shoulda-context (~> 1.0.0)
      shoulda-matchers (~> 1.0.0)
    shoulda-context (1.0.0)
    shoulda-matchers (1.0.0)
    wasabi (2.1.0)
      nokogiri (>= 1.4.0)

PLATFORMS
  ruby

DEPENDENCIES
  gopay!
  mocha
  shoulda

@ghost
Copy link
Author

ghost commented Jun 15, 2012

Porad stejne...

Started POST "/orders" for 127.0.0.1 at 2012-06-15 19:25:12 +0200
Processing by OrdersController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"SUSs32LUQeofenGuMWP9GHnmGx4xdTQiNGpGm4Qxj8s=", "order"=>{"name"=>"", "payment_method_code"=>"", "price"=>""}, "commit"=>"Vytvořit platbu na GoPay bráně"}
   (0.1ms)  begin transaction
  SQL (1.1ms)  INSERT INTO "orders" ("created_at", "delivery_data", "name", "payed", "payment_data", "payment_method_code", "payment_session_id", "price", "state", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)  [["created_at", Fri, 15 Jun 2012 17:25:13 UTC +00:00], ["delivery_data", nil], ["name", ""], ["payed", false], ["payment_data", nil], ["payment_method_code", ""], ["payment_session_id", nil], ["price", nil], ["state", "new"], ["updated_at", Fri, 15 Jun 2012 17:25:13 UTC +00:00]]
   (1.7ms)  commit transaction
Completed 500 Internal Server Error in 1657ms

NoMethodError (undefined method `payment_session_id' for false:FalseClass):
  app/models/order.rb:49:in `save_on_gopay'
  app/controllers/orders_controller.rb:12:in `create'

Nevraci mi to payment_session_id. Kdyz upravim EshopPayment aby vracel pouze response[:payment_session_id], tak mi to vrati u kazde objednavky: "f"

@papricek
Copy link
Contributor

Ještě to řešíte? Asi budu mít brzo hotový upgrade na novou verzí paygate...

@ghost
Copy link
Author

ghost commented Sep 22, 2012

Zatím nijak, není to nutné. Až budete mít hotový upgrade, určitě to rád zkusím znovu.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant