bitpay-sdk 2.3.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2250870a264044316b2cc449c5b9e03adafc8e4
4
- data.tar.gz: fddc03975809e69617b2b5f0f489f21a7c4e9d63
3
+ metadata.gz: bf3789696b7fcf3ba7b4b11df9f4c2ff3cc2d5b7
4
+ data.tar.gz: 1b0a2652ea570a21344280083fb0ab89a9e62f54
5
5
  SHA512:
6
- metadata.gz: b379b23455f8df1a27b07d701c8c21153414463e5e14a45325e560890958233a23073ef2529fd6cfabf0dac36911647e4f08efc94db4f7fb2c856c6a5a2c8330
7
- data.tar.gz: 429da072948807f64bcf7a1a6600068cb08fabdc8928e48811be3bcfdba07a5527d032405be1fb2a2e3f4d13478f4b07f6f8ed3f9a52de92d9a68fc72b7d2671
6
+ metadata.gz: 02cf470eaa7f2a0c05739d2f7217ffbd48811522c0f85f1a7aa9917cb57cc29f903836a30bb5ef180592ad2652f5132df11eca0e54e261c2f2ca018ec8501b09
7
+ data.tar.gz: 2590256522eb97aa5290cd4ad2435633155b0391534c38d87cd24f1a90679ee7235291280fbc9bef5a6bb06ae7736a91f4a3c03ec569e472b29b7a1c21bf5eb5
data/GUIDE.md ADDED
@@ -0,0 +1,198 @@
1
+ # Using the BitPay Ruby Client Library
2
+ ## Prerequisites
3
+ You must have a BitPay merchant account to use this library. It's free to [sign-up for a BitPay merchant account](https://bitpay.com/start).
4
+
5
+ Once you have a BitPay merchant account, you will need [a working BitPay Access Token](/api/getting-access.html) – this can be done either [via the library](#pairing) or manually in [the BitPay Dashboard](https://bitpay.com/tokens).
6
+
7
+ ## Quick Start
8
+ ### Installation
9
+ ```bash
10
+ gem install bitpay-sdk
11
+ ```
12
+
13
+ In your Gemfile:
14
+
15
+ ```ruby
16
+ gem 'bitpay-sdk', :require => 'bitpay_sdk'
17
+ ```
18
+
19
+ Or directly:
20
+ ```ruby
21
+ require 'bitpay_sdk'
22
+ ```
23
+
24
+ ### Configuration
25
+ The bitpay client creates a cryptographically secure connection to your server by pairing an API code with keys generated by the library. The client can be initialized with pre-existing keys passed in as a pem file, or paired if initialized with a pem file and a tokens hash. Examples can be found in the cucumber step helpers.
26
+
27
+ ## Pairing
28
+ Most calls to the BitPay REST API require that your client is paired with the bitpay.com server. To pair with bitpay.com you need to have an approved merchant account.
29
+
30
+ Your client can be paired via the `pos` (point-of-sale) or `merchant` facade (or both). The `pos` facade allows for invoices to be created. The `merchant` facade has broader privileges to view all invoices, bills, and ledger entries, as well as to issue refunds. Consider the level of access required when you pair your client.
31
+
32
+ _For development or quick deployment purposes, consider the [BitPay Ruby Command-Line Interface](https://github.com/bitpay/ruby-cli) to simplify the deployment process_
33
+
34
+ ### Pairing Programatically
35
+
36
+ If you are developing a client with built-in pairing capability, you can pair programattically using the `pair_client` method. This method can be called in two ways:
37
+
38
+ * `pair_client()` will perform a client-initiated pairing, and will provide a pairing code that can be entered at https://bitpay.com/dashboard/merchant/api-tokens to assign either `merchant` or `pos` facade.
39
+ * `pair_client('pairing_code')` will complete a server-initiated pairing, when provided a pre-generated pairing code from https://bitpay.com/dashboard/merchant/api-tokens. In this case, the `pos` facade will be automatically assigned.
40
+
41
+ The example below demonstrates this using a locally generated PEM file using OpenSSL and the irb tool.
42
+
43
+ ```bash
44
+ $ gem install bitpay-sdk
45
+ Successfully installed bitpay-sdk-2.2.0
46
+ 1 gem installed
47
+ $ openssl ecparam -genkey -name secp256k1 -noout -out bitpaykey.pem
48
+ $ irb
49
+ 2.1.1 :001 > require 'bitpay_sdk'
50
+ => true
51
+ 2.1.1 :002 > client = BitPay::SDK::Client.new(api_uri: 'https://test.bitpay.com', pem: File.read('bitpaykey.pem'), insecure: true)
52
+ => #<BitPay::SDK::Client:0x000000019c6d40 @pem="---... @tokens={}>
53
+ 2.1.1 :003 > client.pair_client()
54
+ => {"data"=>[{"policies"=>[{"policy"=>"id", "method"=>"inactive", "params"=>["Tf49SFeiUAtytFEW2EUqZgWj32nP51PK73M"]}], "token"=>"BKQyVdaGQZAArdkkSuvtZN5gcN2355c8vXLj5eFPkfuK", "dateCreated"=>1422474475162, "pairingExpiration"=>1422560875162, "pairingCode"=>"Vy76yTh"}]}
55
+ ```
56
+
57
+ As described above, using the value from the `pairingCode` element, visit https://test.bitpay.com/api-tokens and search to register for the appropriate facade
58
+
59
+ ## General Usage
60
+
61
+ ### Initialize the client
62
+
63
+ ```ruby
64
+ client = BitPay::SDK::Client.new(pem: File.read('bitpaykey.pem')
65
+ ```
66
+
67
+ Optional parameters:
68
+ * `api_uri` - specify a different api endpoint (e.g. 'https://test.bitpay.com'). Ensure no trailing slash.
69
+ * `tokens` - pass a stored hash of bitpay API tokens
70
+ * `user-agent` - specify a custom user-agent value
71
+ * `debug: true` - enable HTTP request logging to $stdout
72
+ * `insecure: true` - disable HTTPs certificate validation (for local test environments)
73
+
74
+ ### Create a new bitcoin invoice
75
+
76
+ ```ruby
77
+ invoice = client.create_invoice (price: <price>, currency: <currency>)
78
+ ```
79
+
80
+ With invoice creation, `price` and `currency` are the only required fields. If you are sending a customer from your website to make a purchase, setting `redirectURL` will redirect the customer to your website when the invoice is paid.
81
+
82
+ Response will be a hash with information on your newly created invoice. Send your customer to the `url` to complete payment:
83
+
84
+ ```javascript
85
+ {
86
+ "url": "https://bitpay.com/invoice?id=NKaqMuZWy3BAcP77RdkEEv",
87
+ "paymentUrls": {
88
+ "BIP21": "bitcoin:mvYRECDxKPaPHnjNz9ZxiTpbx29xYNoRy4?amount=0.3745",
89
+ "BIP72": "bitcoin:mvYRECDxKPaPHnjNz9ZxiTpbx29xYNoRy4?amount=0.3745&r=https://bitpay.com/i/NKaqMuZWy3BAcP77RdkEEv",
90
+ "BIP72b": "bitcoin:?r=https://bitpay.com/i/NKaqMuZWy3BAcP77RdkEEv",
91
+ "BIP73": "https://bitpay.com/i/NKaqMuZWy3BAcP77RdkEEv"
92
+ },
93
+ "status": "new",
94
+ "btcPrice": "0.3745",
95
+ "btcDue": "0.3745",
96
+ "price": 148,
97
+ "currency": "USD",
98
+ "exRates": {
99
+ "USD": 395.20000000000005
100
+ },
101
+ "invoiceTime": 1415987168612,
102
+ "expirationTime": 1415988068612,
103
+ "currentTime": 1415987168629,
104
+ "guid": "438e8237-fff1-483c-81b4-dc7dba28922a",
105
+ "id": "NKaqMuZWy3BAcP77RdkEEv",
106
+ "transactions": [
107
+
108
+ ],
109
+ "btcPaid": "0.0000",
110
+ "rate": 395.2,
111
+ "exceptionStatus": false,
112
+ "token": "9kZgUXFb5AC6qMuLaMpP9WopbM8X2UjMhkphKKdaprRbSKgUJNE6JNTX8bGsmgxKKv",
113
+ "buyer": {
114
+ }
115
+ }
116
+ ```
117
+
118
+ There are many options available when creating invoices, which are listed in the [BitPay API documentation](https://bitpay.com/bitcoin-payment-gateway-api).
119
+
120
+ ### Get invoice status
121
+ The ruby library provides two methods for fetching an existing invoice:
122
+
123
+ ```ruby
124
+ # For authorized clients with a 'merchant' token
125
+ client.get_invoice(id: 'PvVhgBfA7wKPWhuVC24rJo')
126
+
127
+ # For non-authenticated clients (public facade)
128
+ # Returns the public subset of invoice fields
129
+ client.get_public_invoice(id: 'PvVhgBfA7wKPWhuVC24rJo')
130
+ ```
131
+
132
+ ### Create a refund request
133
+
134
+ Clients with a `merchant` token can initiate a refund request for a paid invoice:
135
+
136
+ ```ruby
137
+ client.refund_invoice(id: '6pbV13VBZfGFJ8BBmXmLZ8', params: {amount: 10, currency: 'USD'})
138
+ ```
139
+
140
+ Refund rules:
141
+
142
+ * Invoices cannot be refunded prior to 6 blockchain confirmations
143
+ * Invoices without `["flags"]["refundable"] == true` must specify a `bitcoinAddress` param (one was not provided as part of the transaction)
144
+ * Invoices that are paid in full must specify an `amount` and `currency` param to indicate the amount to be refunded
145
+
146
+ ### View Refund Requests
147
+
148
+ The ruby library provides two methods for viewing refund requests. Both require a `merchant` token.
149
+
150
+ ```ruby
151
+ # To get an array of all refunds against a specific invoice
152
+ client.get_all_refunds_for_invoice(id: 'PvVhgBfA7wKPWhuVC24rJo')
153
+
154
+ # To get a specific refund for a specific invoice
155
+ client.get_refund(id: 'JB49z2MsDH7FunczeyDS8j', request_id: '4evCrXq4EDXk4oqDXdWQhX')
156
+ ```
157
+
158
+ ### Make a HTTP request directly against the REST API
159
+
160
+ For API tasks which lack a dedicated library method, BitPay provides a method that will automatically apply the proper cryptographic parameters to a request.
161
+
162
+ ```ruby
163
+ client.send_request("GET", "/invoices/JB49z2MsDH7FunczeyDS8j", facade: 'merchant')
164
+ ```
165
+
166
+ Usage:
167
+ * Specify HTTP verb and REST endpoint
168
+ * Specifying a `facade` will fetch and apply the corresponding `token`
169
+ * Alternatively provide a `token` explicitly
170
+ * For `POST` requests, the `params` hash will be included as the message body
171
+
172
+ ## Testnet Usage
173
+
174
+ During development and testing, take advantage of the [Bitcoin TestNet](https://en.bitcoin.it/wiki/Testnet) by passing a custom `api_uri` option on initialization:
175
+
176
+ ```ruby
177
+ BitPay::SDK::Client.new({api_uri: "https://test.bitpay.com/api"})
178
+ ```
179
+
180
+ Note that in order to pair with testnet, you will need a pairing code from test.bitpay.com and will need to use the bitpay client with the --test option.
181
+
182
+ ## API Documentation
183
+
184
+ API Documentation is available on the [BitPay site](https://bitpay.com/api).
185
+
186
+ ## Running the Tests
187
+
188
+ In order to run the tests, you must have phantomjs installed and on your PATH.
189
+
190
+ The tests require that environment variables be set for the bitpay server, user name, and password. First run:
191
+
192
+ ```bash
193
+ $ source ./spec/set_constants.sh https://test.bitpay.com <yourusername> <yourpassword>
194
+ $ bundle install
195
+ $ bundle exec rake
196
+ ```
197
+
198
+ Tests are likely to run up against rate limiters on test.bitpay.com if used too frequently. Rake tasks which interact directly with BitPay will not run for the general public.
data/README.md CHANGED
@@ -3,203 +3,7 @@ Powerful, flexible, lightweight interface to the BitPay Bitcoin Payment Gateway
3
3
 
4
4
  The `bitpay-sdk` gem provides all the programattic tools required to implement a ruby client application for the BitPay REST API. For developers who prefer the ease of command-line pairing during the development or deployment process, BitPay provides a complementary [Ruby CLI gem](https://github.com/bitpay/ruby-cli) which can be used in conjunction with this gem.
5
5
 
6
- ## Installation
7
-
8
- ```bash
9
- gem install bitpay-sdk
10
- ```
11
-
12
- In your Gemfile:
13
-
14
- ```ruby
15
- gem 'bitpay-sdk', :require => 'bitpay_sdk'
16
- ```
17
-
18
- Or directly:
19
- ```ruby
20
- require 'bitpay_sdk'
21
- ```
22
-
23
- ## Configuration
24
-
25
- The bitpay client creates a cryptographically secure connection to your server by pairing an API code with keys generated by the library. The client can be initialized with pre-existing keys passed in as a pem file, or paired if initialized with a pem file and a tokens hash. Examples can be found in the cucumber step helpers.
26
-
27
- ## Client Setup
28
-
29
- ### Pairing with Bitpay.com
30
-
31
- Most calls to the BitPay REST API require that your client is paired with the bitpay.com server. To pair with bitpay.com you need to have an approved merchant account.
32
-
33
- Your client can be paired via the `pos` (point-of-sale) or `merchant` facade (or both). The `pos` facade allows for invoices to be created. The `merchant` facade has broader privileges to view all invoices, bills, and ledger entries, as well as to issue refunds. Consider the level of access required when you pair your client.
34
-
35
- _For development or quick deployment purposes, consider the [BitPay Ruby Command-Line Interface](https://github.com/bitpay/ruby-cli) to simplify the deployment process_
36
-
37
- ### Pairing Programattically
38
-
39
- If you are developing a client with built-in pairing capability, you can pair programattically using the `pair_client` method. This method can be called in two ways:
40
-
41
- * `pair_client()` will perform a client-initiated pairing, and will provide a pairing code that can be entered at https://bitpay.com/dashboard/merchant/api-tokens to assign either `merchant` or `pos` facade.
42
- * `pair_client('pairing_code')` will complete a server-initiated pairing, when provided a pre-generated pairing code from https://bitpay.com/dashboard/merchant/api-tokens. In this case, the `pos` facade will be automatically assigned.
43
-
44
- The example below demonstrates this using a locally generated PEM file using OpenSSL and the irb tool.
45
-
46
- ```bash
47
- $ gem install bitpay-sdk
48
- Successfully installed bitpay-sdk-2.2.0
49
- 1 gem installed
50
- $ openssl ecparam -genkey -name secp256k1 -noout -out bitpaykey.pem
51
- $ irb
52
- 2.1.1 :001 > require 'bitpay_sdk'
53
- => true
54
- 2.1.1 :002 > client = BitPay::SDK::Client.new(api_uri: 'https://test.bitpay.com', pem: File.read('bitpaykey.pem'), insecure: true)
55
- => #<BitPay::SDK::Client:0x000000019c6d40 @pem="---... @tokens={}>
56
- 2.1.1 :003 > client.pair_client()
57
- => {"data"=>[{"policies"=>[{"policy"=>"id", "method"=>"inactive", "params"=>["Tf49SFeiUAtytFEW2EUqZgWj32nP51PK73M"]}], "token"=>"BKQyVdaGQZAArdkkSuvtZN5gcN2355c8vXLj5eFPkfuK", "dateCreated"=>1422474475162, "pairingExpiration"=>1422560875162, "pairingCode"=>"Vy76yTh"}]}
58
- ```
59
-
60
- As described above, using the value from the `pairingCode` element, visit https://test.bitpay.com/api-tokens and search to register for the appropriate facade
61
-
62
- ## General Usage
63
-
64
- ### Initialize the client
65
-
66
- ```ruby
67
- client = BitPay::SDK::Client.new(pem: File.read('bitpaykey.pem')
68
- ```
69
-
70
- Optional parameters:
71
- * `api_uri` - specify a different api endpoint (e.g. 'https://test.bitpay.com'). Ensure no trailing slash.
72
- * `tokens` - pass a stored hash of bitpay API tokens
73
- * `user-agent` - specify a custom user-agent value
74
- * `debug: true` - enable HTTP request logging to $stdout
75
- * `insecure: true` - disable HTTPs certificate validation (for local test environments)
76
-
77
- ### Create a new bitcoin invoice
78
-
79
- ```ruby
80
- invoice = client.create_invoice (price: <price>, currency: <currency>)
81
- ```
82
-
83
- With invoice creation, `price` and `currency` are the only required fields. If you are sending a customer from your website to make a purchase, setting `redirectURL` will redirect the customer to your website when the invoice is paid.
84
-
85
- Response will be a hash with information on your newly created invoice. Send your customer to the `url` to complete payment:
86
-
87
- ```javascript
88
- {
89
- "url": "https://bitpay.com/invoice?id=NKaqMuZWy3BAcP77RdkEEv",
90
- "paymentUrls": {
91
- "BIP21": "bitcoin:mvYRECDxKPaPHnjNz9ZxiTpbx29xYNoRy4?amount=0.3745",
92
- "BIP72": "bitcoin:mvYRECDxKPaPHnjNz9ZxiTpbx29xYNoRy4?amount=0.3745&r=https://bitpay.com/i/NKaqMuZWy3BAcP77RdkEEv",
93
- "BIP72b": "bitcoin:?r=https://bitpay.com/i/NKaqMuZWy3BAcP77RdkEEv",
94
- "BIP73": "https://bitpay.com/i/NKaqMuZWy3BAcP77RdkEEv"
95
- },
96
- "status": "new",
97
- "btcPrice": "0.3745",
98
- "btcDue": "0.3745",
99
- "price": 148,
100
- "currency": "USD",
101
- "exRates": {
102
- "USD": 395.20000000000005
103
- },
104
- "invoiceTime": 1415987168612,
105
- "expirationTime": 1415988068612,
106
- "currentTime": 1415987168629,
107
- "guid": "438e8237-fff1-483c-81b4-dc7dba28922a",
108
- "id": "NKaqMuZWy3BAcP77RdkEEv",
109
- "transactions": [
110
-
111
- ],
112
- "btcPaid": "0.0000",
113
- "rate": 395.2,
114
- "exceptionStatus": false,
115
- "token": "9kZgUXFb5AC6qMuLaMpP9WopbM8X2UjMhkphKKdaprRbSKgUJNE6JNTX8bGsmgxKKv",
116
- "buyer": {
117
- }
118
- }
119
- ```
120
-
121
- There are many options available when creating invoices, which are listed in the [BitPay API documentation](https://bitpay.com/bitcoin-payment-gateway-api).
122
-
123
- ### Get invoice status
124
-
125
- The ruby library provides two methods for fetching an existing invoice:
126
-
127
- ```ruby
128
- # For authorized clients with a 'merchant' token
129
- client.get_invoice(id: 'PvVhgBfA7wKPWhuVC24rJo')
130
-
131
- # For non-authenticated clients (public facade)
132
- # Returns the public subset of invoice fields
133
- client.get_public_invoice(id: 'PvVhgBfA7wKPWhuVC24rJo')
134
- ```
135
-
136
- ### Create a refund request
137
-
138
- Clients with a `merchant` token can initiate a refund request for a paid invoice:
139
-
140
- ```ruby
141
- client.refund_invoice(id: '6pbV13VBZfGFJ8BBmXmLZ8', params: {amount: 10, currency: 'USD'})
142
- ```
143
-
144
- Refund rules:
145
-
146
- * Invoices cannot be refunded prior to 6 blockchain confirmations
147
- * Invoices without `["flags"]["refundable"] == true` must specify a `bitcoinAddress` param (one was not provided as part of the transaction)
148
- * Invoices that are paid in full must specify an `amount` and `currency` param to indicate the amount to be refunded
149
-
150
- ### View Refund Requests
151
-
152
- The ruby library provides two methods for viewing refund requests. Both require a `merchant` token.
153
-
154
- ```ruby
155
- # To get an array of all refunds against a specific invoice
156
- client.get_all_refunds_for_invoice(id: 'PvVhgBfA7wKPWhuVC24rJo')
157
-
158
- # To get a specific refund for a specific invoice
159
- client.get_refund(id: 'JB49z2MsDH7FunczeyDS8j', request_id: '4evCrXq4EDXk4oqDXdWQhX')
160
- ```
161
-
162
- ### Make a HTTP request directly against the REST API
163
-
164
- For API tasks which lack a dedicated library method, BitPay provides a method that will automatically apply the proper cryptographic parameters to a request.
165
-
166
- ```ruby
167
- client.send_request("GET", "/invoices/JB49z2MsDH7FunczeyDS8j", facade: 'merchant')
168
- ```
169
-
170
- Usage:
171
- * Specify HTTP verb and REST endpoint
172
- * Specifying a `facade` will fetch and apply the corresponding `token`
173
- * Alternatively provide a `token` explicitly
174
- * For `POST` requests, the `params` hash will be included as the message body
175
-
176
- ## Testnet Usage
177
-
178
- During development and testing, take advantage of the [Bitcoin TestNet](https://en.bitcoin.it/wiki/Testnet) by passing a custom `api_uri` option on initialization:
179
-
180
- ```ruby
181
- BitPay::SDK::Client.new({api_uri: "https://test.bitpay.com/api"})
182
- ```
183
-
184
- Note that in order to pair with testnet, you will need a pairing code from test.bitpay.com and will need to use the bitpay client with the --test option.
185
-
186
- ## API Documentation
187
-
188
- API Documentation is available on the [BitPay site](https://bitpay.com/api).
189
-
190
- ## Running the Tests
191
-
192
- In order to run the tests, you must have phantomjs installed and on your PATH.
193
-
194
- The tests require that environment variables be set for the bitpay server, user name, and password. First run:
195
-
196
- ```bash
197
- $ source ./spec/set_constants.sh https://test.bitpay.com <yourusername> <yourpassword>
198
- $ bundle install
199
- $ bundle exec rake
200
- ```
201
-
202
- Tests are likely to run up against rate limiters on test.bitpay.com if used too frequently. Rake tasks which interact directly with BitPay will not run for the general public.
6
+ ## [Getting Started &raquo;](http://dev.bitpay.com/guides/ruby.html)
203
7
 
204
8
  ## Found a bug?
205
9
  Let us know! Send a pull request or a patch. Questions? Ask! We're here to help. We will respond to all filed issues.
data/lib/bitpay/client.rb CHANGED
@@ -84,54 +84,6 @@ module BitPay
84
84
  response["data"]
85
85
  end
86
86
 
87
-
88
- ## Refund paid BitPay invoice
89
- #
90
- # If invoice["data"]["flags"]["refundable"] == true the a refund address was
91
- # provided with the payment and the refund_address parameter is an optional override
92
- #
93
- # Amount and Currency are required fields for fully paid invoices but optional
94
- # for under or overpaid invoices which will otherwise be completely refunded
95
- #
96
- # Requires merchant facade token
97
- #
98
- # @example
99
- # client.refund_invoice(id: 'JB49z2MsDH7FunczeyDS8j', params: {amount: 10, currency: 'USD', bitcoinAddress: '1Jtcygf8W3cEmtGgepggtjCxtmFFjrZwRV'})
100
- #
101
- def refund_invoice(id:, params:{})
102
- invoice = get_invoice(id: id)
103
- response = send_request("POST", "invoices/#{id}/refunds", facade: nil, token: invoice["token"], params: params)
104
- response["data"]
105
- end
106
-
107
- ## Get All Refunds for Invoice
108
- # Returns an array of all refund requests for a specific invoice,
109
- #
110
- # Requires merchant facade token
111
- #
112
- # @example:
113
- # client.get_all_refunds_for_invoice(id: 'JB49z2MsDH7FunczeyDS8j')
114
- #
115
- def get_all_refunds_for_invoice(id:)
116
- urlpath = "invoices/#{id}/refunds"
117
- invoice = get_invoice(id: id)
118
- response = send_request("GET", urlpath, facade: nil, token: invoice["token"])
119
- response["data"]
120
- end
121
-
122
- ## Get Refund
123
- # Requires merchant facade token
124
- #
125
- # @example:
126
- # client.get_refund(id: 'JB49z2MsDH7FunczeyDS8j', request_id: '4evCrXq4EDXk4oqDXdWQhX')
127
- #
128
- def get_refund(id:, request_id:)
129
- urlpath = "invoices/#{id}/refunds/#{request_id}"
130
- invoice = get_invoice(id: id)
131
- response = send_request("GET", urlpath, facade: nil, token: invoice["token"])
132
- response["data"]
133
- end
134
-
135
87
  ## Checks that the passed tokens are valid by
136
88
  # comparing them to those that are authorized by the server
137
89
  #
@@ -3,5 +3,5 @@
3
3
  # or https://github.com/bitpay/php-bitpay-client/blob/master/LICENSE
4
4
 
5
5
  module BitPay
6
- VERSION = '2.3.0'
6
+ VERSION = '2.3.1'
7
7
  end
data/spec/client_spec.rb CHANGED
@@ -19,12 +19,6 @@ describe BitPay::SDK::Client do
19
19
  .to_return(:status => 200, :body => tokens.to_json, :headers => {})
20
20
  stub_request(:get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID?token=MERCHANT_TOKEN").
21
21
  to_return(:body => get_fixture('invoices_{id}-GET.json'))
22
- stub_request(:get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID/refunds?token=MERCHANT_INVOICE_TOKEN").
23
- to_return(:body => get_fixture('invoices_{id}_refunds-GET.json'))
24
- stub_request(:get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID/refunds/TEST_REQUEST_ID?token=MERCHANT_INVOICE_TOKEN").
25
- to_return(:body => get_fixture('invoices_{id}_refunds-GET.json'))
26
- stub_request(:post, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID/refunds").
27
- to_return(:body => get_fixture('invoices_{id}_refunds-POST.json'))
28
22
  end
29
23
 
30
24
  describe "#initialize" do
@@ -115,51 +109,6 @@ describe BitPay::SDK::Client do
115
109
  end
116
110
  end
117
111
 
118
- describe '#refund_invoice' do
119
- subject { bitpay_client }
120
- before { stub_const('ENV', {'BITPAY_PEM' => PEM}) }
121
- it { is_expected.to respond_to(:refund_invoice) }
122
-
123
- it 'should get the token for the invoice' do
124
- bitpay_client.refund_invoice(id: 'TEST_INVOICE_ID')
125
- expect(WebMock).to have_requested :get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID?token=MERCHANT_TOKEN"
126
- end
127
-
128
- it 'should generate a POST to the invoices/refund endpoint' do
129
- bitpay_client.refund_invoice(id: 'TEST_INVOICE_ID')
130
- expect(WebMock).to have_requested :post, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID/refunds"
131
- end
132
- end
133
-
134
- describe '#get_all_refunds_for_invoice' do
135
- subject { bitpay_client }
136
- before {stub_const('ENV', {'BITPAY_PEM' => PEM})}
137
- it { is_expected.to respond_to(:get_all_refunds_for_invoice) }
138
-
139
- it 'should get the token for the invoice' do
140
- bitpay_client.get_all_refunds_for_invoice(id: 'TEST_INVOICE_ID')
141
- expect(WebMock).to have_requested :get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID?token=MERCHANT_TOKEN"
142
- end
143
- it 'should GET all refunds' do
144
- bitpay_client.get_all_refunds_for_invoice(id: 'TEST_INVOICE_ID')
145
- expect(WebMock).to have_requested :get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID/refunds?token=MERCHANT_INVOICE_TOKEN"
146
- end
147
- end
148
-
149
- describe '#get_refund' do
150
- subject { bitpay_client }
151
- before {stub_const('ENV', {'BITPAY_PEM' => PEM})}
152
- it { is_expected.to respond_to(:get_refund) }
153
- it 'should get the token for the invoice' do
154
- bitpay_client.get_refund(id: 'TEST_INVOICE_ID', request_id: 'TEST_REQUEST_ID')
155
- expect(WebMock).to have_requested :get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID?token=MERCHANT_TOKEN"
156
- end
157
- it 'should GET a single refund' do
158
- bitpay_client.get_refund(id: 'TEST_INVOICE_ID', request_id: 'TEST_REQUEST_ID')
159
- expect(WebMock).to have_requested :get, "#{BitPay::TEST_API_URI}/invoices/TEST_INVOICE_ID/refunds/TEST_REQUEST_ID?token=MERCHANT_INVOICE_TOKEN"
160
- end
161
- end
162
-
163
112
  describe "#verify_tokens" do
164
113
  subject { bitpay_client }
165
114
  before {stub_const('ENV', {'BITPAY_PEM' => PEM})}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitpay-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bitpay, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-19 00:00:00.000000000 Z
11
+ date: 2015-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -215,6 +215,7 @@ extra_rdoc_files: []
215
215
  files:
216
216
  - ".gitignore"
217
217
  - ".travis.yml"
218
+ - GUIDE.md
218
219
  - Gemfile
219
220
  - LICENSE.md
220
221
  - README.md