moiper 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Moiper
2
2
 
3
- Moip payment service integration library.
3
+ [Moip payment service](http://moip.com.br/) integration library.
4
4
 
5
5
  ## Installation
6
6
 
@@ -35,7 +35,7 @@ Moiper.configure do |config|
35
35
  end
36
36
  ```
37
37
 
38
- To make a payment request:
38
+ Then, you can request a new payment authorization:
39
39
 
40
40
  ```ruby
41
41
  payment = Moiper::Payment.new(
@@ -48,12 +48,18 @@ payment = Moiper::Payment.new(
48
48
 
49
49
  response = payment.checkout
50
50
 
51
- redirect_to response.checkout_url if response.success?
51
+ if response.success?
52
+ redirect_to response.checkout_url
53
+ else
54
+ render :text => response.errors.to_sentence
55
+ end
52
56
  ```
53
57
 
58
+ You need to redirect your user to the url returned by `response.checkout_url`. After the user accepts or rejects your payment request, he will be redirected to the `return_url` you specified on the payment. In case of possible errors during the payment request phase, you can access then through the `response.errors` method.
59
+
54
60
  ### Notifications
55
61
 
56
- Moip will notify your application with a POST, you can see more information at this url: http://labs.moip.com.br/referencia/nasp/
62
+ Moip will notify your application about order updates through [NASP](http://labs.moip.com.br/referencia/nasp/). Moiper provides a Rails controller helper to you can easily intercept these notifications with the `moip_notification` method.
57
63
 
58
64
  ```ruby
59
65
  class OrdersController < ApplicationController
@@ -61,15 +67,60 @@ class OrdersController < ApplicationController
61
67
 
62
68
  def confirm
63
69
  moip_notification do |notification|
64
- # Here you can update your database with updated information from Moip
70
+ # Here you can update your database with updated information.
71
+ # Ex:
65
72
  @order = Order.find_by_unique_identifier(notification.id)
66
73
  @order.update_attribute :status, notification.payment_status
67
74
  @order.save
75
+
76
+ # Moip will recognize the request as successfully if the statuses
77
+ # are 200, 201, 202, 203, 204, 205, 206 or 207.
78
+ head 200
68
79
  end
69
80
  end
70
81
  end
71
82
  ```
72
83
 
84
+ #### Payment Status
85
+
86
+ Following are the possible payment statuses returned by the `Moip::Notification#payment_status`.
87
+
88
+ * `authorized`
89
+ * `started`
90
+ * `payment_form_printed`
91
+ * `finished`
92
+ * `canceled`
93
+ * `under_analysis`
94
+ * `returned`
95
+ * `reimbursed`
96
+
97
+ #### Payment Methods
98
+
99
+ Following are the possible financial institutions returned by the `Moip::Notification#payment_method`.
100
+
101
+ * `payment_form`
102
+ * `credit_card`
103
+ * `debit`
104
+ * `debit_card`
105
+ * `financing`
106
+ * `moip_account`
107
+
108
+ #### Financial Institution
109
+
110
+ Following are the possible financial institutions returned by the `Moip::Notification#financial_institution`.
111
+
112
+ * MoIP
113
+ * Visa
114
+ * AmericanExpress
115
+ * Mastercard
116
+ * Diners
117
+ * BancoDoBrasil
118
+ * Bradesco
119
+ * Itau
120
+ * Hipercard
121
+ * Paggo
122
+ * Banrisul
123
+
73
124
  ## Disclaimer
74
125
 
75
126
  This gem is being developed in a workshop-like manner, during the trainee training program at Tagview, so the students can understand concepts such as open source development, TDD, API integration and documentation.
@@ -35,14 +35,14 @@ module Moiper
35
35
  xml.EnviarInstrucao {
36
36
  xml.InstrucaoUnica {
37
37
  xml.Razao description
38
- xml.IdProprio id
38
+ xml.IdProprio id if id
39
39
 
40
40
  xml.Valores {
41
41
  xml.Valor price, :moeda => "BRL"
42
42
  }
43
43
 
44
- xml.URLNotificacao notification_url
45
- xml.URLRetorno return_url
44
+ xml.URLNotificacao notification_url if notification_url
45
+ xml.URLRetorno return_url if return_url
46
46
  }
47
47
  }
48
48
  end
@@ -1,4 +1,4 @@
1
1
  module Moiper
2
2
  # Specify the current gem version
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
@@ -104,5 +104,20 @@ describe Moiper::Payment do
104
104
 
105
105
  it { doc.at_css("InstrucaoUnica > URLRetorno").text.should eq "http://example.org/thank_you" }
106
106
  it { doc.at_css("InstrucaoUnica > URLNotificacao").text.should eq "http://example.org/moip/notification" }
107
+
108
+ context "when no id is informed" do
109
+ before { payment.id = nil }
110
+ it { doc.at_css("InstrucaoUnica > IdProprio").should be_nil }
111
+ end
112
+
113
+ context "when no notification_url is informed" do
114
+ before { payment.notification_url = nil }
115
+ it { doc.at_css("InstrucaoUnica > URLNotificacao").should be_nil }
116
+ end
117
+
118
+ context "when no return_url is informed" do
119
+ before { payment.return_url = nil }
120
+ it { doc.at_css("InstrucaoUnica > URLRetorno").should be_nil }
121
+ end
107
122
  end
108
123
  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.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &2160905440 !ruby/object:Gem::Requirement
16
+ requirement: &2152746220 !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: *2160905440
24
+ version_requirements: *2152746220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2160904920 !ruby/object:Gem::Requirement
27
+ requirement: &2152745700 !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: *2160904920
35
+ version_requirements: *2152745700
36
36
  description: Moip payment service integration library.
37
37
  email:
38
38
  - rnavarro1@gmail.com
@@ -76,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
76
  version: '0'
77
77
  segments:
78
78
  - 0
79
- hash: 3233836298932843302
79
+ hash: 1028028193519655170
80
80
  required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  version: '0'
86
86
  segments:
87
87
  - 0
88
- hash: 3233836298932843302
88
+ hash: 1028028193519655170
89
89
  requirements: []
90
90
  rubyforge_project:
91
91
  rubygems_version: 1.8.11