moiper 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -48,7 +48,26 @@ payment = Moiper::Payment.new(
48
48
 
49
49
  response = payment.checkout
50
50
 
51
- redirect_to response.checkout_url if payment.success?
51
+ redirect_to response.checkout_url if response.success?
52
+ ```
53
+
54
+ ### Notifications
55
+
56
+ Moip will notify your application with a POST, you can see more information at this url: http://labs.moip.com.br/referencia/nasp/
57
+
58
+ ```ruby
59
+ class OrdersController < ApplicationController
60
+ include Moiper::NotificationControllerHelper
61
+
62
+ def confirm
63
+ moip_notification do |notification|
64
+ # Here you can update your database with updated information from Moip
65
+ @order = Order.find_by_unique_identifier(notification.id)
66
+ @order.update_attribute :status, notification.payment_status
67
+ @order.save
68
+ end
69
+ end
70
+ end
52
71
  ```
53
72
 
54
73
  ## Disclaimer
@@ -0,0 +1,80 @@
1
+ module Moiper
2
+ class Notification
3
+ PAYMENT_STATUSES = {
4
+ 1 => :authorized,
5
+ 2 => :started,
6
+ 3 => :payment_form_printed,
7
+ 4 => :finished,
8
+ 5 => :canceled,
9
+ 6 => :under_analysis,
10
+ 7 => :returned,
11
+ 9 => :reimbursed
12
+ }
13
+
14
+ FINANCIAL_INSTITUTIONS = {
15
+ 1 => "MoIP",
16
+ 3 => "Visa",
17
+ 7 => "AmericanExpress",
18
+ 5 => "Mastercard",
19
+ 6 => "Diners",
20
+ 8 => "BancoDoBrasil",
21
+ 22 => "Bradesco",
22
+ 13 => "Itau",
23
+ 75 => "Hipercard",
24
+ 76 => "Paggo",
25
+ 88 => "Banrisul"
26
+ }
27
+
28
+ PAYMENT_METHODS = {
29
+ "BoletoBancario" => :payment_form,
30
+ "CartaoDeCredito" => :credit_card,
31
+ "DebitoBancario" => :debit,
32
+ "CartaoDeDebito" => :debit_card,
33
+ "FinanciamentoBancario" => :financing,
34
+ "CarteiraMoIP" => :moip_account
35
+ }
36
+
37
+ attr_reader :params
38
+ private :params
39
+
40
+ def initialize(params)
41
+ @params = params
42
+ end
43
+
44
+ def id
45
+ params["id_transacao"]
46
+ end
47
+
48
+ def price
49
+ params["valor"].to_i / 100.0
50
+ end
51
+
52
+ def payment_status
53
+ PAYMENT_STATUSES[params["status_pagamento"].to_i]
54
+ end
55
+
56
+ def moip_id
57
+ params["cod_moip"].to_i
58
+ end
59
+
60
+ def financial_institution
61
+ FINANCIAL_INSTITUTIONS[params["forma_pagamento"].to_i]
62
+ end
63
+
64
+ def payment_method
65
+ PAYMENT_METHODS[params["tipo_pagamento"]]
66
+ end
67
+
68
+ def quotas
69
+ params["parcelas"].to_i
70
+ end
71
+
72
+ def user_email
73
+ params["email_consumidor"]
74
+ end
75
+
76
+ def additional_info
77
+ params["classificacao"]
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,9 @@
1
+ module Moiper
2
+ module NotificationControllerHelper
3
+ def moip_notification(data = params, &block)
4
+ notification = Notification.new(data)
5
+ yield notification if block_given?
6
+ notification
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,34 @@
1
+ module Moiper
2
+ class Railtie < Rails::Railtie
3
+ # Expose Moiper's configuration to the Rails application configuration.
4
+ #
5
+ # module MyApplication
6
+ # class Application < Rails::Application
7
+ # config.moiper.sandbox = true
8
+ # config.moiper.token = "teste"
9
+ # config.moiper.key = "secret"
10
+ # end
11
+ # end
12
+ config.moiper = Moiper
13
+
14
+ initializer "load notification controller helper" do
15
+ require "moiper/notification_controller_helper"
16
+ end
17
+
18
+ initializer "load moiper.yml file" do
19
+ config_file = Rails.root.join("config", "moiper.yml")
20
+
21
+ if config_file.file?
22
+ yaml = YAML.load(File.read(config_file))[Rails.env]
23
+
24
+ if yaml
25
+ Moiper.configure do |config|
26
+ config.sandbox = yaml["sandbox"]
27
+ config.token = yaml["token"]
28
+ config.key = yaml["key"]
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,4 +1,4 @@
1
1
  module Moiper
2
2
  # Specify the current gem version
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1.0"
4
4
  end
data/lib/moiper.rb CHANGED
@@ -2,6 +2,8 @@ require "moiper/version"
2
2
  require "moiper/payment"
3
3
  require "moiper/request"
4
4
  require "moiper/response"
5
+ require "moiper/notification"
6
+ require "moiper/railtie" if defined? Rails
5
7
 
6
8
  module Moiper
7
9
  API_ENTRYPOINTS = {
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+ require "moiper/notification_controller_helper"
3
+
4
+ describe Moiper::NotificationControllerHelper do
5
+ class DummyController
6
+ include Moiper::NotificationControllerHelper
7
+
8
+ def params
9
+ {}
10
+ end
11
+ end
12
+
13
+ describe "#moip_notification" do
14
+ it "yields a Moip::Notification object" do
15
+ controller = DummyController.new
16
+
17
+ controller.moip_notification do |notification|
18
+ notification.should be_kind_of Moiper::Notification
19
+ end
20
+ end
21
+
22
+ it "allows custom params option" do
23
+ controller = DummyController.new
24
+ params = {}
25
+ Moiper::Notification.should_receive(:new).with(params)
26
+ controller.moip_notification(params)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ describe Moiper::Notification do
4
+ let(:params) {
5
+ {
6
+ "id_transacao" => "abc.1234",
7
+ "valor" => "50034",
8
+ "status_pagamento" => "5",
9
+ "cod_moip" => "12345678",
10
+ "forma_pagamento" => "3",
11
+ "tipo_pagamento" => "CartaoDeCredito",
12
+ "parcelas" => "1",
13
+ "email_consumidor" => "pagador@email.com.br",
14
+ "classificacao" => "Solicitado pelo vendedor"
15
+ }
16
+ }
17
+
18
+ # subject { Moiper::Notification.new(params) }
19
+ subject { described_class.new(params) }
20
+
21
+ its(:id) { should eq "abc.1234" }
22
+ its(:price) { should eq 500.34 }
23
+ its(:payment_status) { should eq :canceled }
24
+ its(:moip_id) { should eq 12345678 }
25
+ its(:financial_institution) { should eq "Visa" }
26
+ its(:payment_method) { should eq :credit_card }
27
+ its(:quotas) { should eq 1 }
28
+ its(:user_email) { should eq "pagador@email.com.br" }
29
+ its(:additional_info) { should eq "Solicitado pelo vendedor" }
30
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moiper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-22 00:00:00.000000000 Z
12
+ date: 2013-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &2160726500 !ruby/object:Gem::Requirement
16
+ requirement: &2160905440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2160726500
24
+ version_requirements: *2160905440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2160725540 !ruby/object:Gem::Requirement
27
+ requirement: &2160904920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2160725540
35
+ version_requirements: *2160904920
36
36
  description: Moip payment service integration library.
37
37
  email:
38
38
  - rnavarro1@gmail.com
@@ -47,11 +47,16 @@ files:
47
47
  - Rakefile
48
48
  - lib/moiper.rb
49
49
  - lib/moiper/cacert.pem
50
+ - lib/moiper/notification.rb
51
+ - lib/moiper/notification_controller_helper.rb
50
52
  - lib/moiper/payment.rb
53
+ - lib/moiper/railtie.rb
51
54
  - lib/moiper/request.rb
52
55
  - lib/moiper/response.rb
53
56
  - lib/moiper/version.rb
54
57
  - moiper.gemspec
58
+ - spec/moiper/notification_controller_helper_spec.rb
59
+ - spec/moiper/notification_spec.rb
55
60
  - spec/moiper/payment_spec.rb
56
61
  - spec/moiper/request_spec.rb
57
62
  - spec/moiper/response_spec.rb
@@ -71,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
76
  version: '0'
72
77
  segments:
73
78
  - 0
74
- hash: 657788424020654005
79
+ hash: 3233836298932843302
75
80
  required_rubygems_version: !ruby/object:Gem::Requirement
76
81
  none: false
77
82
  requirements:
@@ -80,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
85
  version: '0'
81
86
  segments:
82
87
  - 0
83
- hash: 657788424020654005
88
+ hash: 3233836298932843302
84
89
  requirements: []
85
90
  rubyforge_project:
86
91
  rubygems_version: 1.8.11
@@ -88,6 +93,8 @@ signing_key:
88
93
  specification_version: 3
89
94
  summary: Moip payment service integration library.
90
95
  test_files:
96
+ - spec/moiper/notification_controller_helper_spec.rb
97
+ - spec/moiper/notification_spec.rb
91
98
  - spec/moiper/payment_spec.rb
92
99
  - spec/moiper/request_spec.rb
93
100
  - spec/moiper/response_spec.rb