prismpay 0.0.2 → 0.0.3

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.
Files changed (3) hide show
  1. data/lib/prismpay.rb +127 -74
  2. data/spec/prismpay_spec.rb +27 -19
  3. metadata +1 -1
data/lib/prismpay.rb CHANGED
@@ -13,6 +13,9 @@ module PrismPay
13
13
  # WSDL = "https://trans.myprismpay.com/MPWeb/services/TransactionService?wsdl"
14
14
  WSDL = File.expand_path("../TransactionService.xml", __FILE__)
15
15
 
16
+ ACH_CHECK_ACCT_TYPE = {"checking" => 1, "savings" => 2}
17
+ ACH_SEC_CODES = %w(POP, ARC, TEL, PPD, ICL, RCK, BOC)
18
+
16
19
  attr_accessor :acctid, :password
17
20
  attr_reader :client
18
21
 
@@ -29,6 +32,130 @@ module PrismPay
29
32
 
30
33
  end
31
34
 
35
+
36
+ ############################################################
37
+ # CreditCard SOAP methods:
38
+ # ###########################################################
39
+ # TODO: the profile methods should be refactored to be either for
40
+ # credit cards or for ACH transactions
41
+ ############################################################
42
+
43
+ def profile_sale(amount, profile_id, last_four, options = {})
44
+ response = @client.request :process_profile_sale do
45
+ http.auth.ssl.verify_mode :none
46
+ soap.body &build_profile_sale(amount, profile_id, last_four, options)
47
+ end
48
+ PrismCreditResponse.new(response)
49
+ end
50
+
51
+
52
+ def profile_retrieve(options = {})
53
+ # process a profile retrieve request
54
+ response = @client.request :process_profile_retrieve do
55
+ http.auth.ssl.verify_mode :none
56
+ soap.body &build_profile_retrieve(options)
57
+ end
58
+ end
59
+
60
+
61
+ def cc_purchase(amount, creditcard, options ={})
62
+ # process a credit card sale and right now return the savon response
63
+ # The savon response needs to be mapped back into the proper response
64
+ # fields
65
+
66
+ # need to merge the gateway instance options with the options
67
+
68
+ response = @client.request :process_cc_sale do
69
+ http.auth.ssl.verify_mode :none
70
+ soap.body &build_cc_sale_auth(amount, creditcard, options)
71
+ end
72
+
73
+ PrismCreditResponse.new(response)
74
+
75
+ end
76
+
77
+
78
+ def cc_authorize(amount, creditcard, options = {})
79
+ # reserve funds for future captures
80
+ response = @client.request :process_cc_auth do
81
+ http.auth.ssl.verify_mode :none
82
+ soap.body &build_cc_sale_auth(amount, creditcard, options)
83
+ end
84
+
85
+ PrismCreditResponse.new(response)
86
+ end
87
+
88
+
89
+ def cc_capture(amount, authorization, pp_txn_id, options = {})
90
+ # Captures reservered funds from previous auths
91
+ # need to put some validation into these methods before
92
+ # making the call to the build methods
93
+
94
+ response = @client.request :process_cc_post do
95
+ http.auth.ssl.verify_mode :none
96
+ soap.body &build_cc_capture(amount, authorization, pp_txn_id, options)
97
+ end
98
+
99
+ PrismCreditResponse.new(response)
100
+ end
101
+
102
+
103
+ def cc_void(amount, identification, pp_txn_id, options = {})
104
+ # voids previous transactions
105
+ response = @client.request :process_cc_void do
106
+ http.auth.ssl.verify_mode :none
107
+ soap.body &build_cc_void(amount, identification, pp_txn_id, options)
108
+ end
109
+
110
+ PrismCreditResponse.new(response)
111
+ end
112
+
113
+
114
+ def credit(amount, identification, pp_txn_id, options = {})
115
+ # applies credit back against previous transaction
116
+ response = @client.request :process_credit do
117
+ http.auth.ssl.verify_mode :none
118
+ soap.body &build_credit(amount, identification, pp_txn_id, options)
119
+ end
120
+
121
+ PrismCreditResponse.new(response)
122
+ end
123
+
124
+ ############################################################
125
+ # ACH Methods
126
+ ############################################################
127
+ # These should be for normal ACH transactions ie: transactions
128
+ # coming from a client into a prismpay vendor.
129
+ ############################################################
130
+
131
+ def ach_sale
132
+ end
133
+
134
+ def ach_credit
135
+ end
136
+
137
+
138
+ ############################################################
139
+ # ACH Ext Check Sale
140
+ ############################################################
141
+ # These will be used for checks coming in which will have
142
+ # disbursments to a third party as well
143
+ ############################################################
144
+
145
+ def ext_ach_sale()
146
+ end
147
+
148
+ def ext_ach_void
149
+ end
150
+
151
+ def ext_ach_refund
152
+ end
153
+
154
+ def ext_ach_consumer_disbursement
155
+ end
156
+
157
+ private
158
+
32
159
  def build_address(addr, type= "bill")
33
160
  # receives a hash that contains the keys for active_merchant
34
161
  # address and type which should be 'bill' or 'ship'
@@ -253,80 +380,6 @@ module PrismPay
253
380
  return xml_block
254
381
  end
255
382
 
256
-
257
- def profile_sale(amount, profile_id, last_four, options = {})
258
- response = @client.request :process_profile_sale do
259
- soap.body &build_profile_sale(amount, profile_id, last_four, options)
260
- end
261
- PrismCreditResponse.new(response)
262
- end
263
-
264
-
265
- def profile_retrieve(options = {})
266
- # process a profile retrieve request
267
- response = @client.request :process_profile_retrieve do
268
- soap.body &build_profile_retrieve(options)
269
- end
270
- end
271
-
272
-
273
- def cc_purchase(amount, creditcard, options ={})
274
- # process a credit card sale and right now return the savon response
275
- # The savon response needs to be mapped back into the proper response
276
- # fields
277
-
278
- # need to merge the gateway instance options with the options
279
-
280
- response = @client.request :process_cc_sale do
281
- soap.body &build_cc_sale_auth(amount, creditcard, options)
282
- end
283
-
284
- PrismCreditResponse.new(response)
285
-
286
- end
287
-
288
-
289
- def cc_authorize(amount, creditcard, options = {})
290
- # reserve funds for future captures
291
- response = @client.request :process_cc_auth do
292
- soap.body &build_cc_sale_auth(amount, creditcard, options)
293
- end
294
-
295
- PrismCreditResponse.new(response)
296
- end
297
-
298
-
299
- def cc_capture(amount, authorization, pp_txn_id, options = {})
300
- # Captures reservered funds from previous auths
301
- # need to put some validation into these methods before
302
- # making the call to the build methods
303
-
304
- response = @client.request :process_cc_post do
305
- soap.body &build_cc_capture(amount, authorization, pp_txn_id, options)
306
- end
307
-
308
- PrismCreditResponse.new(response)
309
- end
310
-
311
-
312
- def cc_void(amount, identification, pp_txn_id, options = {})
313
- # voids previous transactions
314
- response = @client.request :process_cc_void do
315
- soap.body &build_cc_void(identification, options)
316
- end
317
-
318
- PrismCreditResponse.new(response)
319
- end
320
-
321
-
322
- def credit(amount, identification, pp_txn_id, options = {})
323
- # applies credit back against previous transaction
324
- response = @client.request :process_credit do
325
- soap.body &build_credit(amount, identification, pp_txn_id, options)
326
- end
327
-
328
- PrismCreditResponse.new(response)
329
- end
330
383
 
331
384
  end # class PrismPay
332
385
 
@@ -166,18 +166,20 @@ describe PrismPay::PrismPay, "#build_address" do
166
166
 
167
167
  gw = PrismPay::PrismPay.new(addr1)
168
168
 
169
+ private_method = gw.method(:build_address)
170
+
169
171
  it "should return string" do
170
- gw.build_address(addr1).class.should eq(String)
172
+ private_method.call(addr1).class.should eq(String)
171
173
  end
172
174
 
173
175
  it "should return bill block for bad type" do
174
- gw.build_address(addr1).should =~ /billaddress/
175
- gw.build_address(addr1, {}).should =~ /billaddress/
176
- gw.build_address(addr1, "junk").should =~ /billaddress/
176
+ private_method.call(addr1).should =~ /billaddress/
177
+ private_method.call(addr1, {}).should =~ /billaddress/
178
+ private_method.call(addr1, "junk").should =~ /billaddress/
177
179
  end
178
180
 
179
181
  it "should return ship string for ship type" do
180
- gw.build_address(addr1, "ship").should =~ /shipaddress/
182
+ private_method.call(addr1, "ship").should =~ /shipaddress/
181
183
  end
182
184
 
183
185
  end
@@ -210,18 +212,21 @@ describe PrismPay::PrismPay, "#build_cc_sale_auth" do
210
212
 
211
213
  it "should return xml builder block for sale/auth" do
212
214
  gw = PrismPay::PrismPay.new(options)
213
- gw.build_cc_sale_auth(amount, cc, options).class.should eq(Proc)
215
+ private_method = gw.method(:build_cc_sale_auth)
216
+ private_method.call(amount, cc, options).class.should eq(Proc)
214
217
  end
215
218
 
216
219
  it "should take 1 arg" do
217
220
  gw = PrismPay::PrismPay.new(options)
218
- myproc = gw.build_cc_sale_auth(amount, cc, options)
221
+ private_method = gw.method(:build_cc_sale_auth)
222
+ myproc = private_method.call(amount, cc, options)
219
223
  myproc.arity.should > 0
220
224
  end
221
225
 
222
226
  it "should create xml object when passed to builder" do
223
227
  gw = PrismPay::PrismPay.new(options)
224
- myproc = gw.build_cc_sale_auth(amount, cc, options)
228
+ private_method = gw.method(:build_cc_sale_auth)
229
+ myproc = private_method.call(amount, cc, options)
225
230
  str = builder_wrapper(&myproc)
226
231
  str.should =~ /^<ccinfo[^&]*<\/ccinfo>$/ #match the object
227
232
  end
@@ -231,7 +236,8 @@ end
231
236
  describe PrismPay::PrismPay, "build_cc_void" do
232
237
  it "should return xml builder block for void" do
233
238
  gw = PrismPay::PrismPay.new({})
234
- gw.build_cc_void("", {}).class.should eq(Proc)
239
+ priv_method = gw.method(:build_cc_void)
240
+ priv_method.call("", "", "",{}).class.should eq(Proc)
235
241
  end
236
242
 
237
243
  end
@@ -239,14 +245,16 @@ end
239
245
  describe PrismPay::PrismPay, "build_cc_capture" do
240
246
  it "should return xml builder block for capture" do
241
247
  gw = PrismPay::PrismPay.new({})
242
- gw.build_cc_capture("", "", {}).class.should eq(Proc)
248
+ priv_method = gw.method(:build_cc_capture)
249
+ priv_method.call("", "", "",{}).class.should eq(Proc)
243
250
  end
244
251
  end
245
252
 
246
253
  describe PrismPay::PrismPay, "build_credit" do
247
254
  it "should return xml builder block for refund" do
248
255
  gw = PrismPay::PrismPay.new({})
249
- gw.build_credit("", "", {}).class.should eq(Proc)
256
+ priv_method = gw.method(:build_credit)
257
+ priv_method.call("", "", "", {}).class.should eq(Proc)
250
258
  end
251
259
  end
252
260
 
@@ -255,18 +263,18 @@ describe PrismPay::PrismPay, "cc_capture" do
255
263
  options = { }
256
264
  values = get_last_trans("./data~")
257
265
  options[:login] = "TEST0"
258
- options[:orderid] = values[:order_id]
266
+ orderid = values[:order_id]
259
267
  authcode = values[:historyid]
260
268
  amount = values[:amount]
261
269
 
262
270
  gw = PrismPay::PrismPay.new(options)
263
271
 
264
- response = gw.cc_capture(amount, authcode, options).soap_response
272
+ response = gw.cc_capture(amount, authcode, orderid, options).soap_response
265
273
 
266
274
  response.body[:multi_ref][:status].should =~ /Approved/
267
275
 
268
276
  if response.body[:multi_ref][:status] =~ /Approved/
269
- processed_trans "#{options[:orderid]}:#{authcode}:#{amount}\n", "./data~"
277
+ processed_trans "#{orderid}:#{authcode}:#{amount}\n", "./data~"
270
278
  end
271
279
  end
272
280
  end
@@ -276,19 +284,19 @@ describe PrismPay::PrismPay, "cc_void" do
276
284
  options = { }
277
285
  values = get_last_trans("./void~")
278
286
  options[:login] = "TEST0"
279
- options[:orderid] = values[:order_id]
287
+ orderid = values[:order_id]
280
288
  authcode = values[:historyid]
281
- options[:amount] = values[:amount]
282
- amount = options[:amount]
289
+ amount = values[:amount]
290
+
283
291
 
284
292
  gw = PrismPay::PrismPay.new(options)
285
293
 
286
- response = gw.cc_void(authcode, options).soap_response
294
+ response = gw.cc_void(amount ,authcode, orderid, options).soap_response
287
295
 
288
296
  response.body[:multi_ref][:status].should =~ /Approved/
289
297
 
290
298
  if response.body[:multi_ref][:status] =~ /Approved/
291
- processed_trans "#{options[:orderid]}:#{authcode}:#{amount}\n", "./void~"
299
+ processed_trans "#{orderid}:#{authcode}:#{amount}\n", "./void~"
292
300
  end
293
301
  end
294
302
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prismpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: