simplify 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/simplify.rb ADDED
@@ -0,0 +1,41 @@
1
+ #
2
+ # Copyright (c) 2013, MasterCard International Incorporated
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification, are
6
+ # permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list of
9
+ # conditions and the following disclaimer.
10
+ # Redistributions in binary form must reproduce the above copyright notice, this list of
11
+ # conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ # Neither the name of the MasterCard International Incorporated nor the names of its
14
+ # contributors may be used to endorse or promote products derived from this software
15
+ # without specific prior written permission.
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
17
+ # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
+ # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23
+ # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
+ # SUCH DAMAGE.
26
+ #
27
+
28
+ require File.dirname(__FILE__) + '/simplify/cardtoken'
29
+ require File.dirname(__FILE__) + '/simplify/chargeback'
30
+ require File.dirname(__FILE__) + '/simplify/coupon'
31
+ require File.dirname(__FILE__) + '/simplify/customer'
32
+ require File.dirname(__FILE__) + '/simplify/deposit'
33
+ require File.dirname(__FILE__) + '/simplify/event'
34
+ require File.dirname(__FILE__) + '/simplify/invoice'
35
+ require File.dirname(__FILE__) + '/simplify/invoiceitem'
36
+ require File.dirname(__FILE__) + '/simplify/payment'
37
+ require File.dirname(__FILE__) + '/simplify/plan'
38
+ require File.dirname(__FILE__) + '/simplify/refund'
39
+ require File.dirname(__FILE__) + '/simplify/subscription'
40
+ require File.dirname(__FILE__) + '/simplify/webhook'
41
+
@@ -0,0 +1,160 @@
1
+ #
2
+ # Copyright (c) 2013, MasterCard International Incorporated
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification, are
6
+ # permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list of
9
+ # conditions and the following disclaimer.
10
+ # Redistributions in binary form must reproduce the above copyright notice, this list of
11
+ # conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ # Neither the name of the MasterCard International Incorporated nor the names of its
14
+ # contributors may be used to endorse or promote products derived from this software
15
+ # without specific prior written permission.
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
17
+ # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
+ # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23
+ # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
+ # SUCH DAMAGE.
26
+ #
27
+
28
+ module Simplify
29
+
30
+
31
+ # Base class for all API exceptions.
32
+ class ApiException < Exception
33
+
34
+ # HTML status code (or nil if there is no status code)
35
+ attr_reader :status
36
+
37
+ # Error data returned from the API represented as a map.
38
+ attr_reader :errorData
39
+
40
+ # Unique reference ID for the API error.
41
+ attr_reader :reference
42
+
43
+ # API code for the error.
44
+ attr_reader :errorCode
45
+
46
+ # Description of the error.
47
+ attr_reader :errorMessage
48
+
49
+ def initialize(message, status, errorData)
50
+ super(message)
51
+
52
+ @status = status
53
+ @errorMessage = message
54
+ @fieldErrors = []
55
+ if errorData != nil
56
+ @errorData = errorData
57
+ @reference = errorData.has_key?('reference') ? errorData['reference'] : nil
58
+
59
+ if errorData.has_key?('error')
60
+ error = errorData['error']
61
+ @errorCode = error['code']
62
+ if error.has_key?('message')
63
+ message = error['message']
64
+ end
65
+ end
66
+ end
67
+ super(message)
68
+ end
69
+
70
+ # Returns a string descrption of the error.
71
+ def describe()
72
+ return "#{self.class}: \"#{self.to_s()}\" (status: #{@status}, error code #{@errorCode}, reference: #{@reference})"
73
+ end
74
+
75
+ end
76
+
77
+ # Exception representing API authentication errors.
78
+ class AuthenticationException < ApiException
79
+ end
80
+
81
+
82
+ # Exception representing invalid requests made to the API.
83
+ class BadRequestException < ApiException
84
+
85
+
86
+ # A single error on a field of an API request.
87
+ class FieldError
88
+
89
+
90
+ # The name of the field with the error.
91
+ attr_reader :fieldName
92
+
93
+ # The code for the field error.
94
+ attr_reader :errorCode
95
+
96
+ # Description of the error.
97
+ attr_reader :message
98
+
99
+ def initialize(errorData)
100
+ @fieldName = errorData['field']
101
+ @errorCode = errorData['code']
102
+ @message = errorData['message']
103
+ end
104
+
105
+ # Returns string representation of the error.
106
+ def to_s()
107
+ return "Field error: #{@fieldName} \"#{@message}\" (#{@errorCode})"
108
+ end
109
+ end
110
+
111
+ # List of field errors associatied with this error (empty if there are no field errors).
112
+ attr_reader :fieldErrors
113
+
114
+ alias :super_describe :describe
115
+
116
+ def initialize(message, status, errorData)
117
+
118
+ super(message, status, errorData)
119
+
120
+ @fieldErrors = []
121
+ if errorData.has_key?('error')
122
+ error = errorData['error']
123
+ if error.has_key?('fieldErrors')
124
+ fieldErrors = error['fieldErrors']
125
+ fieldErrors.each do |fieldError|
126
+ @fieldErrors << FieldError.new(fieldError)
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ # Returns boolean indicating if there are field errors associated with this API error.
133
+ def hasFieldErrors?
134
+ return @fieldErrors.length > 1
135
+ end
136
+
137
+ # Returns a string description of the error including any field errors.
138
+ def describe()
139
+ s = super_describe()
140
+ @fieldErrors.each do |fieldError|
141
+ s = s + "\n" + fieldError.to_s
142
+ end
143
+ return s + "\n"
144
+ end
145
+
146
+ end
147
+
148
+ # Exception representing a object not found for an API request.
149
+ class ObjectNotFoundException < ApiException
150
+ end
151
+
152
+ # Exception representing an invalid operation request.
153
+ class NotAllowedException < ApiException
154
+ end
155
+
156
+ # Exception representing a system error during processing of an API request.
157
+ class SystemException < ApiException
158
+ end
159
+
160
+ end
@@ -0,0 +1,102 @@
1
+ #
2
+ # Copyright (c) 2013, MasterCard International Incorporated
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification, are
6
+ # permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list of
9
+ # conditions and the following disclaimer.
10
+ # Redistributions in binary form must reproduce the above copyright notice, this list of
11
+ # conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ # Neither the name of the MasterCard International Incorporated nor the names of its
14
+ # contributors may be used to endorse or promote products derived from this software
15
+ # without specific prior written permission.
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
17
+ # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
+ # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23
+ # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
+ # SUCH DAMAGE.
26
+ #
27
+
28
+ require 'simplify/paymentsapi'
29
+
30
+ module Simplify
31
+
32
+ # A CardToken object.
33
+ #
34
+ class CardToken < Hash
35
+
36
+ # Public key used to access the API.
37
+ attr_accessor :public_key
38
+
39
+ # Private key used to access the API.
40
+ attr_accessor :private_key
41
+
42
+
43
+
44
+ # Creates an CardToken object
45
+ #
46
+ # parms:: a hash of parameters; valid keys are:
47
+ # * <code>callback</code> The URL callback for the cardtoken
48
+ # * <code>card => addressCity</code> City of the cardholder.
49
+ # * <code>card => addressCountry</code> Country code (ISO-3166-1-alpha-2 code) of residence of the cardholder.
50
+ # * <code>card => addressLine1</code> Address of the cardholder.
51
+ # * <code>card => addressLine2</code> Address of the cardholder if needed.
52
+ # * <code>card => addressState</code> State code (USPS code) of residence of the cardholder.
53
+ # * <code>card => addressZip</code> Postal code of the cardholder.
54
+ # * <code>card => cvc</code> CVC security code of the card. This is the code on the back of the card. Example: 123
55
+ # * <code>card => expMonth</code> Expiration month of the card. Format is MM. Example: January = 01 <b>required </b>
56
+ # * <code>card => expYear</code> Expiration year of the card. Format is YY. Example: 2013 = 13 <b>required </b>
57
+ # * <code>card => name</code> Name as appears on the card.
58
+ # * <code>card => number</code> Card number as it appears on the card. <b>required </b>
59
+ # * <code>key</code> Key used to create the card token.
60
+ # public_key:: Public to use for the API call. If nil, the value of Simplify::public_key will be used.
61
+ # private_key:: Private key to use for the API call. If nil, the value of Simplify::private_key will be used.
62
+ # Returns a CardToken object.
63
+ def self.create(parms, public_key = nil, private_key = nil)
64
+ if public_key == nil then
65
+ public_key = Simplify::public_key
66
+ end
67
+ if private_key == nil then
68
+ private_key = Simplify::private_key
69
+ end
70
+
71
+ h = Simplify::PaymentsApi.execute("cardToken", 'create', parms, public_key, private_key)
72
+ obj = CardToken.new()
73
+ obj.public_key = public_key
74
+ obj.private_key = private_key
75
+ obj = obj.merge(h)
76
+ obj
77
+ end
78
+
79
+ # Retrieve a CardToken object from the API
80
+ #
81
+ # id:: ID of object to retrieve
82
+ # public_key:: Public to use for the API call. If nil, the value of Simplify::public_key will be used.
83
+ # private_key:: Private key to use for the API call. If nil, the value of Simplify::private_key will be used.
84
+ # Returns a CardToken object.
85
+ def self.find(id, public_key = nil, private_key = nil)
86
+ if public_key == nil then
87
+ public_key = Simplify::public_key
88
+ end
89
+ if private_key == nil then
90
+ private_key = Simplify::private_key
91
+ end
92
+
93
+ h = Simplify::PaymentsApi.execute("cardToken", 'show', {"id" => id}, public_key, private_key)
94
+ obj = CardToken.new()
95
+ obj.public_key = public_key
96
+ obj.private_key = private_key
97
+ obj = obj.merge(h)
98
+ obj
99
+ end
100
+
101
+ end
102
+ end
@@ -0,0 +1,95 @@
1
+ #
2
+ # Copyright (c) 2013, MasterCard International Incorporated
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification, are
6
+ # permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list of
9
+ # conditions and the following disclaimer.
10
+ # Redistributions in binary form must reproduce the above copyright notice, this list of
11
+ # conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ # Neither the name of the MasterCard International Incorporated nor the names of its
14
+ # contributors may be used to endorse or promote products derived from this software
15
+ # without specific prior written permission.
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
17
+ # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
+ # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23
+ # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
+ # SUCH DAMAGE.
26
+ #
27
+
28
+ require 'simplify/paymentsapi'
29
+
30
+ module Simplify
31
+
32
+ # A Chargeback object.
33
+ #
34
+ class Chargeback < Hash
35
+
36
+ # Public key used to access the API.
37
+ attr_accessor :public_key
38
+
39
+ # Private key used to access the API.
40
+ attr_accessor :private_key
41
+
42
+
43
+
44
+ # Retrieve Chargeback objects.
45
+ # criteria:: a hash of parameters; valid keys are:
46
+ # * <code>filter</code> Filters to apply to the list.
47
+ # * <code>max</code> Allows up to a max of 50 list items to return. <b>default:20</b>
48
+ # * <code>offset</code> Used in paging of the list. This is the start offset of the page. <b>default:0</b>
49
+ # * <code>sorting</code> Allows for ascending or descending sorting of the list. The value maps properties to the sort direction (either <code>asc</code> for ascending or <code>desc</code> for descending). Sortable properties are: <code> id</code><code> amount</code><code> description</code><code> dateCreated</code><code> paymentDate</code>.
50
+ # public_key:: Public to use for the API call. If nil, the value of Simplify::public_key will be used.
51
+ # private_key:: Private key to use for the API call. If nil, the value of Simplify::private_key will be used.
52
+ # Returns an object where the <code>list</code> property contains the list of Chargeback objects and the <code>total</code>
53
+ # property contains the total number of Chargeback objects available for the given criteria.
54
+ def self.list(criteria = nil, public_key = nil, private_key = nil)
55
+
56
+ if public_key == nil then
57
+ public_key = Simplify::public_key
58
+ end
59
+ if private_key == nil then
60
+ private_key = Simplify::private_key
61
+ end
62
+
63
+ h = Simplify::PaymentsApi.execute("chargeback", 'list', criteria, public_key, private_key)
64
+ obj = Chargeback.new()
65
+ obj.public_key = public_key
66
+ obj.private_key = private_key
67
+ obj = obj.merge(h)
68
+ obj
69
+
70
+ end
71
+
72
+ # Retrieve a Chargeback object from the API
73
+ #
74
+ # id:: ID of object to retrieve
75
+ # public_key:: Public to use for the API call. If nil, the value of Simplify::public_key will be used.
76
+ # private_key:: Private key to use for the API call. If nil, the value of Simplify::private_key will be used.
77
+ # Returns a Chargeback object.
78
+ def self.find(id, public_key = nil, private_key = nil)
79
+ if public_key == nil then
80
+ public_key = Simplify::public_key
81
+ end
82
+ if private_key == nil then
83
+ private_key = Simplify::private_key
84
+ end
85
+
86
+ h = Simplify::PaymentsApi.execute("chargeback", 'show', {"id" => id}, public_key, private_key)
87
+ obj = Chargeback.new()
88
+ obj.public_key = public_key
89
+ obj.private_key = private_key
90
+ obj = obj.merge(h)
91
+ obj
92
+ end
93
+
94
+ end
95
+ end
@@ -0,0 +1,56 @@
1
+ #
2
+ # Copyright (c) 2013, MasterCard International Incorporated
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification, are
6
+ # permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list of
9
+ # conditions and the following disclaimer.
10
+ # Redistributions in binary form must reproduce the above copyright notice, this list of
11
+ # conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ # Neither the name of the MasterCard International Incorporated nor the names of its
14
+ # contributors may be used to endorse or promote products derived from this software
15
+ # without specific prior written permission.
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
17
+ # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
+ # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22
+ # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23
+ # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
+ # SUCH DAMAGE.
26
+ #
27
+
28
+ module Simplify
29
+
30
+ # Constants.
31
+ class Constants
32
+
33
+ @@version = '1.0.0'
34
+ @@api_base_live_url = 'https://api.simplify.com/v1/api'
35
+ @@api_base_sandbox_url = 'https://sandbox.simplify.com/v1/api'
36
+
37
+
38
+ # Returns the base URL for the live API.
39
+ def self.api_base_live_url
40
+ @@api_base_live_url
41
+ end
42
+
43
+ # Returns the base URL for the sandbox API.
44
+ def self.api_base_sandbox_url
45
+ @@api_base_sandbox_url
46
+ end
47
+
48
+ # Returns the SDK version.
49
+ def self.version
50
+ @@version
51
+ end
52
+
53
+
54
+ end
55
+ end
56
+