mastercard_psp_payment 1.0.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.
@@ -0,0 +1,212 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_psp_payment/models/cryptogram'
4
+
5
+
6
+ module MastercardPspPayment
7
+ # This class contains methods to get the tokenized card details.
8
+ class Tokenization
9
+ include ROXML
10
+
11
+ xml_name "Tokenization"
12
+
13
+ # @!attribute f_pan_suffix
14
+ # @return [String] the last digits of card number or primary account number that identifies the card. Also known as Funding Primary Account Number. Normally suffix is the last four digits.
15
+ xml_accessor :f_pan_suffix, :from =>"fPanSuffix"
16
+
17
+ # @!attribute token_requestor_id
18
+ # @return [String] the token request or id.
19
+ xml_accessor :token_requestor_id, :from =>"tokenRequestorId"
20
+
21
+ # @!attribute payment_account_reference
22
+ # @return [String] the payment account reference.
23
+ xml_accessor :payment_account_reference, :from =>"paymentAccountReference"
24
+
25
+ # @!attribute source_system
26
+ # @return [String] the source system. Currently, the only valid source system is: MDES.
27
+ xml_accessor :source_system, :from =>"sourceSystem"
28
+
29
+ # @!attribute cryptogram
30
+ # @return [Cryptogram] the cryptogram generated by the consumer's Masterpass wallet.
31
+ xml_accessor :cryptogram, :from =>"cryptogram",:as => Cryptogram
32
+
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ def self.attribute_map
36
+ {
37
+ :f_pan_suffix => :fPanSuffix ,
38
+ :token_requestor_id => :tokenRequestorId ,
39
+ :payment_account_reference => :paymentAccountReference ,
40
+ :source_system => :sourceSystem ,
41
+ :cryptogram => :cryptogram
42
+
43
+ }
44
+ end
45
+
46
+ def initialize(attributes = {})
47
+ return unless attributes.is_a?(Hash)
48
+
49
+ # convert string to symbol for hash key
50
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
51
+
52
+
53
+ if attributes.has_key?(:f_pan_suffix)
54
+ self.f_pan_suffix = attributes[:f_pan_suffix]
55
+ end
56
+
57
+ if attributes.has_key?(:token_requestor_id)
58
+ self.token_requestor_id = attributes[:token_requestor_id]
59
+ end
60
+
61
+ if attributes.has_key?(:payment_account_reference)
62
+ self.payment_account_reference = attributes[:payment_account_reference]
63
+ end
64
+
65
+ if attributes.has_key?(:source_system)
66
+ self.source_system = attributes[:source_system]
67
+ end
68
+
69
+ if attributes.has_key?(:cryptogram)
70
+ self.cryptogram = attributes[:cryptogram]
71
+ end
72
+
73
+ end
74
+
75
+
76
+
77
+
78
+ # Check equality by comparing each attribute.
79
+ def ==(o)
80
+ return true if self.equal?(o)
81
+ self.class == o.class &&
82
+ f_pan_suffix == o.f_pan_suffix &&
83
+ token_requestor_id == o.token_requestor_id &&
84
+ payment_account_reference == o.payment_account_reference &&
85
+ source_system == o.source_system &&
86
+ cryptogram == o.cryptogram
87
+ end
88
+
89
+ # @see the `==` method
90
+ def eql?(o)
91
+ self == o
92
+ end
93
+
94
+ # Calculate hash code according to all attributes.
95
+ def hash
96
+ [f_pan_suffix, token_requestor_id, payment_account_reference, source_system, cryptogram].hash
97
+ end
98
+
99
+ # build the object from hash
100
+ def build_from_hash(attributes)
101
+ return nil unless attributes.is_a?(Hash)
102
+ self.class.datatype_map.each_pair do |key, type|
103
+ if type =~ /^Array<(.*)>/i
104
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
105
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
106
+ else
107
+ #TODO show warning in debug mode
108
+ end
109
+ elsif !attributes[self.class.attribute_map[key]].nil?
110
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
111
+ else
112
+ # data not found in attributes(hash), not an issue as the data can be optional
113
+ end
114
+ end
115
+
116
+ self
117
+ end
118
+
119
+ def _deserialize(type, value)
120
+ case type.to_sym
121
+ when :DateTime
122
+ DateTime.parse(value)
123
+ when :Date
124
+ Date.parse(value)
125
+ when :String
126
+ value.to_s
127
+ when :Integer
128
+ value.to_i
129
+ when :Float
130
+ value.to_f
131
+ when :BOOLEAN
132
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
133
+ true
134
+ else
135
+ false
136
+ end
137
+ when /\AArray<(?<inner_type>.+)>\z/
138
+ inner_type = Regexp.last_match[:inner_type]
139
+ value.map { |v| _deserialize(inner_type, v) }
140
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
141
+ k_type = Regexp.last_match[:k_type]
142
+ v_type = Regexp.last_match[:v_type]
143
+ {}.tap do |hash|
144
+ value.each do |k, v|
145
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
146
+ end
147
+ end
148
+ else # model
149
+ _model = MastercardPspPayment.const_get(type).new
150
+ _model.build_from_hash(value)
151
+ end
152
+ end
153
+
154
+ def to_s
155
+ to_hash.to_s
156
+ end
157
+
158
+ # to_body is an alias to to_body (backward compatibility))
159
+ def to_body
160
+ to_hash
161
+ end
162
+
163
+ # return the object in the form of hash
164
+ def to_hash(include_root = false)
165
+ attributes_hash = {}
166
+ hash = {}
167
+ self.class.attribute_map.each_pair do |attr, param|
168
+ value = self.send(attr)
169
+ next if value.nil?
170
+ hash[param] = _to_hash(value)
171
+ end
172
+ attributes_hash = include_root ? { "Tokenization" => hash } : hash
173
+ return attributes_hash
174
+ end
175
+
176
+ # Method to output non-array value in the form of hash
177
+ # For object, use to_hash. Otherwise, just return the value
178
+ def _to_hash(value)
179
+ if value.is_a?(Array)
180
+ value.compact.map{ |v| _to_hash(v) }
181
+ elsif value.is_a?(Hash)
182
+ {}.tap do |hash|
183
+ value.each { |k, v| hash[k] = _to_hash(v) }
184
+ end
185
+ elsif value.respond_to? :to_hash
186
+ value.to_hash
187
+ else
188
+ value
189
+ end
190
+ end
191
+
192
+
193
+ private
194
+ def after_parse
195
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
196
+ end
197
+
198
+ # Attribute datatype mapping.
199
+ def self.datatype_map
200
+ {
201
+ :f_pan_suffix => 'String',
202
+ :token_requestor_id => 'String',
203
+ :payment_account_reference => 'String',
204
+ :source_system => 'String',
205
+ :cryptogram => 'Cryptogram'
206
+
207
+ }
208
+ end
209
+ end
210
+
211
+
212
+ end
@@ -0,0 +1,57 @@
1
+ require 'mastercard_core_sdk'
2
+
3
+ module MastercardPspPayment
4
+ module Tracker
5
+ # Provides tracking api information and user-agent information.
6
+ class SdkApiTracker
7
+ include MastercardCoreSdk, MastercardCoreSdk::Core, MastercardCoreSdk::Tracker::ApiTracker
8
+
9
+ # Defines the programming language.
10
+ #
11
+ # @return [String]
12
+ attr_accessor :language
13
+
14
+ # Defines the programming language version.
15
+ #
16
+ # @return [String]
17
+ attr_accessor :language_version
18
+
19
+ # Defines the client sdk gem version.
20
+ #
21
+ # @return [String]
22
+ attr_accessor :client_sdk_version
23
+
24
+ # Defines the plugin version if any defined in MasterCardApiConfiguration as additional_properties.
25
+ #
26
+ # @return [String]
27
+ attr_reader :plugin_version
28
+
29
+ def initialize
30
+ @language = "Ruby"
31
+ @language_version = RUBY_VERSION
32
+ @client_sdk_version = MastercardPspPayment::VERSION
33
+
34
+ additional_track_info = MasterCardApiConfiguration.additional_properties
35
+ if (additional_track_info && additional_track_info.size > 0 && additional_track_info.key?(PLUGIN_VERSION))
36
+ @plugin_version = additional_track_info[PLUGIN_VERSION]
37
+ end
38
+ end
39
+
40
+ # Overriding ApiTracker#tracking_info method.
41
+ #
42
+ # @return [String]
43
+ def tracking_info
44
+ api_tracker_string = CLIENT_SDK_VERSION + client_sdk_version + SEPERATOR + LANG_NAME + language + SEPERATOR + LANG_VERSION + language_version
45
+ api_tracker_string += SEPERATOR + PLUGIN_VERSION + EQUAL + plugin_version unless plugin_version.nil?
46
+ return api_tracker_string
47
+ end
48
+
49
+ # Overriding ApiTracker#user_agent_info method.
50
+ #
51
+ # @return [String]
52
+ def user_agent_info
53
+ return USER_AGENT
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,3 @@
1
+ module MastercardPspPayment
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,30 @@
1
+ # Common files
2
+ require_relative 'mastercard_psp_payment/version'
3
+ require_relative 'mastercard_psp_payment/tracker/sdk_api_tracker'
4
+
5
+ # Models
6
+
7
+ require_relative 'mastercard_psp_payment/models/payment_data'
8
+
9
+ require_relative 'mastercard_psp_payment/models/card'
10
+
11
+ require_relative 'mastercard_psp_payment/models/address'
12
+
13
+ require_relative 'mastercard_psp_payment/models/tokenization'
14
+
15
+ require_relative 'mastercard_psp_payment/models/cryptogram'
16
+
17
+ require_relative 'mastercard_psp_payment/models/authentication_options'
18
+
19
+
20
+ # APIs
21
+
22
+
23
+ require_relative 'mastercard_psp_payment/api/psp_payment_data_api'
24
+
25
+
26
+
27
+
28
+ module MastercardPspPayment
29
+
30
+ end
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mastercard_psp_payment
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mastercard
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mastercard_core_sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: typhoeus
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.8'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.8.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.8'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.8.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: json
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.8'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.8.3
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.8'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.8.3
73
+ - !ruby/object:Gem::Dependency
74
+ name: roxml
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '3.3'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 3.3.1
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.3'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 3.3.1
93
+ - !ruby/object:Gem::Dependency
94
+ name: logging
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '2.1'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.1.0
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.1'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 2.1.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: minitest
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '5.0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '5.0'
127
+ description: SDK for Payment Service Provider(PSP) to make payments
128
+ email:
129
+ - merchant_support@masterpass.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files:
133
+ - LICENSE.txt
134
+ - README.md
135
+ files:
136
+ - LICENSE.txt
137
+ - README.md
138
+ - lib/mastercard_psp_payment.rb
139
+ - lib/mastercard_psp_payment/api/psp_payment_data_api.rb
140
+ - lib/mastercard_psp_payment/models/address.rb
141
+ - lib/mastercard_psp_payment/models/authentication_options.rb
142
+ - lib/mastercard_psp_payment/models/card.rb
143
+ - lib/mastercard_psp_payment/models/cryptogram.rb
144
+ - lib/mastercard_psp_payment/models/payment_data.rb
145
+ - lib/mastercard_psp_payment/models/tokenization.rb
146
+ - lib/mastercard_psp_payment/tracker/sdk_api_tracker.rb
147
+ - lib/mastercard_psp_payment/version.rb
148
+ homepage: https://developer.mastercard.com/documentation/masterpass-integration-psp
149
+ licenses:
150
+ - Mastercard
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 2.2.4
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.4.5.1
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: Masterpass Payment Service Provider(PSP) Payment SDK
172
+ test_files: []