pin_up 0.5.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85124623f3cd5ff6833e59d2c8ad52cd31df24c1
4
- data.tar.gz: d7075d9da3852bab3db4fc2bbbd7afd102ccf76c
3
+ metadata.gz: 3a3e2632a57eb0ab9926a95fe146f83f43bca2da
4
+ data.tar.gz: 5e33cb060cdda7e2ed56a0d0847593c9b350ff34
5
5
  SHA512:
6
- metadata.gz: b8b80ac154a3ac828c654628707d4dd42f98e83832648194450bdba1cfd41bd737edf3a3517ff86162ad1e7e0080f198620a582232deb32b7692ffaeee357ec9
7
- data.tar.gz: 2fd697737e9ff57c7179b88c264efeef3701467a5451871597fc60229ff2729eb26a42e89f728d0cf42fbb7268be04c26dcbf8e96d9e71a5594db9f1416428d9
6
+ metadata.gz: b11cb5ab4da229ea354fe35fccf88ebc1f524bd822c1102f8bf7a03782ac265c59e9fb0553c9279456094537ff60314caabafb212f8dbbc5d5abd0893448ba5a
7
+ data.tar.gz: 71788c32b013479e8b6ffbf7cda8a333cc27c2ecb641066891d6c33619d185ae30207432687d90d5523062f61f9cda392daac4be32d697a50329db3735c599d1
@@ -5,4 +5,4 @@ env:
5
5
  Z7eqtE7oQVsmz2iw45MULCsk9Ff028nsPHJjX04GskTCeqhn2AgeFbNEjB7d
6
6
  1mlrJDZyRggBW2ENK6Kti7p196hB1WfH52SYl9dZSLABWDW9oIKo46HjymNP
7
7
  J9RERcoevctKkRGUCvyx0kvX1uN4iI56OJPXFAsYA+w0zAm/1/c=
8
- script: rspec spec
8
+ script: bundle exec rspec spec
data/Gemfile CHANGED
@@ -1,10 +1,7 @@
1
1
  source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- gem "httparty"
5
2
 
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
3
+ gem "httparty"
4
+
8
5
  group :development do
9
6
  gem "shoulda", ">= 0"
10
7
  gem "rdoc", "~> 3.12"
@@ -14,6 +11,7 @@ group :development do
14
11
  gem "simplecov", ">= 0"
15
12
  gem "webmock"
16
13
  gem "vcr"
17
- gem 'guard-rspec'
18
- gem 'terminal-notifier-guard'
14
+ gem "guard-rspec"
15
+ gem "terminal-notifier-guard"
16
+ gem "capybara"
19
17
  end
@@ -10,6 +10,12 @@ GEM
10
10
  addressable (2.3.5)
11
11
  atomic (1.1.10)
12
12
  builder (3.2.2)
13
+ capybara (2.1.0)
14
+ mime-types (>= 1.16)
15
+ nokogiri (>= 1.3.3)
16
+ rack (>= 1.0.0)
17
+ rack-test (>= 0.5.4)
18
+ xpath (~> 2.0)
13
19
  coderay (1.0.9)
14
20
  crack (0.4.0)
15
21
  safe_yaml (~> 0.9.0)
@@ -60,6 +66,7 @@ GEM
60
66
  rb-kqueue (>= 0.2)
61
67
  lumberjack (1.0.3)
62
68
  method_source (0.8.1)
69
+ mime-types (1.25)
63
70
  minitest (4.7.5)
64
71
  multi_json (1.7.7)
65
72
  multi_xml (0.5.4)
@@ -77,6 +84,8 @@ GEM
77
84
  method_source (~> 0.8)
78
85
  slop (~> 3.4)
79
86
  rack (1.5.2)
87
+ rack-test (0.6.2)
88
+ rack (>= 1.0)
80
89
  rake (10.1.0)
81
90
  rb-fsevent (0.9.3)
82
91
  rb-inotify (0.9.0)
@@ -114,11 +123,14 @@ GEM
114
123
  webmock (1.12.3)
115
124
  addressable (>= 2.2.7)
116
125
  crack (>= 0.3.2)
126
+ xpath (2.0.0)
127
+ nokogiri (~> 1.3)
117
128
 
118
129
  PLATFORMS
119
130
  ruby
120
131
 
121
132
  DEPENDENCIES
133
+ capybara
122
134
  guard-rspec
123
135
  httparty
124
136
  jeweler (~> 1.8.4)
data/README.md CHANGED
@@ -140,6 +140,53 @@ Will return a card_token that can be stored against a customer.
140
140
 
141
141
  Only use this method if you're comfortable sending card details to your server - otherwise you can use a form that Pin provides (https://pin.net.au/docs/guides/payment-forms) and get the card_token that way.
142
142
 
143
+ ## Receipts
144
+
145
+ One of the things I've found lacking with Pin is the ability to generate a receipt for a sale. So I've added this functionality into pin_up.
146
+
147
+ At the moment basic receipt creation from a succesful charge is supported, however, I'd like to build out this feature and include failed transactions and refunds.
148
+
149
+ There are two ways to go about creating and viewing / sharing a receipt.
150
+
151
+ #### Rendering a receipt as HTML
152
+
153
+ ##### Basic Usage:
154
+
155
+ The following will return a HTML receipt for you to do with as you wish.
156
+
157
+ @charge = Pin::Charges.find("token")
158
+ @company_details = ["ABC Widgets","123 Fake Street Melbourne","VIC 3000","ABN: 12 345 678 910"]
159
+ @receipt = Pin::Receipt.new(@charge, @company_details)
160
+ @receipt.render()
161
+
162
+ Your "comapny_details" can be replaced with whatever information you wish to be displayed at the top right hand side (see `tmp/receipt.html`).
163
+
164
+ ##### Advanced Usage:
165
+
166
+ There are four additional options that can be passed to `Pin::Receipt.new`.
167
+
168
+ The first is the path to your logo should you wish to include it in the footer.
169
+
170
+ The second is some additional payment information you might want to add (such as tax, fee or discount information). This can be done by passing a hash in as argument 4 eg:
171
+
172
+ payment_options = {}
173
+ payment_options["fee"] = {"name" => "late fee", "amount" => "$10.00"}
174
+ payment_options["tax"] = {"name" => "GST", "amount" => "$10.00"}
175
+ payment_options["discount"] = {"name" => "Member Discount", "amount" => "$10.00"}
176
+
177
+ A path to a custom receipt template can be passed in as the 5th argument, while a path that you would like the receipt to be saved to can be passed in as the 6th argument.
178
+
179
+
180
+ ##### Saving a receipt
181
+
182
+ To save a receipt it's exactky the same as above, just call `save` instead of render. By default, a receipt will be saved into `tmp/receipt.html` unless a path is specified.
183
+
184
+ If you would like a PDF receipt, you should be able to "print as PDF" from a browser dialog.
185
+
186
+ ##### Custom receipt template
187
+
188
+ If you would like you can use a custom receipt template to suit your branding or design needs. To get an idea of which variables are available, take a look at `/views/receit.html.erb`
189
+
143
190
  ## Testing localy
144
191
  Create a YAML file under 'spec' called 'test_data.yml' and add in:
145
192
 
@@ -151,10 +198,10 @@ run
151
198
 
152
199
  rspec spec/*.rb
153
200
 
154
- ## Todo
201
+ ## To do
155
202
 
203
+ * Flesh out receipts - handle failed transactions and refunds
156
204
  * Validate a response before it gets sent to Pin (eg. Update customer)
157
- * Pagination
158
205
 
159
206
  ## Contributing to pin_up
160
207
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.1
@@ -1,10 +1,12 @@
1
1
  require 'httparty'
2
2
  require 'json'
3
+ require 'erb'
3
4
 
4
5
  require 'pin_up/base'
5
6
  require 'pin_up/card'
6
7
  require 'pin_up/charge'
7
8
  require 'pin_up/customer'
8
9
  require 'pin_up/refund'
10
+ require 'pin_up/receipt'
9
11
 
10
12
  require 'pin_up/pin_errors'
@@ -0,0 +1,64 @@
1
+ module Pin
2
+ ##
3
+ # This class lets you generate and save receipts from a Pin::Charge.
4
+ class Receipt < Pin::Base
5
+
6
+ ##
7
+ # Create a new Pin::Receipt instance
8
+ # Args:
9
+ # charge: Charge hash from Pin::Charge.find
10
+ # your_details: (Array), an Array of details you would like displayed about you or your company
11
+ # payment_options: (Hash), If your charge had extra components (such as late fees or discounts or taxes) pass them in here as a hash eg:
12
+ #
13
+ # payment_options = {}
14
+ # payment_options["fee"] = {"name" => "late fee", "amount" => "$10.00"}
15
+ # payment_options["tax"] = {"name" => "GST", "amount" => "$10.00"}
16
+ # payment_options["discount"] = {"name" => "Member Discount", "amount" => "$10.00"}
17
+ #
18
+ # template_path: (String), path to your own template if you wish to design your own receipt (take a look at the included template for variable names)
19
+ # save_path: (String), path that the HTML receipt will be saved
20
+ def initialize(charge, your_details, logo_path='', payment_options={}, template_path = 'views/receipt.html.erb', save_path = 'tmp/receipt.html')
21
+ @charge = charge
22
+ @logo = logo_path
23
+ @details = your_details
24
+ @payment_options = payment_options
25
+ @template_path = template_path if template_path
26
+ @save_path = save_path if save_path
27
+ @amount = number_to_currency(@charge["amount"], @charge["currency"])
28
+ end
29
+
30
+ ##
31
+ # Renders the HTML receipt but does not save it -- useful for showing on screen
32
+ def render
33
+ template = ERB.new File.new(@template_path).read, nil, "%"
34
+ template.result(binding)
35
+ end
36
+
37
+ ##
38
+ # Renders and saves the HTML receipt -- useful for emailing receipt
39
+ def save
40
+ receipt = File.new(@save_path, 'w')
41
+ receipt.write(render)
42
+ receipt.close
43
+ end
44
+
45
+ protected
46
+
47
+ ##
48
+ # Converts a string to currency format.
49
+ # Args:
50
+ # number: (String) a dollar, pound or euro value in 'cents'
51
+ # currency: (String) a string representation of a currency as provided by Pin
52
+ def number_to_currency(number, currency)
53
+ case currency
54
+ when 'GBP'
55
+ symbol = '£'
56
+ when 'EUR'
57
+ symbol = '€'
58
+ else
59
+ symbol = '$'
60
+ end
61
+ "#{symbol}#{"%0.2f" % (number.to_f / 100)}"
62
+ end
63
+ end
64
+ end
@@ -2,14 +2,15 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: pin_up 0.6.1 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "pin_up"
8
- s.version = "0.5.0"
9
+ s.version = "0.6.1"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
12
  s.authors = ["Daniel Nitsikopoulos"]
12
- s.date = "2013-08-18"
13
+ s.date = "2013-11-07"
13
14
  s.description = "A Ruby gem wrapper for the pin-payments (pin.net.au) API"
14
15
  s.email = "dnitza@gmail.com"
15
16
  s.extra_rdoc_files = [
@@ -42,6 +43,7 @@ Gem::Specification.new do |s|
42
43
  "lib/pin_up/charge.rb",
43
44
  "lib/pin_up/customer.rb",
44
45
  "lib/pin_up/pin_errors.rb",
46
+ "lib/pin_up/receipt.rb",
45
47
  "lib/pin_up/refund.rb",
46
48
  "pin_up.gemspec",
47
49
  "spec/base_spec.rb",
@@ -49,13 +51,15 @@ Gem::Specification.new do |s|
49
51
  "spec/charges_spec.rb",
50
52
  "spec/customers_spec.rb",
51
53
  "spec/errors_spec.rb",
54
+ "spec/receipt_spec.rb",
52
55
  "spec/refund_spec.rb",
53
- "spec/spec_helper.rb"
56
+ "spec/spec_helper.rb",
57
+ "views/receipt.html.erb"
54
58
  ]
55
59
  s.homepage = "http://github.com/dNitza/pin_up"
56
60
  s.licenses = ["MIT"]
57
61
  s.require_paths = ["lib"]
58
- s.rubygems_version = "2.0.3"
62
+ s.rubygems_version = "2.1.4"
59
63
  s.summary = "A Ruby gem wrapper for the pin-payments (pin.net.au) API"
60
64
 
61
65
  if s.respond_to? :specification_version then
@@ -73,6 +77,7 @@ Gem::Specification.new do |s|
73
77
  s.add_development_dependency(%q<vcr>, [">= 0"])
74
78
  s.add_development_dependency(%q<guard-rspec>, [">= 0"])
75
79
  s.add_development_dependency(%q<terminal-notifier-guard>, [">= 0"])
80
+ s.add_development_dependency(%q<capybara>, [">= 0"])
76
81
  s.add_runtime_dependency(%q<httparty>, [">= 0"])
77
82
  else
78
83
  s.add_dependency(%q<httparty>, [">= 0"])
@@ -86,6 +91,7 @@ Gem::Specification.new do |s|
86
91
  s.add_dependency(%q<vcr>, [">= 0"])
87
92
  s.add_dependency(%q<guard-rspec>, [">= 0"])
88
93
  s.add_dependency(%q<terminal-notifier-guard>, [">= 0"])
94
+ s.add_dependency(%q<capybara>, [">= 0"])
89
95
  s.add_dependency(%q<httparty>, [">= 0"])
90
96
  end
91
97
  else
@@ -100,6 +106,7 @@ Gem::Specification.new do |s|
100
106
  s.add_dependency(%q<vcr>, [">= 0"])
101
107
  s.add_dependency(%q<guard-rspec>, [">= 0"])
102
108
  s.add_dependency(%q<terminal-notifier-guard>, [">= 0"])
109
+ s.add_dependency(%q<capybara>, [">= 0"])
103
110
  s.add_dependency(%q<httparty>, [">= 0"])
104
111
  end
105
112
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Receipt", :vcr, class: Pin::Receipt do
4
+ before(:each) do
5
+ Pin::Base.new(ENV["PIN_SECRET"], :test)
6
+ @charge = Pin::Charges.find("ch_0kdOMXP7gG0_W_Vh8qAWdA")
7
+ @company_details = ["ABC Widgets", "123 Fake Street Melbourne","VIC 3000", "ABN: 12 345 678 910"]
8
+ @receipt = Pin::Receipt.new(@charge, @company_details)
9
+ end
10
+
11
+ it "should generate an HTML receipt given a charge" do
12
+ @receipt.render().should include(@charge["token"])
13
+ end
14
+
15
+ it "should save an index.html file for the receipt" do
16
+ @receipt.save()
17
+ File.read('tmp/receipt.html').should include(@charge["token"])
18
+ end
19
+
20
+ it "should format a number as a currency" do
21
+ expect @receipt.send(:number_to_currency, 1989, 'null').should match(/[$,£,€]\d{1,}[.]\d{2}/)
22
+ end
23
+
24
+ it "should print payment option information" do
25
+ payment_options = {}
26
+ payment_options["fee"] = {"name" => "late fee", "amount" => "$10.00"}
27
+ payment_options["tax"] = {"name" => "GST", "amount" => "$10.00"}
28
+ payment_options["discount"] = {"name" => "Member Discount", "amount" => "$10.00"}
29
+
30
+ @detailed_receipt = Pin::Receipt.new(@charge, @company_details, nil, payment_options)
31
+ expect @detailed_receipt.render().should include("GST")
32
+ end
33
+
34
+ end
@@ -4,14 +4,16 @@ SimpleCov.start
4
4
  require 'rubygems'
5
5
  require 'bundler/setup'
6
6
  require 'webmock/rspec'
7
+ require 'capybara/rspec'
7
8
  require 'vcr'
8
9
 
9
10
  require "net/https"
10
11
  require "uri"
11
12
 
12
13
  ## Uncomment to load in a .yml with your pin key
13
- ENV.update YAML.load(File.read(File.expand_path("../test_data.yml", __FILE__)))
14
- #gem
14
+ # ENV.update YAML.load(File.read(File.expand_path("../test_data.yml", __FILE__)))
15
+
16
+ # require pin_up gem
15
17
  require 'pin_up'
16
18
 
17
19
  RSpec.configure do |config|
@@ -28,5 +30,5 @@ VCR.configure do |c|
28
30
  c.cassette_library_dir = "spec/vcr"
29
31
  c.hook_into :webmock
30
32
  c.allow_http_connections_when_no_cassette = true
31
- c.filter_sensitive_data('<key>') {'W_VrFld7oc9BnC4pOdQxmw'}
33
+ c.filter_sensitive_data('<key>') {ENV["PIN_SECRET"]}
32
34
  end
@@ -0,0 +1,217 @@
1
+ <html>
2
+ <head>
3
+ <title><%= @details[0] %></title>
4
+ <style type="text/css">
5
+ body{
6
+ font-family: "Helvetica", arial, sans-serif;
7
+ text-align: center;
8
+ background: #eee;
9
+ font-size: 14px;
10
+ }
11
+ a{
12
+ color:#4b4b4b;
13
+ text-decoration: none;
14
+ }
15
+ a:hover{
16
+ color: #ccc;
17
+ }
18
+ h3,h5,h6{
19
+ color:#9ba4ae;
20
+ margin: 0px;
21
+ }
22
+ h5{
23
+ font-size: 14px;
24
+ margin: 20px 0 5px 0;
25
+ }
26
+ h3{
27
+ font-size: 16px;
28
+ }
29
+ h4{
30
+ color:#4b4b4b;
31
+ font-weight: 600;
32
+ margin:0;
33
+ /*font-size: 14px;*/
34
+ }
35
+ h2{
36
+ color:#4b4b4b;
37
+ text-align: left;
38
+ }
39
+ .half p{
40
+ /*margin: 20px 0 5px 0;*/
41
+ }
42
+ .full{
43
+ width:100%;
44
+ float: left;
45
+ overflow: hidden;
46
+ }
47
+ #receipt{
48
+ width:640px;
49
+ margin: 0 auto;
50
+ border:1px solid #ccc;
51
+ border-top:5px solid #4b4b4b;
52
+ padding: 15px;
53
+ overflow: hidden;
54
+ background: #fff;
55
+ margin-top: 55px;
56
+ }
57
+ .logo{
58
+ padding: 15px 0 25px 0;
59
+ }
60
+ .half{
61
+ width:50%;
62
+ overflow: hidden;
63
+ }
64
+ .right{
65
+ float: right;
66
+ text-align: right;
67
+ }
68
+ .left{
69
+ float: left;
70
+ text-align: left;
71
+ }
72
+ .center{
73
+ text-align: center;
74
+ }
75
+ section{
76
+ width:100%;
77
+ overflow: hidden;
78
+ float: left;
79
+ }
80
+ .text-right{
81
+ text-align: right;
82
+ color:#9ba4ae;
83
+ }
84
+ .break hr{
85
+ border-top: 2px solid #eee;
86
+ border-left:none;
87
+ }
88
+ table{
89
+ text-align: left;
90
+ font-size: 14px;
91
+ }
92
+ table th{
93
+ border-bottom: 2px solid #eee;
94
+ padding: 10px 0;
95
+ }
96
+ table td{
97
+ padding: 10px 0;
98
+ }
99
+ table td:first-child{
100
+ width:570px;
101
+ font-weight: 600;
102
+ padding-right: 90px;
103
+ }
104
+ .discount{
105
+ color: green;
106
+ }
107
+ .fee{
108
+ color: red;
109
+ }
110
+ .charge td{
111
+ border-bottom: 1px solid #eee;
112
+ }
113
+ </style>
114
+ </head>
115
+ <body>
116
+ <div id="receipt">
117
+ <header>
118
+ <div class="full center">
119
+ <h1><%= @details[0] %></h1>
120
+ </div>
121
+ <div class="full center">
122
+ <h3>Receipt</h3>
123
+ </div>
124
+ </header>
125
+
126
+ <section class="company-details">
127
+ <div class="half left">
128
+ <h5>Date</h5>
129
+ <h4><%= Time.parse(@charge["created_at"]).strftime("%d/%m/%Y") %></h4>
130
+
131
+ <h5>Prepared for</h5>
132
+ <h4><%= @charge["card"]["name"] %></h4>
133
+ <p><%= @charge["card"]["address_line1"] %></p>
134
+ <p><%= @charge["card"]["address_line2"] %></p>
135
+ <p><%= @charge["card"]["address_city"] %></p>
136
+ <p><%= @charge["card"]["address_state"] %></p>
137
+ <p><%= @charge["card"]["address_country"] %></p>
138
+ </div>
139
+ <div class="half right">
140
+ <h5>Prepared by</h5>
141
+ <h4><%= @details[0] %></h4>
142
+ <% @details.drop(1).each do |detail| %>
143
+ <p><%= detail %></p>
144
+ <% end %>
145
+ </div>
146
+ </section>
147
+
148
+ <section class="break">
149
+ <hr />
150
+ </section>
151
+
152
+ <section class="summary">
153
+ <h2>Invoice Summary</h2>
154
+ <table>
155
+ <tr>
156
+ <th>Description</th>
157
+ <th>Amount</th>
158
+ </tr>
159
+ <tr class="charge">
160
+ <td>
161
+ <p><%= @charge["description"] %></p>
162
+ <small><%= @charge["token"] %></small>
163
+ </td>
164
+ <td><%= @amount %></td>
165
+ </tr>
166
+ <tr>
167
+ <td class="text-right">Subtotal</td>
168
+ <td><%= @amount %></td>
169
+ </tr>
170
+ <% if @payment_options["discount"] %>
171
+ <tr class="discount">
172
+ <td class="text-right"><%= @payment_options["discount"]["name"] %></td>
173
+ <td><%= @payment_options["discount"]["amount"] %></td>
174
+ </tr>
175
+ <% end %>
176
+
177
+ <% if @payment_options["fee"] %>
178
+ <tr class="fee">
179
+ <td class="text-right"><%= @payment_options["fee"]["name"] %></td>
180
+ <td><%= @payment_options["fee"]["amount"] %></td>
181
+ </tr>
182
+ <% end %>
183
+
184
+ <% if @payment_options["tax"] %>
185
+ <tr>
186
+ <td class="text-right"><%= @payment_options["tax"]["name"] %></td>
187
+ <td><%= @payment_options["tax"]["amount"] %></td>
188
+ </tr>
189
+ <% end %>
190
+
191
+ <tr>
192
+ <td class="text-right">Total</td>
193
+ <td>$<%= @charge["amount"].to_f / 100.00 %></td>
194
+ </tr>
195
+ </table>
196
+ </section>
197
+
198
+ <section class="break">
199
+ <hr />
200
+ </section>
201
+
202
+ <section class="info">
203
+ <h2 class="center">That's it!</h2>
204
+ <p>If this paid invoice is correct, you do not need to take any further action.</p>
205
+ <p>Your credit card <em><%= @charge["card"]["display_number"] %></em> has been charged.</p>
206
+ <p>Payment processed by <a href="https://pin.net.au" target="_blank">Pin Payments.</a></p>
207
+ <p>Thank You.</p>
208
+ <% unless @logo == '' %>
209
+ <div class="full center">
210
+ <img src="<%= @logo %>" class="logo">
211
+ </div>
212
+ <% end %>
213
+ </section>
214
+
215
+ </div>
216
+ </body>
217
+ </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pin_up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Nitsikopoulos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-18 00:00:00.000000000 Z
11
+ date: 2013-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: capybara
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: httparty
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -211,6 +225,7 @@ files:
211
225
  - lib/pin_up/charge.rb
212
226
  - lib/pin_up/customer.rb
213
227
  - lib/pin_up/pin_errors.rb
228
+ - lib/pin_up/receipt.rb
214
229
  - lib/pin_up/refund.rb
215
230
  - pin_up.gemspec
216
231
  - spec/base_spec.rb
@@ -218,8 +233,10 @@ files:
218
233
  - spec/charges_spec.rb
219
234
  - spec/customers_spec.rb
220
235
  - spec/errors_spec.rb
236
+ - spec/receipt_spec.rb
221
237
  - spec/refund_spec.rb
222
238
  - spec/spec_helper.rb
239
+ - views/receipt.html.erb
223
240
  homepage: http://github.com/dNitza/pin_up
224
241
  licenses:
225
242
  - MIT
@@ -240,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
240
257
  version: '0'
241
258
  requirements: []
242
259
  rubyforge_project:
243
- rubygems_version: 2.0.3
260
+ rubygems_version: 2.1.4
244
261
  signing_key:
245
262
  specification_version: 4
246
263
  summary: A Ruby gem wrapper for the pin-payments (pin.net.au) API