pay_simple 0.0.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 +7 -0
- data/.gitignore +5 -0
- data/.rspec +1 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +35 -0
- data/LICENSE.txt +22 -0
- data/README.md +100 -0
- data/Rakefile +1 -0
- data/lib/ps.rb +32 -0
- data/lib/ps/api.rb +80 -0
- data/lib/ps/api/json.rb +78 -0
- data/lib/ps/base.rb +22 -0
- data/lib/ps/enumerations.rb +191 -0
- data/lib/ps/exceptions.rb +5 -0
- data/lib/ps/object.rb +48 -0
- data/lib/ps/objects/ach_account.rb +34 -0
- data/lib/ps/objects/credit_card_account.rb +38 -0
- data/lib/ps/objects/customer.rb +79 -0
- data/lib/ps/objects/customer_account.rb +25 -0
- data/lib/ps/objects/payment.rb +73 -0
- data/lib/ps/objects/payment_status_filter.rb +6 -0
- data/lib/ps/objects/recurring_payment.rb +60 -0
- data/lib/ps/objects/recurring_payment_filter.rb +26 -0
- data/lib/ps/objects/user.rb +10 -0
- data/lib/ps/response.rb +83 -0
- data/lib/ps/util.rb +28 -0
- data/lib/ps/util/hash.rb +17 -0
- data/lib/ps/util/state.rb +15 -0
- data/lib/ps/util/states.yml +263 -0
- data/lib/ps/util/string.rb +15 -0
- data/paysimple.gemspec +19 -0
- data/spec/config.yml.example +13 -0
- data/spec/factories/ach_account.rb +11 -0
- data/spec/factories/credit_card_accounts.rb +11 -0
- data/spec/factories/customer_accounts.rb +7 -0
- data/spec/factories/customers.rb +18 -0
- data/spec/factories/payment.rb +12 -0
- data/spec/factories/recurring_payment.rb +25 -0
- data/spec/ps/api/json_spec.rb +12 -0
- data/spec/ps/api_spec.rb +53 -0
- data/spec/ps/base_spec.rb +40 -0
- data/spec/ps/format_spec.rb +16 -0
- data/spec/ps/object_spec.rb +35 -0
- data/spec/ps/objects/ach_account_spec.rb +57 -0
- data/spec/ps/objects/credit_card_account_spec.rb +69 -0
- data/spec/ps/objects/customer_account_spec.rb +43 -0
- data/spec/ps/objects/customer_spec.rb +153 -0
- data/spec/ps/objects/payment_spec.rb +98 -0
- data/spec/ps/objects/recurring_payment_spec.rb +145 -0
- data/spec/ps/objects/user_spec.rb +14 -0
- data/spec/ps/response_spec.rb +39 -0
- data/spec/ps/util/hash_spec.rb +33 -0
- data/spec/ps/util/states_spec.rb +25 -0
- data/spec/ps/util/string_spec.rb +21 -0
- data/spec/ps/util_spec.rb +30 -0
- data/spec/spec_functions.rb +155 -0
- data/spec/spec_helper.rb +22 -0
- metadata +156 -0
data/lib/ps/util.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module PS
|
2
|
+
module Util
|
3
|
+
##
|
4
|
+
# objects contained within PS::Response.ps_object have a '__type' attribute
|
5
|
+
# that signals the subclass of PS::Object they represent. This constant
|
6
|
+
# provides access to what class needs to be instantiated relative to what
|
7
|
+
# paysimple return.
|
8
|
+
PS_OBJECTS = {
|
9
|
+
"PsCustomer" => PS::Customer,
|
10
|
+
"PsCustomerAccount" => PS::CustomerAccount,
|
11
|
+
"PsCreditCardAccount" => PS::CreditCardAccount,
|
12
|
+
"PsAchAccount" => PS::AchAccount,
|
13
|
+
"PsPayment" => PS::Payment,
|
14
|
+
"PsDefaultCustomerAccount" => PS::CustomerAccount,
|
15
|
+
"PsRecurringPayment" => PS::RecurringPayment
|
16
|
+
}
|
17
|
+
|
18
|
+
def self.instantiate_ps_objects(ps_objects)
|
19
|
+
case ps_objects
|
20
|
+
when Array
|
21
|
+
ps_objects.map { |obj| instantiate_ps_objects(obj) }
|
22
|
+
when Hash
|
23
|
+
klass_name = ps_objects.delete("__type").scan(/[a-zA-Z]+:/)[0].delete(":")
|
24
|
+
PS_OBJECTS[klass_name].new(ps_objects.symbolize_keys)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/ps/util/hash.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Hash
|
2
|
+
def camel_case_keys
|
3
|
+
camel_case_hash = {}
|
4
|
+
self.each do |key, value|
|
5
|
+
camel_case_hash[key.to_s.to_camel_case] = value
|
6
|
+
end
|
7
|
+
self.replace(camel_case_hash)
|
8
|
+
end
|
9
|
+
|
10
|
+
def snake_case_keys
|
11
|
+
snake_case_hash = {}
|
12
|
+
self.each do |key, value|
|
13
|
+
snake_case_hash[key.to_s.to_snake_case] = value
|
14
|
+
end
|
15
|
+
self.replace(snake_case_hash)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module PS
|
2
|
+
module State
|
3
|
+
class << self
|
4
|
+
YAML.load_file(File.dirname(__FILE__)+"/states.yml").each do |k,state|
|
5
|
+
define_method state["abbreviation"].downcase.to_s do
|
6
|
+
PS::States.const_get("#{state["abbreviation"].upcase}")
|
7
|
+
end
|
8
|
+
|
9
|
+
define_method state["name"].gsub(/ /, '_').downcase do
|
10
|
+
PS::States.const_get("#{state["abbreviation"].upcase}")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,263 @@
|
|
1
|
+
AK:
|
2
|
+
name: Alaska
|
3
|
+
abbreviation: AK
|
4
|
+
|
5
|
+
AL:
|
6
|
+
name: Alabama
|
7
|
+
abbreviation: AL
|
8
|
+
|
9
|
+
AS:
|
10
|
+
name: American Samoa
|
11
|
+
abbreviation: AS
|
12
|
+
|
13
|
+
AZ:
|
14
|
+
name: Arizona
|
15
|
+
abbreviation: AZ
|
16
|
+
|
17
|
+
AR:
|
18
|
+
name: Arkansas
|
19
|
+
abbreviation: AR
|
20
|
+
|
21
|
+
CA:
|
22
|
+
name: California
|
23
|
+
abbreviation: CA
|
24
|
+
|
25
|
+
CO:
|
26
|
+
name: Colorado
|
27
|
+
abbreviation: CO
|
28
|
+
|
29
|
+
CT:
|
30
|
+
name: Connecticut
|
31
|
+
abbreviation: CT
|
32
|
+
|
33
|
+
DE:
|
34
|
+
name: Delaware
|
35
|
+
abbreviation: DE
|
36
|
+
|
37
|
+
DC:
|
38
|
+
name: District of Columbia
|
39
|
+
abbreviation: DC
|
40
|
+
|
41
|
+
FM:
|
42
|
+
name: Federated States of Micronesia
|
43
|
+
abbreviation: FM
|
44
|
+
|
45
|
+
FL:
|
46
|
+
name: Florida
|
47
|
+
abbreviation: FL
|
48
|
+
|
49
|
+
GA:
|
50
|
+
name: Georgia
|
51
|
+
abbreviation: GA
|
52
|
+
|
53
|
+
GU:
|
54
|
+
name: Guam
|
55
|
+
abbreviation: GU
|
56
|
+
|
57
|
+
HI:
|
58
|
+
name: Hawaii
|
59
|
+
abbreviation: HI
|
60
|
+
|
61
|
+
ID:
|
62
|
+
name: Idaho
|
63
|
+
abbreviation: ID
|
64
|
+
|
65
|
+
IL:
|
66
|
+
name: Illinois
|
67
|
+
abbreviation: IL
|
68
|
+
|
69
|
+
IN:
|
70
|
+
name: Indiana
|
71
|
+
abbreviation: IN
|
72
|
+
|
73
|
+
IA:
|
74
|
+
name: Iowa
|
75
|
+
abbreviation: IA
|
76
|
+
|
77
|
+
KS:
|
78
|
+
name: Kansas
|
79
|
+
abbreviation: KS
|
80
|
+
|
81
|
+
KY:
|
82
|
+
name: Kentucky
|
83
|
+
abbreviation: KY
|
84
|
+
|
85
|
+
LA:
|
86
|
+
name: Louisiana
|
87
|
+
abbreviation: LA
|
88
|
+
|
89
|
+
ME:
|
90
|
+
name: Maine
|
91
|
+
abbreviation: ME
|
92
|
+
|
93
|
+
MH:
|
94
|
+
name: Marshall Islands
|
95
|
+
abbreviation: MH
|
96
|
+
|
97
|
+
MD:
|
98
|
+
name: Maryland
|
99
|
+
abbreviation: MD
|
100
|
+
|
101
|
+
MA:
|
102
|
+
name: Massachusetts
|
103
|
+
abbreviation: MA
|
104
|
+
|
105
|
+
MI:
|
106
|
+
name: Michigan
|
107
|
+
abbreviation: MI
|
108
|
+
|
109
|
+
MN:
|
110
|
+
name: Minnesota
|
111
|
+
abbreviation: MN
|
112
|
+
|
113
|
+
MS:
|
114
|
+
name: Mississippi
|
115
|
+
abbreviation: MS
|
116
|
+
|
117
|
+
MO:
|
118
|
+
name: Missouri
|
119
|
+
abbreviation: MO
|
120
|
+
|
121
|
+
MT:
|
122
|
+
name: Montana
|
123
|
+
abbreviation: MT
|
124
|
+
|
125
|
+
NE:
|
126
|
+
name: Nebraska
|
127
|
+
abbreviation: NE
|
128
|
+
|
129
|
+
NV:
|
130
|
+
name: Nevada
|
131
|
+
abbreviation: NV
|
132
|
+
|
133
|
+
NH:
|
134
|
+
name: New Hampshire
|
135
|
+
abbreviation: NH
|
136
|
+
|
137
|
+
NJ:
|
138
|
+
name: New Jersey
|
139
|
+
abbreviation: NJ
|
140
|
+
|
141
|
+
NM:
|
142
|
+
name: New Mexico
|
143
|
+
abbreviation: NM
|
144
|
+
|
145
|
+
NY:
|
146
|
+
name: New York
|
147
|
+
abbreviation: NY
|
148
|
+
|
149
|
+
NC:
|
150
|
+
name: North Carolina
|
151
|
+
abbreviation: NC
|
152
|
+
|
153
|
+
ND:
|
154
|
+
name: North Dakota
|
155
|
+
abbreviation: ND
|
156
|
+
|
157
|
+
MP:
|
158
|
+
name: Northern Mariana Islands
|
159
|
+
abbreviation: MP
|
160
|
+
|
161
|
+
OH:
|
162
|
+
name: Ohio
|
163
|
+
abbreviation: OH
|
164
|
+
|
165
|
+
OK:
|
166
|
+
name: Oklahoma
|
167
|
+
abbreviation: OK
|
168
|
+
|
169
|
+
OR:
|
170
|
+
name: Oregon
|
171
|
+
abbreviation: OR
|
172
|
+
|
173
|
+
PW:
|
174
|
+
name: Palau
|
175
|
+
abbreviation: PW
|
176
|
+
|
177
|
+
PA:
|
178
|
+
name: Pennsylvania
|
179
|
+
abbreviation: PA
|
180
|
+
|
181
|
+
PR:
|
182
|
+
name: Puerto Rico
|
183
|
+
abbreviation: PR
|
184
|
+
|
185
|
+
RI:
|
186
|
+
name: Rhode Island
|
187
|
+
abbreviation: RI
|
188
|
+
|
189
|
+
SC:
|
190
|
+
name: South Carolina
|
191
|
+
abbreviation: SC
|
192
|
+
|
193
|
+
SD:
|
194
|
+
name: South Dakota
|
195
|
+
abbreviation: SD
|
196
|
+
|
197
|
+
TN:
|
198
|
+
name: Tennessee
|
199
|
+
abbreviation: TN
|
200
|
+
|
201
|
+
TX:
|
202
|
+
name: Texas
|
203
|
+
abbreviation: TX
|
204
|
+
|
205
|
+
UT:
|
206
|
+
name: Utah
|
207
|
+
abbreviation: UT
|
208
|
+
|
209
|
+
VT:
|
210
|
+
name: Vermont
|
211
|
+
abbreviation: VT
|
212
|
+
|
213
|
+
VI:
|
214
|
+
name: Virgin Islands
|
215
|
+
abbreviation: VI
|
216
|
+
|
217
|
+
VA:
|
218
|
+
name: Virginia
|
219
|
+
abbreviation: VA
|
220
|
+
|
221
|
+
WA:
|
222
|
+
name: Washington
|
223
|
+
abbreviation: WA
|
224
|
+
|
225
|
+
WV:
|
226
|
+
name: West Virginia
|
227
|
+
abbreviation: WV
|
228
|
+
|
229
|
+
WI:
|
230
|
+
name: Wisconsin
|
231
|
+
abbreviation: WI
|
232
|
+
|
233
|
+
WY:
|
234
|
+
name: Wyoming
|
235
|
+
abbreviation: WY
|
236
|
+
|
237
|
+
AE:
|
238
|
+
name: Armed Forces Africa
|
239
|
+
abbreviation: AE
|
240
|
+
|
241
|
+
AA:
|
242
|
+
name: Armed Forces Americas (except Canada)
|
243
|
+
abbreviation: AA
|
244
|
+
|
245
|
+
AE:
|
246
|
+
name: Armed Forces Canada
|
247
|
+
abbreviation: AE
|
248
|
+
|
249
|
+
AE:
|
250
|
+
name: Armed Forces Europe
|
251
|
+
abbreviation: AE
|
252
|
+
|
253
|
+
AE:
|
254
|
+
name: Armed Forces Middle East
|
255
|
+
abbreviation: AE
|
256
|
+
|
257
|
+
AP:
|
258
|
+
name: Armed Forces Pacific
|
259
|
+
abbreviation: AP
|
260
|
+
|
261
|
+
OTHER:
|
262
|
+
name: Other
|
263
|
+
abbreviation: Other
|
data/paysimple.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
s.name = 'pay_simple'
|
4
|
+
s.version = '0.0.1'
|
5
|
+
s.date = '2013-11-13'
|
6
|
+
s.summary = "Multiformat paysimple api integration"
|
7
|
+
s.description = ""
|
8
|
+
s.author = [ "Kyle Carter", "Kevin Collette" ]
|
9
|
+
s.email = [ 'seijounai@gmail.com', "kevcollette@gmail.com" ]
|
10
|
+
s.homepage = 'http://github.com/CTA/PSJ'
|
11
|
+
s.files = `git ls-files`.split($/)
|
12
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
13
|
+
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
14
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
15
|
+
s.require_paths = ["lib"]
|
16
|
+
s.license = "MIT"
|
17
|
+
s.add_dependency('httparty')
|
18
|
+
s.add_dependency('json')
|
19
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'factory_girl'
|
2
|
+
|
3
|
+
FactoryGirl.define do
|
4
|
+
factory :credit_card_account, :class => PS::CreditCardAccount do
|
5
|
+
customer_id 0
|
6
|
+
#ps_reference_id please derive
|
7
|
+
account_number "4111111111111111"
|
8
|
+
c_c_expiry "12/2015"
|
9
|
+
c_c_type CreditCardIssuer::VISA
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'factory_girl'
|
2
|
+
|
3
|
+
FactoryGirl.define do
|
4
|
+
factory :customer, class: PS::Customer do
|
5
|
+
first_name "test"
|
6
|
+
middle_name "e"
|
7
|
+
last_name "name"
|
8
|
+
email "example@test.com"
|
9
|
+
phone "0000000000"
|
10
|
+
billing_address1 "1600 Pennslyvania Ave NW"
|
11
|
+
billing_city "Seattle"
|
12
|
+
billing_state 8
|
13
|
+
billing_postal_code 20500
|
14
|
+
billing_country_code "USA"
|
15
|
+
shipping_same_as_billing 1
|
16
|
+
company_name "USA"
|
17
|
+
end
|
18
|
+
end
|