beanstream 1.0.0.rc1 → 1.0.0.rc2

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: abe714a2b18a419e345b2f43e52ce2aacfadc260
4
- data.tar.gz: 7a42a8d0ee4870b12d79abbec7ee171441885de7
3
+ metadata.gz: 6c9a72d6147bf8de094eb500954634b6ce9585a3
4
+ data.tar.gz: bf87fd124feaa654a9dd0f24a9007889b4795877
5
5
  SHA512:
6
- metadata.gz: a3d415ae9448fe7717e59085c686b8b3f1a114c5ffdfc58d8a8fc0b4167c6e9b59abe71aaa02305dceabe8313440f60d3253dcce13fd53d353a1f3a801b40e95
7
- data.tar.gz: fe7f78d9f92f5d06a198338dcc955007c72cc824e29865fffc84e6970745e4808efa2d088fef55996558693d48a02f537c627fd0d5cc1d47f63d3f6eb4bc2f41
6
+ metadata.gz: 91b68de4e5d298b720e98b82fbf2d87aab88d7b6e7e3dfa34a361e540a3816319ee25ec9192d7bfdfb7030af76258b607d163b74f91e398b86467079b89ce5a6
7
+ data.tar.gz: 864d5dcb81d8e90ab79079d0426d4c70bf93fd1c318abafca33af0d030bae12693d1e7ad2354f0fb9a8e46ad7914f93655fe6f7562924b57b7d1264d45b551a8
@@ -3,8 +3,8 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'beanstream'
6
- s.version = '1.0.0.rc1'
7
- s.date = '2015-08-14'
6
+ s.version = '1.0.0.rc2'
7
+ s.date = '2015-08-21'
8
8
  s.summary = "Beanstream Ruby SDK"
9
9
  s.description = "Accept payments using Beanstream and Ruby"
10
10
  s.authors = ["Brent Owens", "Colin Walker", "Tom Mengda"]
@@ -44,6 +44,7 @@ module Beanstream
44
44
  :code => "",
45
45
  :complete => true
46
46
  }
47
+ return request
47
48
  end
48
49
 
49
50
  #Payment Request Hash for making a payment with a credit card number
@@ -58,17 +59,19 @@ module Beanstream
58
59
  :cvd => "",
59
60
  :complete => true
60
61
  }
62
+ return request
61
63
  end
62
64
 
63
65
  #Payment Request Hash for making a payment with a Payment Profile
64
66
  def getProfilePaymentRequestTemplate()
65
67
  request = getPaymentRequestTemplate()
66
68
  request[:payment_method] = PaymentMethods::PROFILE
67
- request[:token] = {
69
+ request[:payment_profile] = {
68
70
  :customer_code => "",
69
71
  :card_id => 1,
70
72
  :complete => true
71
73
  }
74
+ return request
72
75
  end
73
76
 
74
77
  # Base Payment Request Hash for making a payments
@@ -11,6 +11,64 @@ module Beanstream
11
11
  "#{Beanstream.api_base_url()}/profiles/cards"
12
12
  end
13
13
 
14
+ def getCreateProfileWithCardTemplate()
15
+ request = getProfileTemplate()
16
+ request[:card] = {
17
+ :name => "",
18
+ :number => "",
19
+ :expiry_month => "",
20
+ :expiry_year => "",
21
+ :cvd => ""
22
+ }
23
+ return request
24
+ end
25
+
26
+ def getCreateProfileWithTokenTemplate()
27
+ request = getProfileTemplate()
28
+ request[:token] = {
29
+ :name => "",
30
+ :code => ""
31
+ }
32
+ return request
33
+ end
34
+
35
+ # a template for a Secure Payment Profile
36
+ def getProfileTemplate()
37
+ request = {
38
+ :language=> "",
39
+ :comments=> "",
40
+ :billing=> {
41
+ :name=> "",
42
+ :address_line1=> "",
43
+ :address_line2=> "",
44
+ :city=> "",
45
+ :province=> "",
46
+ :country=> "",
47
+ :postal_code=> "",
48
+ :phone_number=> "",
49
+ :email_address=> ""
50
+ },
51
+ :shipping=> {
52
+ :name=> "",
53
+ :address_line1=> "",
54
+ :address_line2=> "",
55
+ :city=> "",
56
+ :province=> "",
57
+ :country=> "",
58
+ :postal_code=> "",
59
+ :phone_number=> "",
60
+ :email_address=> ""
61
+ },
62
+ :custom=> {
63
+ :ref1=> "",
64
+ :ref2=> "",
65
+ :ref3=> "",
66
+ :ref4=> "",
67
+ :ref5=> ""
68
+ }
69
+ }
70
+ end
71
+
14
72
  def create_profile(profile)
15
73
  val = transaction_post("POST", profile_url, Beanstream.merchant_id, Beanstream.profiles_api_key, profile)
16
74
  end
@@ -14,7 +14,7 @@ module Beanstream
14
14
  enc = encode(merchant_id, api_key)
15
15
 
16
16
  path = Beanstream.api_host_url+url_path
17
- puts "processing the data: #{method} #{path} #{data.to_json}"
17
+ #puts "processing the data: #{method} #{path} #{data.to_json}"
18
18
 
19
19
  req_params = {
20
20
  :verify_ssl => OpenSSL::SSL::VERIFY_PEER,
@@ -46,7 +46,7 @@ module Beanstream
46
46
  end
47
47
 
48
48
  def handle_api_error(ex)
49
- puts "error: #{ex}"
49
+ #puts "error: #{ex}"
50
50
 
51
51
  http_status_code = ex.http_code
52
52
  message = ex.message
@@ -70,21 +70,24 @@ module Beanstream
70
70
  puts "token result: #{token}"
71
71
  assert(token != nil)
72
72
 
73
- result = Beanstream.PaymentsAPI.make_payment(
74
- {
75
- :order_number => PaymentsAPI.generateRandomOrderId("test"),
76
- :amount => 13.99,
77
- :payment_method => PaymentMethods::TOKEN,
78
- :token => {
79
- :name => "Bobby Test",
80
- :code => token,
81
- :complete => true
73
+ begin
74
+ result = Beanstream.PaymentsAPI.make_payment(
75
+ {
76
+ :order_number => PaymentsAPI.generateRandomOrderId("test"),
77
+ :amount => 13.99,
78
+ :payment_method => PaymentMethods::TOKEN,
79
+ :token => {
80
+ :name => "Bobby Test",
81
+ :code => token,
82
+ :complete => true
83
+ }
82
84
  }
83
- }
84
- )
85
- puts "result: #{result}"
86
- assert(PaymentsAPI.payment_approved(result))
87
-
85
+ )
86
+ puts "result: #{result}"
87
+ assert(PaymentsAPI.payment_approved(result))
88
+ rescue BeanstreamException => ex
89
+ assert(false)
90
+ end
88
91
  end
89
92
 
90
93
  #Card decline
@@ -106,6 +109,8 @@ module Beanstream
106
109
  :complete => true
107
110
  }
108
111
  })
112
+ puts "Success! TransactionID: #{result['id']}"
113
+
109
114
  rescue BeanstreamException => ex
110
115
  decline = true
111
116
  puts "Exception: #{ex.user_facing_message}"
@@ -120,36 +125,47 @@ module Beanstream
120
125
  #PreAuth card
121
126
  should "have successful credit card pre-auth and completion" do
122
127
 
123
- result = Beanstream.PaymentsAPI.make_payment(
124
- {
125
- :order_number => PaymentsAPI.generateRandomOrderId("test"),
126
- :amount => 100,
127
- :payment_method => PaymentMethods::CARD,
128
- :card => {
129
- :name => "Mr. Card Testerson",
130
- :number => "4030000010001234",
131
- :expiry_month => "07",
132
- :expiry_year => "22",
133
- :cvd => "123",
134
- :complete => false
128
+ decline = false
129
+ begin
130
+ result = Beanstream.PaymentsAPI.make_payment(
131
+ {
132
+ :order_number => PaymentsAPI.generateRandomOrderId("test"),
133
+ :amount => 100,
134
+ :payment_method => PaymentMethods::CARD,
135
+ :card => {
136
+ :name => "Mr. Card Testerson",
137
+ :number => "4030000010001234",
138
+ :expiry_month => "07",
139
+ :expiry_year => "22",
140
+ :cvd => "123",
141
+ :complete => false
142
+ }
135
143
  }
136
- }
137
- )
138
- puts "result: #{result}"
144
+ )
145
+ puts "result: #{result}"
146
+ assert(PaymentsAPI.payment_approved(result))
147
+ transaction_id = result['id']
148
+ puts "TransactionId: #{transaction_id}"
149
+
150
+ result = Beanstream.PaymentsAPI.complete_preauth(transaction_id, 59.50)
151
+ puts "completion result: #{result}"
152
+ assert(PaymentsAPI.payment_approved(result))
139
153
 
140
- assert(PaymentsAPI.payment_approved(result))
141
- transaction_id = result['id']
142
- puts "TransactionId: #{transaction_id}"
154
+ rescue BeanstreamException => ex
155
+ decline = true
156
+ puts "Exception: #{ex.user_facing_message}"
157
+ assert(ex.user_facing_message == "DECLINE")
158
+ assert(ex.is_user_error())
159
+ end
160
+
161
+ assert(!decline)
143
162
 
144
- result = Beanstream.PaymentsAPI.complete_preauth(transaction_id, 59.50)
145
- puts "completion result: #{result}"
146
- assert(PaymentsAPI.payment_approved(result))
147
163
  end
148
164
 
149
165
  #PreAuth token
150
166
  should "pre-auth and complete successfully with a legato token" do
151
167
 
152
- # 1) get token
168
+ # 1) get token (this is normally done in the client app)
153
169
  token = Beanstream.PaymentsAPI.get_legato_token(
154
170
  {
155
171
  :number => "4030000010001234",
@@ -162,26 +178,31 @@ module Beanstream
162
178
  assert(token != nil)
163
179
 
164
180
  # 2) make pre-auth
165
- result = Beanstream.PaymentsAPI.make_payment(
166
- {
167
- :order_number => PaymentsAPI.generateRandomOrderId("test"),
168
- :amount => 13.99,
169
- :payment_method => PaymentMethods::TOKEN,
170
- :token => {
171
- :name => "Bobby Test",
172
- :code => token,
173
- :complete => false
181
+ begin
182
+ result = Beanstream.PaymentsAPI.make_payment(
183
+ {
184
+ :order_number => PaymentsAPI.generateRandomOrderId("test"),
185
+ :amount => 13.99,
186
+ :payment_method => PaymentMethods::TOKEN,
187
+ :token => {
188
+ :name => "Bobby Test",
189
+ :code => token,
190
+ :complete => false
191
+ }
174
192
  }
175
- }
176
- )
177
- puts "result: #{result}"
178
- assert(PaymentsAPI.payment_approved(result))
179
- transaction_id = result['id']
193
+ )
194
+ puts "result: #{result}"
195
+ assert(PaymentsAPI.payment_approved(result))
196
+ transaction_id = result['id']
180
197
 
181
- # 3) complete purchase
182
- result = Beanstream.PaymentsAPI.complete_preauth(transaction_id, 10.33)
183
- puts "completion result: #{result}"
184
- assert(PaymentsAPI.payment_approved(result))
198
+ # 3) complete purchase
199
+ result = Beanstream.PaymentsAPI.complete_preauth(transaction_id, 10.33)
200
+ puts "completion result: #{result}"
201
+ assert(PaymentsAPI.payment_approved(result))
202
+ rescue BeanstreamException => ex
203
+ puts "card declined"
204
+ assert(false)
205
+ end
185
206
  end
186
207
 
187
208
  #Return
@@ -63,31 +63,70 @@ module Beanstream
63
63
 
64
64
  end
65
65
 
66
- # Profile CREATE
67
- should "have successfully created a profile" do
68
- result = Beanstream.ProfilesAPI.create_profile(
69
- {
70
- :card => {
71
- :name => "Bob Test",
72
- :number => "4030000010001234",
73
- :expiry_month => "07",
74
- :expiry_year => "22",
75
- :cvd => "123"
76
- },
77
- :billing => {
78
- :name => "Bob Test",
79
- :address_line1 => "123 Fake St.",
80
- :city => "Victoria",
81
- :province => "BC",
82
- :country => "CA",
83
- :postal_code => "v1v2v2",
84
- :phone_number => "12505551234",
85
- :email_address => "fake@example.com"
86
- }
87
- })
88
- assert(ProfilesAPI.profile_successfully_created(result))
89
- profile_id = result['customer_code']
90
- puts "Created profile with ID: #{profile_id}"
66
+ # Profile CREATE with CARD
67
+ should "have successfully created a profile with credit card" do
68
+
69
+ begin
70
+ profile = Beanstream.ProfilesAPI.getCreateProfileWithCardTemplate()
71
+ profile[:card][:name] = "Bob Test"
72
+ profile[:card][:number] = "4030000010001234"
73
+ profile[:card][:expiry_month] ="07"
74
+ profile[:card][:expiry_year] = "22"
75
+ profile[:card][:cvd] = "123"
76
+ profile[:billing][:name] = "Bob Test"
77
+ profile[:billing][:address_line1] = "123 Fake St."
78
+ profile[:billing][:city] = "Victoria"
79
+ profile[:billing][:province] = "BC"
80
+ profile[:billing][:country] = "CA"
81
+ profile[:billing][:postal_code] = "v1v2v2"
82
+ profile[:billing][:phone_number] = "12505551234"
83
+ profile[:billing][:email_address] = "fake@example.com"
84
+
85
+ result = Beanstream.ProfilesAPI.create_profile(profile)
86
+
87
+ assert(ProfilesAPI.profile_successfully_created(result))
88
+ profile_id = result['customer_code']
89
+ puts "Created profile with ID: #{profile_id}"
90
+ rescue BeanstreamException => ex
91
+ assert(false)
92
+ end
93
+ end
94
+
95
+ # Profile CREATE with TOKEN
96
+ should "have successfully created a profile with token" do
97
+
98
+ begin
99
+ token = Beanstream.PaymentsAPI.get_legato_token(
100
+ {
101
+ :number => "4030000010001234",
102
+ :expiry_month => "07",
103
+ :expiry_year => "22",
104
+ :cvd => "123"
105
+ }
106
+ )
107
+ puts "token result: #{token}"
108
+ assert(token != nil)
109
+
110
+ profile = Beanstream.ProfilesAPI.getCreateProfileWithTokenTemplate()
111
+ profile[:token][:name] = "Bob Test"
112
+ profile[:token][:code] = token
113
+ profile[:billing][:name] = "Bob Test"
114
+ profile[:billing][:address_line1] = "123 Fake St."
115
+ profile[:billing][:city] = "Victoria"
116
+ profile[:billing][:province] = "BC"
117
+ profile[:billing][:country] = "CA"
118
+ profile[:billing][:postal_code] = "v1v2v2"
119
+ profile[:billing][:phone_number] = "12505551234"
120
+ profile[:billing][:email_address] = "fake@example.com"
121
+
122
+ result = Beanstream.ProfilesAPI.create_profile(profile)
123
+
124
+ assert(ProfilesAPI.profile_successfully_created(result))
125
+ profile_id = result['customer_code']
126
+ puts "Created profile with ID: #{profile_id}"
127
+ rescue BeanstreamException => ex
128
+ assert(false)
129
+ end
91
130
  end
92
131
 
93
132
  # Profile DELETE
@@ -257,5 +296,68 @@ module Beanstream
257
296
  delete_card = Beanstream.ProfilesAPI.delete_profile_card(@profile,1)
258
297
  assert(delete_card['message']== 'Operation Successful')
259
298
  end
299
+
300
+ # Profile PAYMENT and PRE_AUTH
301
+ should "have successfully made payments with a profile" do
302
+
303
+ profile_id = ""
304
+ begin
305
+ result = Beanstream.ProfilesAPI.create_profile(
306
+ {
307
+ :card => {
308
+ :name => "Bob Test",
309
+ :number => "4030000010001234",
310
+ :expiry_month => "07",
311
+ :expiry_year => "22",
312
+ :cvd => "123"
313
+ },
314
+ :billing => {
315
+ :name => "Bob Test",
316
+ :address_line1 => "123 Fake St.",
317
+ :city => "Victoria",
318
+ :province => "BC",
319
+ :country => "CA",
320
+ :postal_code => "v1v2v2",
321
+ :phone_number => "12505551234",
322
+ :email_address => "fake@example.com"
323
+ }
324
+ })
325
+ assert(ProfilesAPI.profile_successfully_created(result))
326
+ profile_id = result['customer_code']
327
+ puts "Created profile with ID: #{profile_id}"
328
+ rescue BeanstreamException => ex
329
+ puts "Error: #{ex.user_facing_message()}"
330
+ assert(false)
331
+ end
332
+
333
+ begin
334
+ # payment
335
+ profile_payment = Beanstream.PaymentsAPI.getProfilePaymentRequestTemplate()
336
+ profile_payment[:payment_profile][:customer_code] = profile_id
337
+ profile_payment[:amount] = 77.50
338
+ result = Beanstream.PaymentsAPI.make_payment(profile_payment)
339
+ rescue BeanstreamException => ex
340
+ puts "Error: #{ex.user_facing_message()}"
341
+ assert(false) #declined
342
+ end
343
+
344
+ begin
345
+ # pre-auth
346
+ profile_payment = Beanstream.PaymentsAPI.getProfilePaymentRequestTemplate()
347
+ profile_payment[:amount] = 80
348
+ profile_payment[:payment_profile][:customer_code] = profile_id
349
+ profile_payment[:payment_profile][:complete] = false #false for pre-auth
350
+ result = Beanstream.PaymentsAPI.make_payment(profile_payment)
351
+
352
+ #complete pre-auth
353
+ result = Beanstream.PaymentsAPI.complete_preauth(result['id'], 40.50)
354
+ puts "completion result: #{result}"
355
+ assert(PaymentsAPI.payment_approved(result))
356
+ rescue BeanstreamException => ex
357
+ puts "Error: #{ex.user_facing_message()}"
358
+ assert(false) #declined
359
+ end
360
+ end
361
+
260
362
  end
261
363
  end
@@ -6,13 +6,11 @@ module Beanstream
6
6
 
7
7
  class ReportingAPITest < Test::Unit::TestCase
8
8
 
9
- =begin
10
9
  setup do
11
10
  Beanstream.merchant_id = "300200578"
12
11
  Beanstream.payments_api_key = "4BaD82D9197b4cc4b70a221911eE9f70"
13
12
  Beanstream.reporting_api_key = "4e6Ff318bee64EA391609de89aD4CF5d"
14
13
  end
15
- =end
16
14
 
17
15
  should "make reports url be the same" do
18
16
  assert_equal("/api/v1/reports", ReportingAPI.new.reports_url())
@@ -21,11 +19,14 @@ module Beanstream
21
19
  end
22
20
 
23
21
  class ReportingAPIIntegrationTest < Test::Unit::TestCase
24
- should "have successfully found my payments" do
25
-
22
+
23
+ setup do
26
24
  Beanstream.merchant_id = "300200578"
27
25
  Beanstream.payments_api_key = "4BaD82D9197b4cc4b70a221911eE9f70"
28
26
  Beanstream.reporting_api_key = "4e6Ff318bee64EA391609de89aD4CF5d"
27
+ end
28
+
29
+ should "have successfully found my payments" do
29
30
 
30
31
  prefix = SecureRandom.hex(4)
31
32
  #prepare a payment
@@ -79,9 +80,17 @@ module Beanstream
79
80
 
80
81
 
81
82
  #find transaction 1 from order number
82
- results = Beanstream.ReportingAPI.search_transactions(last3Hours, next3Hours, 1, 10,
83
- Criteria.new(Fields::OrderNumber, Operators::EQUALS, orderNum1)
84
- )
83
+ results = Beanstream.ReportingAPI.search_transactions(
84
+ last3Hours,
85
+ next3Hours,
86
+ 1,
87
+ 10,
88
+ Criteria.new(
89
+ Fields::OrderNumber,
90
+ Operators::EQUALS,
91
+ orderNum1
92
+ )
93
+ )
85
94
  assert(results != nil)
86
95
  puts "Report search by order number\n: #{results}"
87
96
  assert(results.length == 1, "Found #{results.length} instead")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beanstream
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brent Owens
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-08-14 00:00:00.000000000 Z
13
+ date: 2015-08-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client