paypal-sdk-rest 0.5.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.
- checksums.yaml +15 -0
- data/Gemfile +12 -0
- data/README.md +136 -0
- data/Rakefile +9 -0
- data/lib/paypal-sdk-rest.rb +2 -0
- data/lib/paypal-sdk/rest.rb +38 -0
- data/lib/paypal-sdk/rest/api.rb +23 -0
- data/lib/paypal-sdk/rest/data_types.rb +420 -0
- data/lib/paypal-sdk/rest/error_hash.rb +39 -0
- data/lib/paypal-sdk/rest/get_api.rb +20 -0
- data/lib/paypal-sdk/rest/request_data_type.rb +56 -0
- data/lib/paypal-sdk/rest/set_api.rb +42 -0
- data/lib/paypal-sdk/rest/version.rb +7 -0
- data/lib/paypal.rb +5 -0
- data/spec/config/cacert.pem +171 -0
- data/spec/config/cert_key.pem +33 -0
- data/spec/config/paypal.yml +8 -0
- data/spec/log/http.log +0 -0
- data/spec/payments_examples_spec.rb +210 -0
- data/spec/spec_helper.rb +24 -0
- metadata +98 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Y2RlZWM2YmZkOGMwNWUxYzM4MjE3MmY4YjIyZmY3OTgyNzk0ZmY0OA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NzI0YmMyNTM5ZTNjYjQxYzlmOTFjNDBkMzk1ZTQ2N2U0NTE1NjMyNA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OTM3MDgxZjQyMjkxZDcyYTkwYWJhZGI2ZjFmZTFiM2RhNzYzMmUxODE1NGQx
|
10
|
+
NWM4NzYzOWRkYjlhOWFiMmRiMjkxMmI1NGQwMjMwYjExZDg0NjdmNWQ5YWEy
|
11
|
+
MzQ0YjExYTBjMDEzNGNjNjY4ZGYzMTk5OTZmNGI3YmM0NzY1Yzg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MmZhMjVjYmE0NmI2N2Q4NTBiZGI3NjgyM2ExMjZmYmNiMGFjNjA4NGEzNTEw
|
14
|
+
YjYzMDFmZTVjZTBkNmViNWE3ZjU4NTk5YTRiNjM1OTY5ZGU1OTYzMTNhMzEy
|
15
|
+
YmRjMTY2ZjI4OGJjYjk2OGM1YWM3YThmNDYwYzMwNDRlOGEyMDM=
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
# REST SDK
|
2
|
+
|
3
|
+
The PayPal REST SDK provides Ruby APIs to create, process and manage rest.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'paypal-sdk-rest'
|
10
|
+
|
11
|
+
# gem 'paypal-sdk-core', :git => "https://github.com/paypal/sdk-core-ruby.git"
|
12
|
+
# gem 'paypal-sdk-rest', :git => "https://github.com/paypal/rest-api-sdk-ruby.git"
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
$ gem install paypal-sdk-rest
|
21
|
+
|
22
|
+
## Configuration
|
23
|
+
|
24
|
+
For Rails application:
|
25
|
+
|
26
|
+
rails g paypal:sdk:install
|
27
|
+
|
28
|
+
For other ruby application, create a configuration file(`config/paypal.yml`):
|
29
|
+
|
30
|
+
development: &default
|
31
|
+
client_id: EBWKjlELKMYqRNQ6sYvFo64FtaRLRR5BdHEESmha49TM
|
32
|
+
client_secret: EO422dn3gQLgDbuwqTjzrFgFtaRLRR5BdHEESmha49TM
|
33
|
+
mode: sandbox
|
34
|
+
# # with Proxy
|
35
|
+
# http_proxy: http://proxy-ipaddress:3129/
|
36
|
+
# # with CA File
|
37
|
+
# ssl_options:
|
38
|
+
# ca_file: config/cacert.pem
|
39
|
+
# # Override Endpoint
|
40
|
+
# rest_endpoint: https://api.sandbox.paypal.com
|
41
|
+
test:
|
42
|
+
<<: *default
|
43
|
+
production:
|
44
|
+
<<: *default
|
45
|
+
mode: live
|
46
|
+
|
47
|
+
|
48
|
+
Load Configurations from specified file:
|
49
|
+
|
50
|
+
PayPal::SDK::Core::Config.load('spec/config/paypal.yml', ENV['RACK_ENV'] || 'development')
|
51
|
+
|
52
|
+
Without configuration file:
|
53
|
+
|
54
|
+
PayPal::SDK::REST.set_config(
|
55
|
+
:client_id => "EBWKjlELKMYqRNQ6sYvFo64FtaRLRR5BdHEESmha49TM",
|
56
|
+
:client_secret => "EO422dn3gQLgDbuwqTjzrFgFtaRLRR5BdHEESmha49TM",
|
57
|
+
:mode => "sandbox", # "sandbox" or "live"
|
58
|
+
:ssl_options => { } )
|
59
|
+
|
60
|
+
Override configuration:
|
61
|
+
|
62
|
+
# Class level
|
63
|
+
Payment.set_config( :client_id => "123" )
|
64
|
+
|
65
|
+
# Object level
|
66
|
+
payment.set_config( :client_id => "123" )
|
67
|
+
|
68
|
+
|
69
|
+
## Create Payment
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
require 'paypal-sdk-rest'
|
73
|
+
include PayPal::SDK::REST
|
74
|
+
|
75
|
+
PayPal::SDK::REST.set_config(
|
76
|
+
:client_id => "EBWKjlELKMYqRNQ6sYvFo64FtaRLRR5BdHEESmha49TM",
|
77
|
+
:client_secret => "EO422dn3gQLgDbuwqTjzrFgFtaRLRR5BdHEESmha49TM",
|
78
|
+
:mode => "sandbox" )
|
79
|
+
|
80
|
+
# Build Payment object
|
81
|
+
@payment = Payment.new({
|
82
|
+
:intent => "sale",
|
83
|
+
:payer => {
|
84
|
+
:payment_method => "credit_card",
|
85
|
+
:funding_instruments => [{
|
86
|
+
:credit_card => {
|
87
|
+
:type => "visa",
|
88
|
+
:number => "4417119669820331",
|
89
|
+
:expire_month => "11",
|
90
|
+
:expire_year => "2018",
|
91
|
+
:cvv2 => "874",
|
92
|
+
:first_name => "Joe",
|
93
|
+
:last_name => "Shopper",
|
94
|
+
:billing_address => {
|
95
|
+
:line1 => "52 N Main ST",
|
96
|
+
:city => "Johnstown",
|
97
|
+
:state => "OH",
|
98
|
+
:postal_code => "43210",
|
99
|
+
:country_code => "US" }}}]},
|
100
|
+
:transactions => [{
|
101
|
+
:amount => {
|
102
|
+
:total => "1.00",
|
103
|
+
:currency => "USD" },
|
104
|
+
:description => "This is the payment transaction description." }]})
|
105
|
+
|
106
|
+
# Make API call & get response
|
107
|
+
if @payment.create
|
108
|
+
@payment.id # Payment Id
|
109
|
+
else
|
110
|
+
@payment.error # Error Hash
|
111
|
+
end
|
112
|
+
```
|
113
|
+
|
114
|
+
## Get Payment
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
# Fetch Payment
|
118
|
+
payment = Payment.find("PAY-57363176S1057143SKE2HO3A")
|
119
|
+
|
120
|
+
# Get List of REST
|
121
|
+
payment_history = Payment.all( :count => 10 )
|
122
|
+
|
123
|
+
payment_history.payments
|
124
|
+
```
|
125
|
+
|
126
|
+
## Execute Payment
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
payment = Payment.find("PAY-57363176S1057143SKE2HO3A")
|
130
|
+
|
131
|
+
if payment.execute( :payer_id => "DUFRQ8GWYMJXC" )
|
132
|
+
# Success Message
|
133
|
+
else
|
134
|
+
payment.error # Error Hash
|
135
|
+
end
|
136
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'paypal-sdk-core'
|
2
|
+
|
3
|
+
module PayPal
|
4
|
+
module SDK
|
5
|
+
module REST
|
6
|
+
autoload :VERSION, "paypal-sdk/rest/version"
|
7
|
+
autoload :DataTypes, "paypal-sdk/rest/data_types"
|
8
|
+
autoload :API, "paypal-sdk/rest/api"
|
9
|
+
autoload :RequestDataType, "paypal-sdk/rest/request_data_type"
|
10
|
+
autoload :SetAPI, "paypal-sdk/rest/set_api"
|
11
|
+
autoload :GetAPI, "paypal-sdk/rest/get_api"
|
12
|
+
autoload :ErrorHash, "paypal-sdk/rest/error_hash"
|
13
|
+
|
14
|
+
include DataTypes
|
15
|
+
include Core::Exceptions
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
def method_missing(name, *args)
|
19
|
+
RequestDataType.send(name, *args)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class << self
|
24
|
+
def new(*args)
|
25
|
+
API.new(*args)
|
26
|
+
end
|
27
|
+
include ClassMethods
|
28
|
+
|
29
|
+
def included(klass)
|
30
|
+
if klass.is_a? Module
|
31
|
+
klass.extend(ClassMethods)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'paypal-sdk-core'
|
2
|
+
|
3
|
+
module PayPal
|
4
|
+
module SDK
|
5
|
+
module REST
|
6
|
+
class API < Core::API::REST
|
7
|
+
# include Services
|
8
|
+
|
9
|
+
def initialize(environment = nil, options = {})
|
10
|
+
super("", environment, options)
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def user_agent
|
15
|
+
@user_agent ||= "PayPalSDK/rest-sdk-ruby #{VERSION} (paypal-sdk-core #{PayPal::SDK::Core::VERSION}; ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}-#{RUBY_PLATFORM})"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,420 @@
|
|
1
|
+
# Stub objects for REST
|
2
|
+
# Auto generated code
|
3
|
+
|
4
|
+
require 'uuidtools'
|
5
|
+
|
6
|
+
require 'paypal-sdk-core'
|
7
|
+
|
8
|
+
module PayPal::SDK
|
9
|
+
module REST
|
10
|
+
module DataTypes
|
11
|
+
|
12
|
+
class DataType < Core::API::DataTypes::Base
|
13
|
+
attr_accessor :error
|
14
|
+
attr_writer :header, :request_id
|
15
|
+
|
16
|
+
def header
|
17
|
+
@header ||= {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def request_id
|
21
|
+
@request_id ||= UUIDTools::UUID.random_create.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def http_header
|
25
|
+
{ "PayPal-Request-Id" => request_id.to_s }.merge(header)
|
26
|
+
end
|
27
|
+
|
28
|
+
def success?
|
29
|
+
@error.nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
def merge!(values)
|
33
|
+
@error = nil
|
34
|
+
super
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.load_members
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class Resource < DataType
|
42
|
+
end
|
43
|
+
|
44
|
+
class EnumType < Core::API::DataTypes::Enum
|
45
|
+
end
|
46
|
+
|
47
|
+
class Refund < Resource
|
48
|
+
def self.load_members
|
49
|
+
object_of :id, String
|
50
|
+
object_of :create_time, String
|
51
|
+
object_of :update_time, String
|
52
|
+
object_of :state, String
|
53
|
+
object_of :amount, Amount
|
54
|
+
object_of :sale_id, String
|
55
|
+
object_of :capture_id, String
|
56
|
+
object_of :parent_payment, String
|
57
|
+
object_of :description, String
|
58
|
+
array_of :links, Link
|
59
|
+
end
|
60
|
+
|
61
|
+
include RequestDataType
|
62
|
+
|
63
|
+
class << self
|
64
|
+
def find(refundid)
|
65
|
+
raise ArgumentError.new("refundid required") if refundid.to_s.strip.empty?
|
66
|
+
url = sprintf("v1/payments/refund/%s", refundid.to_s.strip)
|
67
|
+
response = api.get(url)
|
68
|
+
new(response)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
class Resource < DataType
|
76
|
+
def self.load_members
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
class Amount < Resource
|
83
|
+
def self.load_members
|
84
|
+
object_of :total, String
|
85
|
+
object_of :currency, String
|
86
|
+
object_of :details, AmountDetails
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
class AmountDetails < Resource
|
93
|
+
def self.load_members
|
94
|
+
object_of :subtotal, String
|
95
|
+
object_of :tax, String
|
96
|
+
object_of :shipping, String
|
97
|
+
object_of :fee, String
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
class Link < Resource
|
104
|
+
def self.load_members
|
105
|
+
object_of :href, String
|
106
|
+
object_of :rel, String
|
107
|
+
object_of :method, String
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
class Payment < Resource
|
114
|
+
def self.load_members
|
115
|
+
object_of :id, String
|
116
|
+
object_of :create_time, String
|
117
|
+
object_of :update_time, String
|
118
|
+
object_of :state, String
|
119
|
+
object_of :intent, String
|
120
|
+
object_of :payer, Payer
|
121
|
+
array_of :transactions, Transaction
|
122
|
+
object_of :redirect_urls, RedirectUrls
|
123
|
+
array_of :links, Link
|
124
|
+
end
|
125
|
+
|
126
|
+
include RequestDataType
|
127
|
+
|
128
|
+
class << self
|
129
|
+
def all(options = {})
|
130
|
+
url = "v1/payments/payment"
|
131
|
+
response = api.get(url, options)
|
132
|
+
PaymentHistory.new(response)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def create()
|
137
|
+
url = "v1/payments/payment"
|
138
|
+
response = api.post(url, self.to_hash, self.http_header)
|
139
|
+
self.merge!(response)
|
140
|
+
success?
|
141
|
+
end
|
142
|
+
|
143
|
+
class << self
|
144
|
+
def find(paymentid)
|
145
|
+
raise ArgumentError.new("paymentid required") if paymentid.to_s.strip.empty?
|
146
|
+
url = sprintf("v1/payments/payment/%s", paymentid.to_s.strip)
|
147
|
+
response = api.get(url)
|
148
|
+
new(response)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def execute(payment_execution)
|
153
|
+
raise ArgumentError.new("id required") if self.id.to_s.strip.empty?
|
154
|
+
url = sprintf("v1/payments/payment/%s/execute", self.id.to_s.strip)
|
155
|
+
payment_execution = PaymentExecution.new(payment_execution) unless payment_execution.is_a? PaymentExecution
|
156
|
+
response = api.post(url, payment_execution.to_hash, payment_execution.http_header)
|
157
|
+
self.merge!(response)
|
158
|
+
success?
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
class Payer < Resource
|
165
|
+
def self.load_members
|
166
|
+
object_of :payment_method, String
|
167
|
+
object_of :payer_info, PayerInfo
|
168
|
+
array_of :funding_instruments, FundingInstrument
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
class PayerInfo < Resource
|
175
|
+
def self.load_members
|
176
|
+
object_of :email, String
|
177
|
+
object_of :first_name, String
|
178
|
+
object_of :last_name, String
|
179
|
+
object_of :payer_id, String
|
180
|
+
object_of :shipping_address, Address
|
181
|
+
object_of :phone, String
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
class Address < Resource
|
188
|
+
def self.load_members
|
189
|
+
object_of :line1, String
|
190
|
+
object_of :line2, String
|
191
|
+
object_of :city, String
|
192
|
+
object_of :state, String
|
193
|
+
object_of :postal_code, String
|
194
|
+
object_of :country_code, String
|
195
|
+
object_of :type, String
|
196
|
+
object_of :phone, String
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
class FundingInstrument < Resource
|
203
|
+
def self.load_members
|
204
|
+
object_of :credit_card, CreditCard
|
205
|
+
object_of :credit_card_token, CreditCardToken
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
class CreditCard < Resource
|
212
|
+
def self.load_members
|
213
|
+
object_of :id, String
|
214
|
+
object_of :valid_until, String
|
215
|
+
object_of :state, String
|
216
|
+
object_of :payer_id, String
|
217
|
+
object_of :type, String
|
218
|
+
object_of :number, String
|
219
|
+
object_of :expire_month, String
|
220
|
+
object_of :expire_year, String
|
221
|
+
object_of :cvv2, String
|
222
|
+
object_of :first_name, String
|
223
|
+
object_of :last_name, String
|
224
|
+
object_of :billing_address, Address
|
225
|
+
array_of :links, Link
|
226
|
+
end
|
227
|
+
|
228
|
+
include RequestDataType
|
229
|
+
|
230
|
+
def create()
|
231
|
+
url = "v1/vault/credit-card"
|
232
|
+
response = api.post(url, self.to_hash, self.http_header)
|
233
|
+
self.merge!(response)
|
234
|
+
success?
|
235
|
+
end
|
236
|
+
|
237
|
+
class << self
|
238
|
+
def find(creditcardid)
|
239
|
+
raise ArgumentError.new("creditcardid required") if creditcardid.to_s.strip.empty?
|
240
|
+
url = sprintf("v1/vault/credit-card/%s", creditcardid.to_s.strip)
|
241
|
+
response = api.get(url)
|
242
|
+
new(response)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
class CreditCardToken < Resource
|
250
|
+
def self.load_members
|
251
|
+
object_of :credit_card_id, String
|
252
|
+
object_of :payer_id, String
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
class Transaction < Resource
|
259
|
+
def self.load_members
|
260
|
+
object_of :amount, Amount
|
261
|
+
object_of :payee, Payee
|
262
|
+
object_of :description, String
|
263
|
+
object_of :item_list, ItemList
|
264
|
+
array_of :related_resources, SubTransaction
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
class Payee < Resource
|
271
|
+
def self.load_members
|
272
|
+
object_of :merchant_id, String
|
273
|
+
object_of :email, String
|
274
|
+
object_of :phone, String
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
class ItemList < Resource
|
281
|
+
def self.load_members
|
282
|
+
array_of :items, Item
|
283
|
+
object_of :shipping_address, ShippingAddress
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
class Item < Resource
|
290
|
+
def self.load_members
|
291
|
+
object_of :name, String
|
292
|
+
object_of :sku, String
|
293
|
+
object_of :price, String
|
294
|
+
object_of :currency, String
|
295
|
+
object_of :quantity, String
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
class ShippingAddress < Address
|
302
|
+
def self.load_members
|
303
|
+
object_of :recipient_name, String
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
class SubTransaction < Resource
|
310
|
+
def self.load_members
|
311
|
+
object_of :sale, Sale
|
312
|
+
object_of :authorization, Authorization
|
313
|
+
object_of :refund, Refund
|
314
|
+
object_of :capture, Capture
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
class Sale < Resource
|
321
|
+
def self.load_members
|
322
|
+
object_of :id, String
|
323
|
+
object_of :create_time, String
|
324
|
+
object_of :update_time, String
|
325
|
+
object_of :state, String
|
326
|
+
object_of :amount, Amount
|
327
|
+
object_of :parent_payment, String
|
328
|
+
array_of :links, Link
|
329
|
+
end
|
330
|
+
|
331
|
+
include RequestDataType
|
332
|
+
|
333
|
+
class << self
|
334
|
+
def find(saleid)
|
335
|
+
raise ArgumentError.new("saleid required") if saleid.to_s.strip.empty?
|
336
|
+
url = sprintf("v1/payments/sale/%s", saleid.to_s.strip)
|
337
|
+
response = api.get(url)
|
338
|
+
new(response)
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
def refund(refund)
|
343
|
+
raise ArgumentError.new("id required") if self.id.to_s.strip.empty?
|
344
|
+
url = sprintf("v1/payments/sale/%s/refund", self.id.to_s.strip)
|
345
|
+
refund = Refund.new(refund) unless refund.is_a? Refund
|
346
|
+
response = api.post(url, refund.to_hash, refund.http_header)
|
347
|
+
Refund.new(response)
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
class Authorization < Resource
|
354
|
+
def self.load_members
|
355
|
+
object_of :id, String
|
356
|
+
object_of :create_time, String
|
357
|
+
object_of :update_time, String
|
358
|
+
object_of :state, String
|
359
|
+
object_of :amount, Amount
|
360
|
+
object_of :parent_payment, String
|
361
|
+
array_of :links, Link
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
class Capture < Resource
|
368
|
+
def self.load_members
|
369
|
+
object_of :id, String
|
370
|
+
object_of :create_time, String
|
371
|
+
object_of :update_time, String
|
372
|
+
object_of :state, String
|
373
|
+
object_of :amount, Amount
|
374
|
+
object_of :parent_payment, String
|
375
|
+
object_of :authorization_id, String
|
376
|
+
object_of :description, String
|
377
|
+
array_of :links, Link
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
class RedirectUrls < Resource
|
384
|
+
def self.load_members
|
385
|
+
object_of :return_url, String
|
386
|
+
object_of :cancel_url, String
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
class PaymentExecution < Resource
|
393
|
+
def self.load_members
|
394
|
+
object_of :payer_id, String
|
395
|
+
array_of :transactions, Amount
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
class PaymentHistory < Resource
|
402
|
+
def self.load_members
|
403
|
+
array_of :payments, Payment
|
404
|
+
object_of :count, Integer
|
405
|
+
object_of :next_id, String
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
constants.each do |data_type_klass|
|
414
|
+
data_type_klass = const_get(data_type_klass)
|
415
|
+
data_type_klass.load_members if defined? data_type_klass.load_members
|
416
|
+
end
|
417
|
+
|
418
|
+
end
|
419
|
+
end
|
420
|
+
end
|