alpha_card 0.3.0 → 0.4.0
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 +4 -4
- data/.travis.yml +4 -4
- data/CHANGELOG.md +21 -3
- data/Gemfile +0 -2
- data/Gemfile.lock +6 -24
- data/README.md +115 -85
- data/ROADMAP.md +13 -9
- data/alpha_card.gemspec +3 -4
- data/lib/alpha_card.rb +44 -72
- data/lib/alpha_card/account.rb +51 -0
- data/lib/alpha_card/attribute.rb +337 -0
- data/lib/alpha_card/data/credit_card_codes.yml +54 -54
- data/lib/alpha_card/errors/invalid_attribute_format.rb +14 -0
- data/lib/alpha_card/errors/invalid_attribute_type.rb +14 -0
- data/lib/alpha_card/errors/invalid_attribute_value.rb +14 -0
- data/lib/alpha_card/errors/{invalid_object_error.rb → validation_error.rb} +1 -1
- data/lib/alpha_card/{alpha_card_object.rb → resource.rb} +14 -28
- data/lib/alpha_card/resources/billing.rb +29 -0
- data/lib/alpha_card/{objects → resources}/order.rb +8 -8
- data/lib/alpha_card/{objects → resources}/shipping.rb +15 -13
- data/lib/alpha_card/{alpha_card_response.rb → response.rb} +21 -6
- data/lib/alpha_card/transaction.rb +30 -0
- data/lib/alpha_card/transactions/auth.rb +18 -0
- data/lib/alpha_card/transactions/capture.rb +32 -0
- data/lib/alpha_card/transactions/credit.rb +18 -0
- data/lib/alpha_card/{objects → transactions}/refund.rb +9 -2
- data/lib/alpha_card/transactions/sale.rb +91 -0
- data/lib/alpha_card/transactions/update.rb +61 -0
- data/lib/alpha_card/transactions/validate.rb +21 -0
- data/lib/alpha_card/transactions/void.rb +26 -0
- data/lib/alpha_card/version.rb +1 -1
- data/spec/alpha_card/attribute_spec.rb +126 -0
- data/spec/alpha_card/response_spec.rb +8 -4
- data/spec/alpha_card/transactions/auth_spec.rb +43 -0
- data/spec/alpha_card/{objects → transactions}/capture_spec.rb +11 -12
- data/spec/alpha_card/transactions/credit_spec.rb +102 -0
- data/spec/alpha_card/{objects → transactions}/refund_spec.rb +4 -4
- data/spec/alpha_card/{objects → transactions}/sale_spec.rb +42 -41
- data/spec/alpha_card/{objects → transactions}/update_spec.rb +4 -4
- data/spec/alpha_card/transactions/validate_spec.rb +100 -0
- data/spec/alpha_card/{objects → transactions}/void_spec.rb +11 -11
- data/spec/spec_helper.rb +4 -0
- metadata +36 -47
- data/lib/alpha_card/errors/alpha_card_error.rb +0 -29
- data/lib/alpha_card/objects/account.rb +0 -48
- data/lib/alpha_card/objects/billing.rb +0 -31
- data/lib/alpha_card/objects/capture.rb +0 -51
- data/lib/alpha_card/objects/sale.rb +0 -82
- data/lib/alpha_card/objects/update.rb +0 -54
- data/lib/alpha_card/objects/void.rb +0 -45
- data/spec/alpha_card/objects/account_spec.rb +0 -20
- data/spec/alpha_card/objects/deprecated_methods_spec.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be339a6f92fcdf01468ecf0da9522e8a6369672c
|
4
|
+
data.tar.gz: 1ccab5e6c73ea8a0d98b18854a05e62c9ba807bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5aea65ee2cf8ac68bba49a46937c60c5d175204ff4d8b64431490a74ee3ef80d2ea0dc536e64c189d190275e22f41d90d8de382847160597e73e0e65b49bae25
|
7
|
+
data.tar.gz: ca8da9382717060a317522d35732ded4a68dc2e174abf2866bcf7e07c81bcecafc91efe405bae37e530c070e6e0d12497fbfbad19895366707b28245edf7583f
|
data/.travis.yml
CHANGED
@@ -3,12 +3,12 @@ before_install: gem install bundler
|
|
3
3
|
bundler_args: --without yard guard benchmarks
|
4
4
|
script: "rake spec"
|
5
5
|
rvm:
|
6
|
-
- 2.0.0
|
7
|
-
- 2.1.5
|
8
6
|
- 2.2.4
|
9
7
|
- 2.3.0
|
10
|
-
- jruby-9.0.
|
8
|
+
- jruby-9.0.5.0
|
9
|
+
- jruby-9.1.5.0
|
11
10
|
- ruby-head
|
11
|
+
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
12
12
|
matrix:
|
13
13
|
allow_failures:
|
14
|
-
- rvm: ruby-head
|
14
|
+
- rvm: ruby-head
|
data/CHANGELOG.md
CHANGED
@@ -2,11 +2,29 @@
|
|
2
2
|
|
3
3
|
Reverse Chronological Order:
|
4
4
|
|
5
|
+
## `0.4.0` (2016-10-07)
|
6
|
+
|
7
|
+
https://github.com/nbulaj/alpha_card/compare/0.3.0...0.4.0
|
8
|
+
|
9
|
+
### Breaking changes
|
10
|
+
* Dropped support of Ruby <= 2.2.2
|
11
|
+
* Removed deprecated methods (a.k.a. old transaction variables names)
|
12
|
+
* All transactions now returns `AlphaCard::Response` regardless of the operation result (except HTTP errors)
|
13
|
+
* `AlphaCard::Account` now works as global Alpha Card Merchant Account configuration (see docs)
|
14
|
+
|
15
|
+
### Other changes
|
16
|
+
* New AlphaCard transactions: `Auth`, `Credit`, `Validate`
|
17
|
+
* Own Attributes DSL with types, validations and other useful things
|
18
|
+
* Dropped `Virtus` dependency
|
19
|
+
* Fixed `check` payment (added new transaction variables for this type of operation)
|
20
|
+
* Credit Card authorization codes changes (removed dot at the end ot the message, improved `Response` API)
|
21
|
+
* Specs and documentation improvements
|
22
|
+
|
5
23
|
## `0.3.0` (2016-09-22)
|
6
24
|
|
7
25
|
https://github.com/nbulaj/alpha_card/compare/0.2.6...0.3.0
|
8
26
|
|
9
|
-
* Dropped support of Ruby 1.9.3
|
27
|
+
* Dropped support of Ruby 1.9.3 and jruby-1.7
|
10
28
|
* New AlphaCard transactions: `Void`, `Refund`, `Capture`, `Update`
|
11
29
|
* New AlphaCard transactions variables
|
12
30
|
* New AlphaCard transactions variables naming (**old is deprecated**)
|
@@ -44,9 +62,9 @@ https://github.com/nbulaj/alpha_card/compare/0.2.4...0.2.6
|
|
44
62
|
## `0.1.9` (2014-07-02)
|
45
63
|
|
46
64
|
* Errors handling
|
47
|
-
*
|
48
|
-
* Specs
|
65
|
+
* Code refactoring
|
49
66
|
* Documentation improvements
|
67
|
+
* Specs
|
50
68
|
* Fixes
|
51
69
|
|
52
70
|
## `0.1.0` (2014-06-25)
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,40 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
alpha_card (0.
|
5
|
-
rack (~>
|
6
|
-
virtus (~> 1.0, >= 1.0.5)
|
4
|
+
alpha_card (0.4.0)
|
5
|
+
rack (~> 2.0, >= 2.0)
|
7
6
|
|
8
7
|
GEM
|
9
8
|
remote: https://rubygems.org/
|
10
9
|
specs:
|
11
|
-
axiom-types (0.1.1)
|
12
|
-
descendants_tracker (~> 0.0.4)
|
13
|
-
ice_nine (~> 0.11.0)
|
14
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
15
|
-
coercible (1.0.0)
|
16
|
-
descendants_tracker (~> 0.0.1)
|
17
10
|
coveralls (0.8.15)
|
18
11
|
json (>= 1.8, < 3)
|
19
12
|
simplecov (~> 0.12.0)
|
20
13
|
term-ansicolor (~> 1.3)
|
21
14
|
thor (~> 0.19.1)
|
22
15
|
tins (>= 1.6.0, < 2)
|
23
|
-
descendants_tracker (0.0.4)
|
24
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
25
16
|
diff-lcs (1.2.5)
|
26
17
|
docile (1.1.5)
|
27
|
-
equalizer (0.0.11)
|
28
|
-
ice_nine (0.11.2)
|
29
18
|
json (2.0.2)
|
30
|
-
rack (
|
19
|
+
rack (2.0.1)
|
31
20
|
rack-test (0.6.3)
|
32
21
|
rack (>= 1.0)
|
33
22
|
rspec (3.5.0)
|
34
23
|
rspec-core (~> 3.5.0)
|
35
24
|
rspec-expectations (~> 3.5.0)
|
36
25
|
rspec-mocks (~> 3.5.0)
|
37
|
-
rspec-core (3.5.
|
26
|
+
rspec-core (3.5.4)
|
38
27
|
rspec-support (~> 3.5.0)
|
39
28
|
rspec-expectations (3.5.0)
|
40
29
|
diff-lcs (>= 1.2.0, < 2.0)
|
@@ -48,16 +37,10 @@ GEM
|
|
48
37
|
json (>= 1.8, < 3)
|
49
38
|
simplecov-html (~> 0.10.0)
|
50
39
|
simplecov-html (0.10.0)
|
51
|
-
term-ansicolor (1.
|
40
|
+
term-ansicolor (1.4.0)
|
52
41
|
tins (~> 1.0)
|
53
42
|
thor (0.19.1)
|
54
|
-
thread_safe (0.3.5)
|
55
43
|
tins (1.12.0)
|
56
|
-
virtus (1.0.5)
|
57
|
-
axiom-types (~> 0.1)
|
58
|
-
coercible (~> 1.0)
|
59
|
-
descendants_tracker (~> 0.0, >= 0.0.3)
|
60
|
-
equalizer (~> 0.0, >= 0.0.9)
|
61
44
|
|
62
45
|
PLATFORMS
|
63
46
|
ruby
|
@@ -68,7 +51,6 @@ DEPENDENCIES
|
|
68
51
|
coveralls
|
69
52
|
rack-test
|
70
53
|
rspec (~> 3.5)
|
71
|
-
virtus
|
72
54
|
|
73
55
|
BUNDLED WITH
|
74
|
-
1.
|
56
|
+
1.13.1
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ https://secure.alphacardgateway.com/merchants/resources/integration/integration_
|
|
20
20
|
If using bundler, first add 'alpha_card' to your Gemfile:
|
21
21
|
|
22
22
|
```ruby
|
23
|
-
gem 'alpha_card', '~> 0.
|
23
|
+
gem 'alpha_card', '~> 0.4'
|
24
24
|
```
|
25
25
|
|
26
26
|
And run:
|
@@ -32,50 +32,52 @@ bundle install
|
|
32
32
|
Otherwise simply install the gem:
|
33
33
|
|
34
34
|
```sh
|
35
|
-
gem install alpha_card
|
35
|
+
gem install alpha_card -v '0.4'
|
36
36
|
```
|
37
37
|
|
38
38
|
Dependencies required:
|
39
39
|
|
40
|
-
* ruby >= 2.0.0;
|
40
|
+
* ruby >= 2.0.0 or [jruby](https://github.com/jruby/jruby) >= 9.0.5.0;
|
41
41
|
|
42
|
-
##
|
42
|
+
## Configure
|
43
43
|
|
44
|
-
Alpha Card
|
44
|
+
In order to use Alpha Card Gateway API you need to have a Merchant account credentials such as `username` and `password`.
|
45
45
|
|
46
|
-
|
47
|
-
* Order
|
48
|
-
- Billing
|
49
|
-
- Shipping
|
50
|
-
* Sale
|
51
|
-
* Refund
|
52
|
-
* Void
|
53
|
-
* Capture
|
54
|
-
* Update
|
46
|
+
If your project will always use only one account, then you can configure gem as follows:
|
55
47
|
|
56
|
-
|
48
|
+
```ruby
|
49
|
+
# config/initializers/alpha_card.rb - for Rails projects
|
50
|
+
AlphaCard::Account.username = 'username'
|
51
|
+
AlphaCard::Account.password = 'password'
|
52
|
+
```
|
57
53
|
|
58
|
-
|
54
|
+
Another way is to pass the credentials as a last argument when creating some transactions or perform operations (it can be useful when you need to operate with multiple Alpha Card accounts):
|
59
55
|
|
60
|
-
|
61
|
-
|
56
|
+
```ruby
|
57
|
+
void = AlphaCard::Void.new(transaction_id: '312110')
|
58
|
+
void.process(username: 'demo', password: 'demo')
|
59
|
+
```
|
62
60
|
|
63
|
-
|
61
|
+
## Alpha Card Objects & Transactions
|
64
62
|
|
65
|
-
|
66
|
-
* password : `String`
|
63
|
+
Alpha Card operates with next objects:
|
67
64
|
|
68
|
-
|
65
|
+
* [Order](#order)
|
66
|
+
- [Billing](#billing)
|
67
|
+
- [Shipping](#shipping)
|
68
|
+
* [Sale](#sale)/[Authorization](#authorization)/[Credit](#credit)/[Validate](#validate)
|
69
|
+
* [Refund](#refund)
|
70
|
+
* [Void](#void)
|
71
|
+
* [Capture](#capture)
|
72
|
+
* [Update](#update)
|
69
73
|
|
70
|
-
|
71
|
-
AlphaCard::Account.new(username, password)
|
72
|
-
```
|
74
|
+
Let us consider each of them.
|
73
75
|
|
74
76
|
### Order
|
75
77
|
|
76
78
|
Order represents itself.
|
77
79
|
|
78
|
-
_Optional
|
80
|
+
_Optional attributes_:
|
79
81
|
|
80
82
|
* id : `String`
|
81
83
|
* description : `String`
|
@@ -88,14 +90,14 @@ _Optional fields_:
|
|
88
90
|
_Constructor_:
|
89
91
|
|
90
92
|
```ruby
|
91
|
-
AlphaCard::Order.new(
|
93
|
+
AlphaCard::Order.new(property: value, ...)
|
92
94
|
```
|
93
95
|
|
94
96
|
### Billing
|
95
97
|
|
96
98
|
Specify Billing information for Order.
|
97
99
|
|
98
|
-
_Optional
|
100
|
+
_Optional attributes_:
|
99
101
|
|
100
102
|
* first_name : `String`
|
101
103
|
* last_name : `String`
|
@@ -114,14 +116,14 @@ _Optional fields_:
|
|
114
116
|
_Constructor_:
|
115
117
|
|
116
118
|
```ruby
|
117
|
-
AlphaCard::Billing.new(
|
119
|
+
AlphaCard::Billing.new(property: value, ...)
|
118
120
|
```
|
119
121
|
|
120
122
|
### Shipping
|
121
123
|
|
122
|
-
|
124
|
+
Contains Shipping information for the Order.
|
123
125
|
|
124
|
-
_Optional
|
126
|
+
_Optional attributes_:
|
125
127
|
|
126
128
|
* first_name : `String`
|
127
129
|
* last_name : `String`
|
@@ -137,122 +139,133 @@ _Optional fields_:
|
|
137
139
|
_Constructor_:
|
138
140
|
|
139
141
|
```ruby
|
140
|
-
AlphaCard::Shipping.new(
|
142
|
+
AlphaCard::Shipping.new(property: value, ...)
|
141
143
|
```
|
142
144
|
|
143
145
|
### Sale
|
144
146
|
|
145
|
-
Sale is the main object of the Alpha Card Services. It
|
147
|
+
Sale transaction is the main object of the Alpha Card Services. It is used to processed common payments for orders.
|
146
148
|
|
147
|
-
_Required
|
149
|
+
_Required attributes_:
|
148
150
|
|
149
151
|
* card_expiration_date : `String` (format: `MMYY`)
|
150
152
|
* card_number : `String`
|
151
153
|
* amount : `String` (format: `x.xx`)
|
152
154
|
|
153
|
-
_Optional
|
155
|
+
_Optional attributes_:
|
156
|
+
|
154
157
|
* cvv : `String`
|
155
158
|
* payment : `String` (default: `'creditcard'`, values: `'creditcard'` or `'check'`)
|
156
159
|
* customer_receipt : `String` (values `'true'` or `'false'`)
|
160
|
+
* check_name : `String`
|
161
|
+
* check_aba : `String`
|
162
|
+
* check_account : `String`
|
163
|
+
* account_holder_type : `String` (values: `'business'` or `'personal'`)
|
164
|
+
* account_type : `String` (values: `'checking'` or `'savings'`)
|
165
|
+
* sec_code : `String` (values: `'PPD'`, `'WEB'`, `'TEL'`, or `'CCD'`)
|
157
166
|
|
158
167
|
_Constructor_:
|
159
168
|
|
160
169
|
```ruby
|
161
|
-
AlphaCard::Sale.new(
|
170
|
+
AlphaCard::Sale.new(property: value, ...)
|
162
171
|
```
|
163
172
|
|
164
|
-
To create the payment you must call *create(_alpha_card_order_
|
173
|
+
To create the payment you must call *create(_alpha_card_order_)* method:
|
165
174
|
|
166
175
|
```ruby
|
167
176
|
# ...
|
168
177
|
sale = AlphaCard::Sale.new(amount: 10)
|
169
|
-
|
178
|
+
response = sale.process(order)
|
170
179
|
|
171
|
-
# =>
|
180
|
+
# => #<AlphaCard::Response:0x1a0fda ...>
|
172
181
|
```
|
173
182
|
|
174
|
-
This method returns _true_ if sale was created successfully and raise an `AlphaCardError` exception if some of the fields is invalid.
|
175
|
-
|
176
183
|
### Refund
|
177
184
|
|
178
185
|
Represents refund transaction.
|
179
186
|
|
180
|
-
_Required
|
187
|
+
_Required attributes_:
|
181
188
|
|
182
|
-
* transaction_id : `String`
|
189
|
+
* transaction_id : `String` or `Integer`
|
183
190
|
|
184
|
-
_Optional
|
191
|
+
_Optional attributes_:
|
185
192
|
|
186
193
|
* amount : `String` (format: `x.xx`)
|
187
194
|
|
188
195
|
_Constructor_:
|
189
196
|
|
190
197
|
```ruby
|
191
|
-
AlphaCard::Refund.new(
|
198
|
+
AlphaCard::Refund.new(property: value, ...)
|
192
199
|
```
|
193
200
|
|
194
|
-
To create the refund transaction you must call *create
|
201
|
+
To create the refund transaction you must call *create* or *process* method:
|
195
202
|
|
196
203
|
```ruby
|
197
204
|
# ...
|
198
205
|
refund = AlphaCard::Refund.new(transaction_id: '12312312', amount: 10)
|
199
|
-
refund.
|
206
|
+
refund.process
|
200
207
|
```
|
201
208
|
|
202
209
|
### Void
|
203
210
|
|
204
211
|
Represents void transaction.
|
205
212
|
|
206
|
-
_Required
|
213
|
+
_Required attributes_:
|
207
214
|
|
208
|
-
* transaction_id : `String`
|
215
|
+
* transaction_id : `String` or `Integer`
|
209
216
|
|
210
217
|
_Constructor_:
|
211
218
|
|
212
219
|
```ruby
|
213
|
-
AlphaCard::Void.new(
|
220
|
+
AlphaCard::Void.new(property: value, ...)
|
214
221
|
```
|
215
222
|
|
216
|
-
To create the void transaction you must call *create
|
223
|
+
To create the void transaction you must call *create* or *process* method:
|
217
224
|
|
218
225
|
```ruby
|
219
226
|
# ...
|
220
227
|
void = AlphaCard::Void.new(transaction_id: '12312312')
|
221
|
-
void.create
|
228
|
+
void.create
|
222
229
|
```
|
223
230
|
|
224
231
|
### Capture
|
225
232
|
|
226
233
|
Represents capture transaction.
|
227
234
|
|
228
|
-
_Required
|
235
|
+
_Required attributes_:
|
229
236
|
|
230
|
-
* transaction_id : `String`
|
231
|
-
* amount : `String` (format: `
|
237
|
+
* transaction_id : `String` or `Integer`
|
238
|
+
* amount : `String` (format: `xx.xx`)
|
239
|
+
|
240
|
+
_Optional attributes_:
|
241
|
+
|
242
|
+
* tracking_number : `String`
|
243
|
+
* shipping_carrier : `String`
|
244
|
+
* order_id : `String`
|
232
245
|
|
233
246
|
_Constructor_:
|
234
247
|
|
235
248
|
```ruby
|
236
|
-
AlphaCard::Capture.new(
|
249
|
+
AlphaCard::Capture.new(property: value, ...)
|
237
250
|
```
|
238
251
|
|
239
|
-
To create the capture transaction you must call *create
|
252
|
+
To create the capture transaction you must call *create* or *process* method:
|
240
253
|
|
241
254
|
```ruby
|
242
255
|
# ...
|
243
256
|
capture = AlphaCard::Capture.new(transaction_id: '12312312', amount: '5.05')
|
244
|
-
capture.create
|
257
|
+
capture.create
|
245
258
|
```
|
246
259
|
|
247
260
|
### Update
|
248
261
|
|
249
262
|
Represents update transaction.
|
250
263
|
|
251
|
-
_Required
|
264
|
+
_Required attributes_:
|
252
265
|
|
253
|
-
* transaction_id : `String`
|
266
|
+
* transaction_id : `String` or `Integer`
|
254
267
|
|
255
|
-
_Optional
|
268
|
+
_Optional attributes_:
|
256
269
|
* shipping: `String`
|
257
270
|
* shipping_postal: `String`
|
258
271
|
* ship_from_postal: `String`
|
@@ -279,17 +292,29 @@ _Optional fields_:
|
|
279
292
|
_Constructor_:
|
280
293
|
|
281
294
|
```ruby
|
282
|
-
AlphaCard::Update.new(
|
295
|
+
AlphaCard::Update.new(property: value, ...)
|
283
296
|
```
|
284
297
|
|
285
|
-
To create update transaction you must call *create
|
298
|
+
To create update transaction you must call *create* or *process* method:
|
286
299
|
|
287
300
|
```ruby
|
288
301
|
# ...
|
289
302
|
update = AlphaCard::Update.new(tax: '10.02', shipping_carrier: 'ups', transaction_id: '66928')
|
290
|
-
update.
|
303
|
+
update.process
|
291
304
|
```
|
292
305
|
|
306
|
+
### Authorization
|
307
|
+
|
308
|
+
Has the same attributes and methods as `Sale` transaction.
|
309
|
+
|
310
|
+
### Credit
|
311
|
+
|
312
|
+
Has the same attributes and methods as `Sale` transaction.
|
313
|
+
|
314
|
+
### Validate
|
315
|
+
|
316
|
+
Has the same attributes and methods as `Sale` transaction, except `amount` — there is no need in it.
|
317
|
+
|
293
318
|
## Example of usage
|
294
319
|
|
295
320
|
Create AlphaCard sale (pay for the order):
|
@@ -298,7 +323,9 @@ Create AlphaCard sale (pay for the order):
|
|
298
323
|
require 'alpha_card'
|
299
324
|
|
300
325
|
def create_payment
|
301
|
-
|
326
|
+
# Setup merchant account credentials
|
327
|
+
AlphaCard::Account.username = 'demo'
|
328
|
+
AlphaCard::Account.password = 'password'
|
302
329
|
|
303
330
|
billing = AlphaCard::Billing.new(email: 'test@example.com', phone: '+801311313111')
|
304
331
|
shipping = AlphaCard::Shipping.new(address_1: '33 N str', city: 'New York', state: 'NY', zip_code: '132')
|
@@ -307,14 +334,17 @@ def create_payment
|
|
307
334
|
|
308
335
|
# Format of amount: "XX.XX" ("%.2f" % Float)
|
309
336
|
sale = AlphaCard::Sale.new(card_epiration_date: '0117', card_number: '4111111111111111', amount: '1.50', cvv: '123')
|
310
|
-
|
311
|
-
#=>
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
337
|
+
response = sale.create(order)
|
338
|
+
#=> #<AlphaCard::Response:0x1a0fda ...>
|
339
|
+
if response.success?
|
340
|
+
puts "Order payed successfully: transaction ID = #{response.transaction_id}"
|
341
|
+
true
|
342
|
+
else
|
343
|
+
puts "Error message: #{e.response.message}"
|
344
|
+
puts "CVV response: #{e.response.cvv_response}"
|
345
|
+
puts "AVS response: #{e.response.avs_response}"
|
346
|
+
false
|
347
|
+
end
|
318
348
|
end
|
319
349
|
```
|
320
350
|
|
@@ -323,26 +353,16 @@ end
|
|
323
353
|
_Note_: take a look at the `amount` of the Order. It's format must be 'xx.xx'. All the information about variables formats
|
324
354
|
can be found on _Alpha Card Payment Gateway Integration Portal_ -> _Direct Post API_ -> _Documentation_ -> _Transaction Variables_
|
325
355
|
|
326
|
-
|
327
|
-
|
328
|
-
To raise some exceptions do the next:
|
356
|
+
To simulate request that returns an error do the next:
|
329
357
|
|
330
358
|
* to cause a declined message, pass an amount less than 1.00;
|
331
359
|
* to trigger a fatal error message, pass an invalid card number;
|
332
360
|
* to simulate an AVS match, pass 888 in the address1 field, 77777 for zip;
|
333
361
|
* to simulate a CVV match, pass 999 in the cvv field.
|
334
362
|
|
335
|
-
Example of exception:
|
336
|
-
|
337
|
-
```ruby
|
338
|
-
...
|
339
|
-
2.1.1 :019 > sale.create(order, account)
|
340
|
-
AlphaCard::AlphaCardError: Invalid Credit Card Number REFID:127145481
|
341
|
-
```
|
342
|
-
|
343
363
|
## AlphaCard Response
|
344
364
|
|
345
|
-
`
|
365
|
+
`AlphaCard::Response` contains all the necessary information about Alpha Card Gateway response. You can use the following API:
|
346
366
|
|
347
367
|
* `.text` — textual response of the Alpha Card Gateway;
|
348
368
|
* `.message` — response message be response code;
|
@@ -354,6 +374,16 @@ AlphaCard::AlphaCardError: Invalid Credit Card Number REFID:127145481
|
|
354
374
|
* `.cvv_response` — CVV response message;
|
355
375
|
* `.avs_response` — AVS response message.
|
356
376
|
|
377
|
+
## Testing
|
378
|
+
|
379
|
+
It is recommended to mock Alpha Card gem functionality, but if you want to create a "real" specs, then you can use Alpha Card Services testing account:
|
380
|
+
|
381
|
+
```ruby
|
382
|
+
AlphaCard::Account.use_demo_credentials!
|
383
|
+
```
|
384
|
+
|
385
|
+
Or you can pass the next credentials with any request: `{ username: 'demo', password: 'password' }`
|
386
|
+
|
357
387
|
## Contributing
|
358
388
|
|
359
389
|
You are very welcome to help improve alpha_card if you have suggestions for features that other people can use.
|