paypal-rest-api 0.4.0 → 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 +4 -4
- data/README.md +79 -15
- data/VERSION +1 -1
- data/lib/paypal-api/api_collections/partner_referrals.rb +48 -0
- data/lib/paypal-api/api_collections/payment_experience_web_profiles.rb +94 -0
- data/lib/paypal-api/api_collections/transaction_search.rb +46 -0
- data/lib/paypal-api/client/access_token_methods.rb +36 -0
- data/lib/paypal-api/client/api_methods.rb +140 -0
- data/lib/paypal-api/client/environment_methods.rb +34 -0
- data/lib/paypal-api/client/http_methods.rb +70 -0
- data/lib/paypal-api/client.rb +5 -225
- data/lib/paypal-api/request.rb +16 -1
- data/lib/paypal-api/request_executor.rb +32 -15
- data/lib/paypal-api/response.rb +68 -0
- data/lib/paypal-api.rb +23 -3
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbd16b786c08d41262b404eb893480c37dbd1b4084dcb4f26a5d7f849d187970
|
4
|
+
data.tar.gz: 720a713a163ca01db1e414149673f416e484616d2e86442eb75ac0d17a29620a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7d63364e602fe0ae3840fefcf68efbd4432243fb337ef8c4a42ec45d8e3744565456696b8f06d04c426520d25c27dd21a0447df9e6ff7017d4c6556453ca568
|
7
|
+
data.tar.gz: 02ebf31571711bb7a0a347b38d8c0c6c116d6ec2bb135912a6ed1da7cc499a469f2cabb3ccd0c9317dbad520e101eabdc3006422fa3498e9df7bb518cc537e8b
|
data/README.md
CHANGED
@@ -15,12 +15,13 @@ bundle add paypal-rest-api
|
|
15
15
|
|
16
16
|
- Supported Ruby Versions - *(2.6 .. 3.3), head, jruby-9.4, truffleruby-24*
|
17
17
|
- No dependencies;
|
18
|
-
- Automatic authorization &
|
18
|
+
- Automatic authorization & re-authorization;
|
19
19
|
- Auto-retries (configured);
|
20
20
|
- Automatically added Paypal-Request-Id header for idempotent requests if not
|
21
21
|
provided;
|
22
22
|
- Webhooks Offline verification (needs to download certificate once)
|
23
23
|
- Custom callbacks before/after request
|
24
|
+
- Automatic pagination methods
|
24
25
|
|
25
26
|
## Usage
|
26
27
|
|
@@ -44,7 +45,7 @@ PaypalAPI.live? # => false
|
|
44
45
|
PaypalAPI.api_url # => "https://api-m.sandbox.paypal.com"
|
45
46
|
PaypalAPI.web_url # => "https://sandbox.paypal.com"
|
46
47
|
|
47
|
-
response =
|
48
|
+
response = PaypalAPI::Orders.show(order_id)
|
48
49
|
response = PaypalAPI::Orders.create(body: body)
|
49
50
|
```
|
50
51
|
|
@@ -85,22 +86,42 @@ response = PaypalAPI.put(path, query: query, body: body, headers: headers)
|
|
85
86
|
response = PaypalAPI.delete(path, query: query, body: body, headers: headers)
|
86
87
|
```
|
87
88
|
|
88
|
-
###
|
89
|
+
### Response
|
89
90
|
|
90
|
-
`
|
91
|
+
`Response` object is returned after each `API` request.
|
91
92
|
|
92
|
-
|
93
|
+
#### Original HTTP response data
|
93
94
|
|
94
|
-
|
95
|
-
response.
|
96
|
-
response
|
97
|
-
response.
|
98
|
-
response.
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
response.
|
103
|
-
|
95
|
+
- `response.http_status` - response HTTP status as Integer
|
96
|
+
- `response.http_body` - response body as String
|
97
|
+
- `response.http_headers` - response headers as Hash with String keys
|
98
|
+
- `response.http_response` - original Net::HTTP::Response object
|
99
|
+
- `response.request` - Request object that was used to get this response
|
100
|
+
|
101
|
+
#### Parsed JSON body methods
|
102
|
+
|
103
|
+
- `response.body` - parsed JSON body, keys are Symbols
|
104
|
+
- `response[:field]` - gets `:field` attribute from parsed body,
|
105
|
+
returns nil if response have no such key
|
106
|
+
- `response.fetch(:field)` - gets `:field` attribute from parsed body,
|
107
|
+
raises KeyError if response has no such key
|
108
|
+
|
109
|
+
#### Error check methods
|
110
|
+
|
111
|
+
- `response.success?` - checks HTTP status code is 2xx
|
112
|
+
- `response.failed?` - checks HTTP status code is not 2xx
|
113
|
+
|
114
|
+
#### Using HATEOAS links
|
115
|
+
|
116
|
+
- `response.follow_up_link('approve', query: nil, body: nil, headers: nil)` -
|
117
|
+
Finds HATEOAS link is response with `rel=approve` and requests it. Returns
|
118
|
+
`nil` if no such link were found.
|
119
|
+
|
120
|
+
#### Pagination (see [Automatic Pagination][automatic_pagination] for examples)
|
121
|
+
|
122
|
+
- `response.each_page { |response| ... }` - iterates over each page in response
|
123
|
+
- `response.each_page_item(items_field) { |item| ... }` - iterates over each
|
124
|
+
page item
|
104
125
|
|
105
126
|
## Configuration options
|
106
127
|
|
@@ -173,6 +194,28 @@ client = PaypalAPI::Client.new(
|
|
173
194
|
)
|
174
195
|
```
|
175
196
|
|
197
|
+
## Automatic pagination
|
198
|
+
|
199
|
+
PayPal provides HATEOAS links in responses. This links can contain items with
|
200
|
+
`rel=next` attribute. We request next pages using this links.
|
201
|
+
|
202
|
+
We have two specific methods:
|
203
|
+
|
204
|
+
- `Response#each_page` - iterates over each page `Response` object
|
205
|
+
- `Response#each_page_item(items_field_name)` - iterates over items on each page
|
206
|
+
|
207
|
+
Example:
|
208
|
+
|
209
|
+
```ruby
|
210
|
+
PaypalAPI::WebhookEvents.list(page_size: 25).each_page do |response|
|
211
|
+
# ...
|
212
|
+
end
|
213
|
+
|
214
|
+
PaypalAPI::WebhookEvents.list(page_size: 25).each_page_item(:events) do |hash|
|
215
|
+
# ...
|
216
|
+
end
|
217
|
+
```
|
218
|
+
|
176
219
|
## Webhoooks verification
|
177
220
|
|
178
221
|
Webhooks can be verified [offline](https://developer.paypal.com/api/rest/webhooks/rest/#link-selfverificationmethod)
|
@@ -514,6 +557,25 @@ All API endpoints accept this parameters:
|
|
514
557
|
- `PaypalAPI::ReferencedPayoutItems.create`
|
515
558
|
- `PaypalAPI::ReferencedPayoutItems.show`
|
516
559
|
|
560
|
+
### PartnerReferrals
|
561
|
+
|
562
|
+
- `PaypalAPI::PartnerReferrals.create`
|
563
|
+
- `PaypalAPI::PartnerReferrals.show`
|
564
|
+
|
565
|
+
### PaymentExperienceWebProfiles
|
566
|
+
|
567
|
+
- `PaypalAPI::PaymentExperienceWebProfiles.create`
|
568
|
+
- `PaypalAPI::PaymentExperienceWebProfiles.list`
|
569
|
+
- `PaypalAPI::PaymentExperienceWebProfiles.show`
|
570
|
+
- `PaypalAPI::PaymentExperienceWebProfiles.replace`
|
571
|
+
- `PaypalAPI::PaymentExperienceWebProfiles.update`
|
572
|
+
- `PaypalAPI::PaymentExperienceWebProfiles.delete`
|
573
|
+
|
574
|
+
### TransactionSearch
|
575
|
+
|
576
|
+
- `PaypalAPI::TransactionSearch.list_transactions`
|
577
|
+
- `PaypalAPI::TransactionSearch.list_all_balances`
|
578
|
+
|
517
579
|
## Development
|
518
580
|
|
519
581
|
```bash
|
@@ -529,3 +591,5 @@ Bug reports and pull requests are welcome on GitHub at <https://github.com/aglus
|
|
529
591
|
## License
|
530
592
|
|
531
593
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
594
|
+
|
595
|
+
[automatic_pagination]: #automatic-pagination
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
#
|
5
|
+
# Use the Partner Referrals API to add PayPal seller accounts to PayPal
|
6
|
+
# Complete Payments Platform for Marketplaces and Platforms.
|
7
|
+
#
|
8
|
+
# @see https://developer.paypal.com/docs/api/partner-referrals/v2/
|
9
|
+
#
|
10
|
+
class PartnerReferrals < APICollection
|
11
|
+
#
|
12
|
+
# Common methods for PaypalAPI::PartnerReferrals class and client.partner_referrals instance
|
13
|
+
#
|
14
|
+
module APIs
|
15
|
+
# @!macro [new] request
|
16
|
+
# @param query [Hash, nil] Request query parameters
|
17
|
+
# @param body [Hash, nil] Request body parameters
|
18
|
+
# @param headers [Hash, nil] Request headers
|
19
|
+
# @return [Response] Response object
|
20
|
+
|
21
|
+
#
|
22
|
+
# Create partner referral
|
23
|
+
#
|
24
|
+
# @see https://developer.paypal.com/docs/api/partner-referrals/v2/#partner-referrals_create
|
25
|
+
#
|
26
|
+
# @macro request
|
27
|
+
#
|
28
|
+
def create(query: nil, body: nil, headers: nil)
|
29
|
+
client.post("/v2/customer/partner-referrals", query: query, body: body, headers: headers)
|
30
|
+
end
|
31
|
+
|
32
|
+
#
|
33
|
+
# Show referral data
|
34
|
+
#
|
35
|
+
# @see https://developer.paypal.com/docs/api/partner-referrals/v2/#partner-referrals_read
|
36
|
+
#
|
37
|
+
# @param id [String] The ID of the partner-referrals data for which to show details
|
38
|
+
# @macro request
|
39
|
+
#
|
40
|
+
def show(partner_referral_id, query: nil, body: nil, headers: nil)
|
41
|
+
client.get("/v2/customer/partner-referrals/#{encode(partner_referral_id)}", query: query, body: body, headers: headers)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
include APIs
|
46
|
+
extend APIs
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
#
|
5
|
+
# Use the Payment Experience API to create seamless payment experience profiles.
|
6
|
+
#
|
7
|
+
# @see https://developer.paypal.com/docs/api/orders/v2/
|
8
|
+
#
|
9
|
+
class PaymentExperienceWebProfiles < APICollection
|
10
|
+
#
|
11
|
+
# Common methods for PaypalAPI::PaymentExperienceWebProfiles class and client.orders instance
|
12
|
+
#
|
13
|
+
module APIs
|
14
|
+
# @!macro [new] request
|
15
|
+
# @param query [Hash, nil] Request query parameters
|
16
|
+
# @param body [Hash, nil] Request body parameters
|
17
|
+
# @param headers [Hash, nil] Request headers
|
18
|
+
# @return [Response] Response object
|
19
|
+
|
20
|
+
#
|
21
|
+
# Create web experience profile
|
22
|
+
#
|
23
|
+
# @see https://developer.paypal.com/docs/api/payment-experience/v1/#web-profile_create
|
24
|
+
#
|
25
|
+
# @macro request
|
26
|
+
#
|
27
|
+
def create(query: nil, body: nil, headers: nil)
|
28
|
+
client.post("/v1/payment-experience/web-profiles", query: query, body: body, headers: headers)
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# List web experience profiles
|
33
|
+
#
|
34
|
+
# @see https://developer.paypal.com/docs/api/payment-experience/v1/#web-profile_get-list
|
35
|
+
#
|
36
|
+
# @macro request
|
37
|
+
#
|
38
|
+
def list(query: nil, body: nil, headers: nil)
|
39
|
+
client.get("/v1/payment-experience/web-profiles", query: query, body: body, headers: headers)
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# Show web experience profile details by ID
|
44
|
+
#
|
45
|
+
# @see https://developer.paypal.com/docs/api/payment-experience/v1/#web-profile_get
|
46
|
+
#
|
47
|
+
# @param id [String] The ID of the profile for which to show details.
|
48
|
+
# @macro request
|
49
|
+
#
|
50
|
+
def show(id, query: nil, body: nil, headers: nil)
|
51
|
+
client.get("/v1/payment-experience/web-profiles/#{encode(id)}", query: query, body: body, headers: headers)
|
52
|
+
end
|
53
|
+
|
54
|
+
#
|
55
|
+
# Replace web experience profile
|
56
|
+
#
|
57
|
+
# @see https://developer.paypal.com/docs/api/payment-experience/v1/#web-profile_update
|
58
|
+
#
|
59
|
+
# @param id [String] The ID of the profile to replace.
|
60
|
+
# @macro request
|
61
|
+
#
|
62
|
+
def replace(id, query: nil, body: nil, headers: nil)
|
63
|
+
client.put("/v1/payment-experience/web-profiles/#{encode(id)}", query: query, body: body, headers: headers)
|
64
|
+
end
|
65
|
+
|
66
|
+
#
|
67
|
+
# Partially update web experience profile
|
68
|
+
#
|
69
|
+
# @see https://developer.paypal.com/docs/api/payment-experience/v1/#web-profile_partial-update
|
70
|
+
#
|
71
|
+
# @param id [String] The ID of the profile to update.
|
72
|
+
# @macro request
|
73
|
+
#
|
74
|
+
def update(id, query: nil, body: nil, headers: nil)
|
75
|
+
client.patch("/v1/payment-experience/web-profiles/#{encode(id)}", query: query, body: body, headers: headers)
|
76
|
+
end
|
77
|
+
|
78
|
+
#
|
79
|
+
# Delete web experience profile
|
80
|
+
#
|
81
|
+
# @see https://developer.paypal.com/docs/api/payment-experience/v1/#web-profile_delete
|
82
|
+
#
|
83
|
+
# @param id [String] The ID of the profile to delete.
|
84
|
+
# @macro request
|
85
|
+
#
|
86
|
+
def delete(id, query: nil, body: nil, headers: nil)
|
87
|
+
client.delete("/v1/payment-experience/web-profiles/#{encode(id)}", query: query, body: body, headers: headers)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
include APIs
|
92
|
+
extend APIs
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
#
|
5
|
+
# Use the Transaction Search API to get the history of transactions for a PayPal account.
|
6
|
+
#
|
7
|
+
# @see https://developer.paypal.com/docs/api/transaction-search/v1/
|
8
|
+
#
|
9
|
+
class TransactionSearch < APICollection
|
10
|
+
#
|
11
|
+
# Common methods for PaypalAPI::TransactionSearch class and client.transaction_search instance
|
12
|
+
#
|
13
|
+
module APIs
|
14
|
+
# @!macro [new] request
|
15
|
+
# @param query [Hash, nil] Request query parameters
|
16
|
+
# @param body [Hash, nil] Request body parameters
|
17
|
+
# @param headers [Hash, nil] Request headers
|
18
|
+
# @return [Response] Response object
|
19
|
+
|
20
|
+
#
|
21
|
+
# List transactions
|
22
|
+
#
|
23
|
+
# @see https://developer.paypal.com/docs/api/transaction-search/v1/#search_get
|
24
|
+
#
|
25
|
+
# @macro request
|
26
|
+
#
|
27
|
+
def list_transactions(query: nil, body: nil, headers: nil)
|
28
|
+
client.get("/v1/reporting/transactions", query: query, body: body, headers: headers)
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# List all balances
|
33
|
+
#
|
34
|
+
# @see https://developer.paypal.com/docs/api/transaction-search/v1/#balances_get
|
35
|
+
#
|
36
|
+
# @macro request
|
37
|
+
#
|
38
|
+
def list_all_balances(query: nil, body: nil, headers: nil)
|
39
|
+
client.get("/v1/reporting/balances", query: query, body: body, headers: headers)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
include APIs
|
44
|
+
extend APIs
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
class Client
|
5
|
+
#
|
6
|
+
# Client methods to get access token
|
7
|
+
#
|
8
|
+
module AccessTokenMethods
|
9
|
+
#
|
10
|
+
# Checks cached access token is expired and returns it or generates new one
|
11
|
+
#
|
12
|
+
# @return [AccessToken] AccessToken object
|
13
|
+
#
|
14
|
+
def access_token
|
15
|
+
(@access_token.nil? || @access_token.expired?) ? refresh_access_token : @access_token
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# Generates and caches new AccessToken
|
20
|
+
#
|
21
|
+
# @return [AccessToken] new AccessToken object
|
22
|
+
#
|
23
|
+
def refresh_access_token
|
24
|
+
requested_at = Time.now
|
25
|
+
response = authentication.generate_access_token
|
26
|
+
|
27
|
+
@access_token = AccessToken.new(
|
28
|
+
requested_at: requested_at,
|
29
|
+
expires_in: response.fetch(:expires_in),
|
30
|
+
access_token: response.fetch(:access_token),
|
31
|
+
token_type: response.fetch(:token_type)
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
class Client
|
5
|
+
#
|
6
|
+
# Methods to access API collections
|
7
|
+
#
|
8
|
+
module APIMethods
|
9
|
+
# @return [AuthorizedPayments] AuthorizedPayments APIs collection
|
10
|
+
def authorized_payments
|
11
|
+
AuthorizedPayments.new(self)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [CapturedPayments] CapturedPayments APIs collection
|
15
|
+
def captured_payments
|
16
|
+
CapturedPayments.new(self)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Authentication] Authentication APIs collection
|
20
|
+
def authentication
|
21
|
+
Authentication.new(self)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [CatalogProducts] Catalog Products APIs collection
|
25
|
+
def catalog_products
|
26
|
+
CatalogProducts.new(self)
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [Disputes] Disputes APIs collection
|
30
|
+
def disputes
|
31
|
+
Disputes.new(self)
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [InvoiceTemplates] InvoiceTemplates APIs collection
|
35
|
+
def invoice_templates
|
36
|
+
InvoiceTemplates.new(self)
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [Invoices] Invoices APIs collection
|
40
|
+
def invoices
|
41
|
+
Invoices.new(self)
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [Orders] Orders APIs collection
|
45
|
+
def orders
|
46
|
+
Orders.new(self)
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [PartnerReferrals] PartnerReferrals APIs collection
|
50
|
+
def partner_referrals
|
51
|
+
PartnerReferrals.new(self)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [PaymentExperienceWebProfiles] PaymentExperienceWebProfiles APIs collection
|
55
|
+
def payment_experience_web_profiles
|
56
|
+
PaymentExperienceWebProfiles.new(self)
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [PaymentTokens] PaymentTokens APIs collection
|
60
|
+
def payment_tokens
|
61
|
+
PaymentTokens.new(self)
|
62
|
+
end
|
63
|
+
|
64
|
+
# @return [PayoutItems] PayoutItems APIs collection
|
65
|
+
def payout_items
|
66
|
+
PayoutItems.new(self)
|
67
|
+
end
|
68
|
+
|
69
|
+
# @return [Payouts] Payouts APIs collection
|
70
|
+
def payouts
|
71
|
+
Payouts.new(self)
|
72
|
+
end
|
73
|
+
|
74
|
+
# @return [Refunds] Refunds APIs collection
|
75
|
+
def refunds
|
76
|
+
Refunds.new(self)
|
77
|
+
end
|
78
|
+
|
79
|
+
# @return [ReferencedPayoutItems] ReferencedPayoutItems APIs collection
|
80
|
+
def referenced_payout_items
|
81
|
+
ReferencedPayoutItems.new(self)
|
82
|
+
end
|
83
|
+
|
84
|
+
# @return [ReferencedPayouts] ReferencedPayouts APIs collection
|
85
|
+
def referenced_payouts
|
86
|
+
ReferencedPayouts.new(self)
|
87
|
+
end
|
88
|
+
|
89
|
+
# @return [SetupTokens] SetupTokens APIs collection
|
90
|
+
def setup_tokens
|
91
|
+
SetupTokens.new(self)
|
92
|
+
end
|
93
|
+
|
94
|
+
# @return [ShipmentTracking] Shipment Tracking APIs collection
|
95
|
+
def shipment_tracking
|
96
|
+
ShipmentTracking.new(self)
|
97
|
+
end
|
98
|
+
|
99
|
+
# @return [Subscriptions] Subscriptions APIs collection
|
100
|
+
def subscriptions
|
101
|
+
Subscriptions.new(self)
|
102
|
+
end
|
103
|
+
|
104
|
+
# @return [SubscriptionPlans] Subscription Plans APIs collection
|
105
|
+
def subscription_plans
|
106
|
+
SubscriptionPlans.new(self)
|
107
|
+
end
|
108
|
+
|
109
|
+
# @return [TransactionSearch] TransactionSearch APIs collection
|
110
|
+
def transaction_search
|
111
|
+
TransactionSearch.new(self)
|
112
|
+
end
|
113
|
+
|
114
|
+
# @return [UserInfo] User Info APIs collection
|
115
|
+
def user_info
|
116
|
+
UserInfo.new(self)
|
117
|
+
end
|
118
|
+
|
119
|
+
# @return [Users] Users Management APIs collection
|
120
|
+
def users
|
121
|
+
Users.new(self)
|
122
|
+
end
|
123
|
+
|
124
|
+
# @return [Webhooks] Webhooks APIs collection
|
125
|
+
def webhooks
|
126
|
+
Webhooks.new(self)
|
127
|
+
end
|
128
|
+
|
129
|
+
# @return [WebhookEvents] Webhook Events APIs collection
|
130
|
+
def webhook_lookups
|
131
|
+
WebhookLookups.new(self)
|
132
|
+
end
|
133
|
+
|
134
|
+
# @return [WebhookEvents] Webhook Lookups APIs collection
|
135
|
+
def webhook_events
|
136
|
+
WebhookEvents.new(self)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
class Client
|
5
|
+
#
|
6
|
+
# Client environment specific methods
|
7
|
+
#
|
8
|
+
module EnvironmentMethods
|
9
|
+
# Checks if PayPal LIVE environment enabled
|
10
|
+
# @return [Boolean] Checks if PayPal LIVE environment enabled
|
11
|
+
def live?
|
12
|
+
env.live?
|
13
|
+
end
|
14
|
+
|
15
|
+
# Checks if PayPal SANDBOX environment enabled
|
16
|
+
# @return [Boolean] Checks if PayPal SANDBOX environment enabled
|
17
|
+
def sandbox?
|
18
|
+
env.sandbox?
|
19
|
+
end
|
20
|
+
|
21
|
+
# Base API URL
|
22
|
+
# @return [String] Base API URL
|
23
|
+
def api_url
|
24
|
+
env.api_url
|
25
|
+
end
|
26
|
+
|
27
|
+
# Base WEB URL
|
28
|
+
# @return [String] Base WEB URL
|
29
|
+
def web_url
|
30
|
+
env.web_url
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PaypalAPI
|
4
|
+
class Client
|
5
|
+
#
|
6
|
+
# Client HTTP methods
|
7
|
+
#
|
8
|
+
module HTTPMethods
|
9
|
+
# @!macro [new] request
|
10
|
+
# @param path [String] Request path
|
11
|
+
# @param query [Hash, nil] Request query parameters
|
12
|
+
# @param body [Hash, nil] Request body parameters
|
13
|
+
# @param headers [Hash, nil] Request headers
|
14
|
+
#
|
15
|
+
# @return [Response] Response object
|
16
|
+
|
17
|
+
#
|
18
|
+
# Executes POST http request
|
19
|
+
#
|
20
|
+
# @macro request
|
21
|
+
#
|
22
|
+
def post(path, query: nil, body: nil, headers: nil)
|
23
|
+
execute_request(Net::HTTP::Post, path, query: query, body: body, headers: headers)
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Executes GET http request
|
28
|
+
#
|
29
|
+
# @macro request
|
30
|
+
#
|
31
|
+
def get(path, query: nil, body: nil, headers: nil)
|
32
|
+
execute_request(Net::HTTP::Get, path, query: query, body: body, headers: headers)
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Executes PATCH http request
|
37
|
+
#
|
38
|
+
# @macro request
|
39
|
+
#
|
40
|
+
def patch(path, query: nil, body: nil, headers: nil)
|
41
|
+
execute_request(Net::HTTP::Patch, path, query: query, body: body, headers: headers)
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# Executes PUT http request
|
46
|
+
#
|
47
|
+
# @macro request
|
48
|
+
#
|
49
|
+
def put(path, query: nil, body: nil, headers: nil)
|
50
|
+
execute_request(Net::HTTP::Put, path, query: query, body: body, headers: headers)
|
51
|
+
end
|
52
|
+
|
53
|
+
#
|
54
|
+
# Executes DELETE http request
|
55
|
+
#
|
56
|
+
# @macro request
|
57
|
+
#
|
58
|
+
def delete(path, query: nil, body: nil, headers: nil)
|
59
|
+
execute_request(Net::HTTP::Delete, path, query: query, body: body, headers: headers)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def execute_request(http_method, path, query: nil, body: nil, headers: nil)
|
65
|
+
request = Request.new(self, http_method, path, query: query, body: body, headers: headers)
|
66
|
+
RequestExecutor.new(self, request).call
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/paypal-api/client.rb
CHANGED
@@ -5,6 +5,11 @@ module PaypalAPI
|
|
5
5
|
# PaypalAPI Client
|
6
6
|
#
|
7
7
|
class Client
|
8
|
+
include AccessTokenMethods
|
9
|
+
include APIMethods
|
10
|
+
include EnvironmentMethods
|
11
|
+
include HTTPMethods
|
12
|
+
|
8
13
|
# Paypal environment
|
9
14
|
attr_reader :env
|
10
15
|
|
@@ -43,30 +48,6 @@ module PaypalAPI
|
|
43
48
|
@access_token = nil
|
44
49
|
end
|
45
50
|
|
46
|
-
# Checks if PayPal LIVE environment enabled
|
47
|
-
# @return [Boolean] Checks if PayPal LIVE environment enabled
|
48
|
-
def live?
|
49
|
-
env.live?
|
50
|
-
end
|
51
|
-
|
52
|
-
# Checks if PayPal SANDBOX environment enabled
|
53
|
-
# @return [Boolean] Checks if PayPal SANDBOX environment enabled
|
54
|
-
def sandbox?
|
55
|
-
env.sandbox?
|
56
|
-
end
|
57
|
-
|
58
|
-
# Base API URL
|
59
|
-
# @return [String] Base API URL
|
60
|
-
def api_url
|
61
|
-
env.api_url
|
62
|
-
end
|
63
|
-
|
64
|
-
# Base WEB URL
|
65
|
-
# @return [String] Base WEB URL
|
66
|
-
def web_url
|
67
|
-
env.web_url
|
68
|
-
end
|
69
|
-
|
70
51
|
# Registers callback
|
71
52
|
#
|
72
53
|
# @param callback_name [Symbol] Callback name.
|
@@ -90,32 +71,6 @@ module PaypalAPI
|
|
90
71
|
callbacks.fetch(callback_name) << block
|
91
72
|
end
|
92
73
|
|
93
|
-
#
|
94
|
-
# Checks cached access token is expired and returns it or generates new one
|
95
|
-
#
|
96
|
-
# @return [AccessToken] AccessToken object
|
97
|
-
#
|
98
|
-
def access_token
|
99
|
-
(@access_token.nil? || @access_token.expired?) ? refresh_access_token : @access_token
|
100
|
-
end
|
101
|
-
|
102
|
-
#
|
103
|
-
# Generates and caches new AccessToken
|
104
|
-
#
|
105
|
-
# @return [AccessToken] new AccessToken object
|
106
|
-
#
|
107
|
-
def refresh_access_token
|
108
|
-
requested_at = Time.now
|
109
|
-
response = authentication.generate_access_token
|
110
|
-
|
111
|
-
@access_token = AccessToken.new(
|
112
|
-
requested_at: requested_at,
|
113
|
-
expires_in: response.fetch(:expires_in),
|
114
|
-
access_token: response.fetch(:access_token),
|
115
|
-
token_type: response.fetch(:token_type)
|
116
|
-
)
|
117
|
-
end
|
118
|
-
|
119
74
|
#
|
120
75
|
# Verifies Webhook
|
121
76
|
#
|
@@ -147,180 +102,5 @@ module PaypalAPI
|
|
147
102
|
def verify_webhook(webhook_id:, headers:, raw_body:)
|
148
103
|
WebhookVerifier.new(self).call(webhook_id: webhook_id, headers: headers, raw_body: raw_body)
|
149
104
|
end
|
150
|
-
|
151
|
-
# @!macro [new] request
|
152
|
-
# @param path [String] Request path
|
153
|
-
# @param query [Hash, nil] Request query parameters
|
154
|
-
# @param body [Hash, nil] Request body parameters
|
155
|
-
# @param headers [Hash, nil] Request headers
|
156
|
-
#
|
157
|
-
# @return [Response] Response object
|
158
|
-
|
159
|
-
#
|
160
|
-
# Executes POST http request
|
161
|
-
#
|
162
|
-
# @macro request
|
163
|
-
#
|
164
|
-
def post(path, query: nil, body: nil, headers: nil)
|
165
|
-
execute_request(Net::HTTP::Post, path, query: query, body: body, headers: headers)
|
166
|
-
end
|
167
|
-
|
168
|
-
#
|
169
|
-
# Executes GET http request
|
170
|
-
#
|
171
|
-
# @macro request
|
172
|
-
#
|
173
|
-
def get(path, query: nil, body: nil, headers: nil)
|
174
|
-
execute_request(Net::HTTP::Get, path, query: query, body: body, headers: headers)
|
175
|
-
end
|
176
|
-
|
177
|
-
#
|
178
|
-
# Executes PATCH http request
|
179
|
-
#
|
180
|
-
# @macro request
|
181
|
-
#
|
182
|
-
def patch(path, query: nil, body: nil, headers: nil)
|
183
|
-
execute_request(Net::HTTP::Patch, path, query: query, body: body, headers: headers)
|
184
|
-
end
|
185
|
-
|
186
|
-
#
|
187
|
-
# Executes PUT http request
|
188
|
-
#
|
189
|
-
# @macro request
|
190
|
-
#
|
191
|
-
def put(path, query: nil, body: nil, headers: nil)
|
192
|
-
execute_request(Net::HTTP::Put, path, query: query, body: body, headers: headers)
|
193
|
-
end
|
194
|
-
|
195
|
-
#
|
196
|
-
# Executes DELETE http request
|
197
|
-
#
|
198
|
-
# @macro request
|
199
|
-
#
|
200
|
-
def delete(path, query: nil, body: nil, headers: nil)
|
201
|
-
execute_request(Net::HTTP::Delete, path, query: query, body: body, headers: headers)
|
202
|
-
end
|
203
|
-
|
204
|
-
# @return [AuthorizedPayments] AuthorizedPayments APIs collection
|
205
|
-
def authorized_payments
|
206
|
-
AuthorizedPayments.new(self)
|
207
|
-
end
|
208
|
-
|
209
|
-
# @return [CapturedPayments] CapturedPayments APIs collection
|
210
|
-
def captured_payments
|
211
|
-
CapturedPayments.new(self)
|
212
|
-
end
|
213
|
-
|
214
|
-
# @return [Authentication] Authentication APIs collection
|
215
|
-
def authentication
|
216
|
-
Authentication.new(self)
|
217
|
-
end
|
218
|
-
|
219
|
-
# @return [CatalogProducts] Catalog Products APIs collection
|
220
|
-
def catalog_products
|
221
|
-
CatalogProducts.new(self)
|
222
|
-
end
|
223
|
-
|
224
|
-
# @return [Disputes] Disputes APIs collection
|
225
|
-
def disputes
|
226
|
-
Disputes.new(self)
|
227
|
-
end
|
228
|
-
|
229
|
-
# @return [InvoiceTemplates] InvoiceTemplates APIs collection
|
230
|
-
def invoice_templates
|
231
|
-
InvoiceTemplates.new(self)
|
232
|
-
end
|
233
|
-
|
234
|
-
# @return [Invoices] Invoices APIs collection
|
235
|
-
def invoices
|
236
|
-
Invoices.new(self)
|
237
|
-
end
|
238
|
-
|
239
|
-
# @return [Orders] Orders APIs collection
|
240
|
-
def orders
|
241
|
-
Orders.new(self)
|
242
|
-
end
|
243
|
-
|
244
|
-
# @return [PaymentTokens] PaymentTokens APIs collection
|
245
|
-
def payment_tokens
|
246
|
-
PaymentTokens.new(self)
|
247
|
-
end
|
248
|
-
|
249
|
-
# @return [PayoutItems] PayoutItems APIs collection
|
250
|
-
def payout_items
|
251
|
-
PayoutItems.new(self)
|
252
|
-
end
|
253
|
-
|
254
|
-
# @return [Payouts] Payouts APIs collection
|
255
|
-
def payouts
|
256
|
-
Payouts.new(self)
|
257
|
-
end
|
258
|
-
|
259
|
-
# @return [Refunds] Refunds APIs collection
|
260
|
-
def refunds
|
261
|
-
Refunds.new(self)
|
262
|
-
end
|
263
|
-
|
264
|
-
# @return [ReferencedPayoutItems] ReferencedPayoutItems APIs collection
|
265
|
-
def referenced_payout_items
|
266
|
-
ReferencedPayoutItems.new(self)
|
267
|
-
end
|
268
|
-
|
269
|
-
# @return [ReferencedPayouts] ReferencedPayouts APIs collection
|
270
|
-
def referenced_payouts
|
271
|
-
ReferencedPayouts.new(self)
|
272
|
-
end
|
273
|
-
|
274
|
-
# @return [SetupTokens] SetupTokens APIs collection
|
275
|
-
def setup_tokens
|
276
|
-
SetupTokens.new(self)
|
277
|
-
end
|
278
|
-
|
279
|
-
# @return [ShipmentTracking] Shipment Tracking APIs collection
|
280
|
-
def shipment_tracking
|
281
|
-
ShipmentTracking.new(self)
|
282
|
-
end
|
283
|
-
|
284
|
-
# @return [Subscriptions] Subscriptions APIs collection
|
285
|
-
def subscriptions
|
286
|
-
Subscriptions.new(self)
|
287
|
-
end
|
288
|
-
|
289
|
-
# @return [SubscriptionPlans] Subscription Plans APIs collection
|
290
|
-
def subscription_plans
|
291
|
-
SubscriptionPlans.new(self)
|
292
|
-
end
|
293
|
-
|
294
|
-
# @return [UserInfo] User Info APIs collection
|
295
|
-
def user_info
|
296
|
-
UserInfo.new(self)
|
297
|
-
end
|
298
|
-
|
299
|
-
# @return [Users] Users Management APIs collection
|
300
|
-
def users
|
301
|
-
Users.new(self)
|
302
|
-
end
|
303
|
-
|
304
|
-
# @return [Webhooks] Webhooks APIs collection
|
305
|
-
def webhooks
|
306
|
-
Webhooks.new(self)
|
307
|
-
end
|
308
|
-
|
309
|
-
# @return [WebhookEvents] Webhook Events APIs collection
|
310
|
-
def webhook_lookups
|
311
|
-
WebhookLookups.new(self)
|
312
|
-
end
|
313
|
-
|
314
|
-
# @return [WebhookEvents] Webhook Lookups APIs collection
|
315
|
-
def webhook_events
|
316
|
-
WebhookEvents.new(self)
|
317
|
-
end
|
318
|
-
|
319
|
-
private
|
320
|
-
|
321
|
-
def execute_request(http_method, path, query: nil, body: nil, headers: nil)
|
322
|
-
request = Request.new(self, http_method, path, query: query, body: body, headers: headers)
|
323
|
-
RequestExecutor.new(self, request).call
|
324
|
-
end
|
325
105
|
end
|
326
106
|
end
|
data/lib/paypal-api/request.rb
CHANGED
@@ -99,7 +99,8 @@ module PaypalAPI
|
|
99
99
|
|
100
100
|
def build_http_uri(path, query)
|
101
101
|
uri = URI.join(client.env.api_url, path)
|
102
|
-
uri
|
102
|
+
add_query_params(uri, query)
|
103
|
+
|
103
104
|
uri
|
104
105
|
end
|
105
106
|
|
@@ -113,6 +114,20 @@ module PaypalAPI
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
117
|
+
def add_query_params(uri, query)
|
118
|
+
return if !query || query.empty?
|
119
|
+
|
120
|
+
# We should merge query params with uri query params to not temove them
|
121
|
+
uri_query_string = uri.query
|
122
|
+
|
123
|
+
if uri_query_string && !uri_query_string.empty?
|
124
|
+
old_query = URI.decode_www_form(uri_query_string).to_h
|
125
|
+
query = old_query.transform_keys!(&:to_sym).merge!(query.transform_keys(&:to_sym))
|
126
|
+
end
|
127
|
+
|
128
|
+
uri.query = URI.encode_www_form(query)
|
129
|
+
end
|
130
|
+
|
116
131
|
#
|
117
132
|
# We should set json content type header to not get 415 UnsupportedMediaType
|
118
133
|
# error in various APIs
|
@@ -30,31 +30,40 @@ module PaypalAPI
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def
|
33
|
+
def start_execution(retry_number)
|
34
34
|
callbacks_context[:retry_number] = retry_number
|
35
|
-
|
36
35
|
run_callbacks(:before)
|
37
|
-
|
38
|
-
|
39
|
-
raise error if NetworkErrorBuilder::ERRORS.none? { |network_error_class| error.is_a?(network_error_class) }
|
36
|
+
execute_net_http_request
|
37
|
+
end
|
40
38
|
|
39
|
+
def handle_network_error(error, retry_number)
|
41
40
|
will_retry = retries[:enabled] && !retries_limit_reached?(retry_number)
|
42
41
|
callbacks_context[:will_retry] = will_retry
|
43
42
|
run_callbacks(:after_network_error, error)
|
44
43
|
raise NetworkErrorBuilder.call(request: request, error: error) unless will_retry
|
45
44
|
|
46
45
|
retry_request(retry_number)
|
46
|
+
end
|
47
|
+
|
48
|
+
def handle_success_response(response)
|
49
|
+
callbacks_context.delete(:will_retry)
|
50
|
+
run_callbacks(:after_success, response)
|
51
|
+
response
|
52
|
+
end
|
53
|
+
|
54
|
+
def handle_failed_response(response, retry_number)
|
55
|
+
will_retry = retries[:enabled] && retryable?(response, retry_number)
|
56
|
+
callbacks_context[:will_retry] = will_retry
|
57
|
+
run_callbacks(:after_fail, response)
|
58
|
+
will_retry ? retry_request(retry_number) : response
|
59
|
+
end
|
60
|
+
|
61
|
+
def execute_request(retry_number: 0)
|
62
|
+
response = start_execution(retry_number)
|
63
|
+
rescue => error
|
64
|
+
unknown_network_error?(error) ? handle_unknown_error(error) : handle_network_error(error, retry_number)
|
47
65
|
else
|
48
|
-
|
49
|
-
callbacks_context.delete(:will_retry)
|
50
|
-
run_callbacks(:after_success, response)
|
51
|
-
response
|
52
|
-
else
|
53
|
-
will_retry = retries[:enabled] && retryable?(response, retry_number)
|
54
|
-
callbacks_context[:will_retry] = will_retry
|
55
|
-
run_callbacks(:after_fail, response)
|
56
|
-
will_retry ? retry_request(retry_number) : response
|
57
|
-
end
|
66
|
+
response.success? ? handle_success_response(response) : handle_failed_response(response, retry_number)
|
58
67
|
end
|
59
68
|
|
60
69
|
def execute_net_http_request
|
@@ -105,6 +114,14 @@ module PaypalAPI
|
|
105
114
|
true
|
106
115
|
end
|
107
116
|
|
117
|
+
def unknown_network_error?(error)
|
118
|
+
NetworkErrorBuilder::ERRORS.none? { |network_error_class| error.is_a?(network_error_class) }
|
119
|
+
end
|
120
|
+
|
121
|
+
def handle_unknown_error(error)
|
122
|
+
raise error
|
123
|
+
end
|
124
|
+
|
108
125
|
def run_callbacks(callback_name, resp = nil)
|
109
126
|
callbacks[callback_name].each { |callback| callback.call(request, callbacks_context, resp) }
|
110
127
|
end
|
data/lib/paypal-api/response.rb
CHANGED
@@ -108,6 +108,72 @@ module PaypalAPI
|
|
108
108
|
"#<#{self.class.name} (#{http_response.code})>"
|
109
109
|
end
|
110
110
|
|
111
|
+
#
|
112
|
+
# Follow up HATEOAS link
|
113
|
+
#
|
114
|
+
# @see https://developer.paypal.com/api/rest/responses/#link-hateoaslinks
|
115
|
+
#
|
116
|
+
# @param rel [String] Target link "rel" attribute
|
117
|
+
# @param query [Hash] Request additional query parameters
|
118
|
+
# @param body [Hash] Request body parameters
|
119
|
+
# @param headers [Hash] Request headers
|
120
|
+
#
|
121
|
+
# @return [Response, nil] Follow-up link response, if link with provided "rel" exists
|
122
|
+
#
|
123
|
+
def follow_up_link(rel, query: nil, body: nil, headers: nil)
|
124
|
+
links = self[:links]
|
125
|
+
return unless links
|
126
|
+
|
127
|
+
link = links.find { |curr_link| curr_link[:rel] == rel.to_s }
|
128
|
+
return unless link
|
129
|
+
|
130
|
+
http_method = link[:method]&.downcase || :get
|
131
|
+
request.client.public_send(http_method, link[:href], query: query, body: body, headers: headers)
|
132
|
+
end
|
133
|
+
|
134
|
+
#
|
135
|
+
# Pagination methods
|
136
|
+
#
|
137
|
+
module PaginationHelpers
|
138
|
+
#
|
139
|
+
# Iterates through all response pages by requesting HATEOAS "next" links,
|
140
|
+
# making additional fetches to the API as necessary.
|
141
|
+
#
|
142
|
+
# @see #follow_up_link
|
143
|
+
#
|
144
|
+
# @yield [Response] Next page response
|
145
|
+
#
|
146
|
+
# @return [void]
|
147
|
+
#
|
148
|
+
def each_page(&block)
|
149
|
+
return enum_for(:each_page) unless block
|
150
|
+
|
151
|
+
page = self
|
152
|
+
yield(page)
|
153
|
+
yield(page) while (page = page.follow_up_link("next"))
|
154
|
+
end
|
155
|
+
|
156
|
+
#
|
157
|
+
# Iterates through all items in response +items_field_name+ field,
|
158
|
+
# making additional pages requests as necessary.
|
159
|
+
#
|
160
|
+
# @see #each_page
|
161
|
+
#
|
162
|
+
# @param items_field_name [Symbol] Name of field containing items
|
163
|
+
#
|
164
|
+
# @yield [Hash] Item
|
165
|
+
#
|
166
|
+
# @return [void]
|
167
|
+
#
|
168
|
+
def each_page_item(items_field_name, &block)
|
169
|
+
return enum_for(:each_page_item, items_field_name) unless block
|
170
|
+
|
171
|
+
each_page do |page|
|
172
|
+
page.fetch(items_field_name).each(&block)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
111
177
|
private
|
112
178
|
|
113
179
|
def json_response?
|
@@ -120,5 +186,7 @@ module PaypalAPI
|
|
120
186
|
rescue JSON::ParserError, TypeError
|
121
187
|
json
|
122
188
|
end
|
189
|
+
|
190
|
+
include PaginationHelpers
|
123
191
|
end
|
124
192
|
end
|
data/lib/paypal-api.rb
CHANGED
@@ -100,10 +100,8 @@ module PaypalAPI
|
|
100
100
|
|
101
101
|
#
|
102
102
|
# @!macro [new] api_collection
|
103
|
-
# $
|
103
|
+
# $3 APIs collection
|
104
104
|
# @api public
|
105
|
-
# @example
|
106
|
-
# PaypalAPI.$0
|
107
105
|
#
|
108
106
|
|
109
107
|
#
|
@@ -139,6 +137,14 @@ module PaypalAPI
|
|
139
137
|
# @macro api_collection
|
140
138
|
# @return [Orders]
|
141
139
|
#
|
140
|
+
# @!method partner_referrals
|
141
|
+
# @macro api_collection
|
142
|
+
# @return [PartnerReferrals]
|
143
|
+
#
|
144
|
+
# @!method payment_experience_web_profiles
|
145
|
+
# @macro api_collection
|
146
|
+
# @return [PaymentExperienceWebProfile]
|
147
|
+
#
|
142
148
|
# @!method payout_items
|
143
149
|
# @macro api_collection
|
144
150
|
# @return [PayoutItems]
|
@@ -171,6 +177,10 @@ module PaypalAPI
|
|
171
177
|
# @macro api_collection
|
172
178
|
# @return [SubscriptionPlans]
|
173
179
|
#
|
180
|
+
# @!method transaction_search
|
181
|
+
# @macro api_collection
|
182
|
+
# @return [TransactionSearch]
|
183
|
+
#
|
174
184
|
# @!method user_info
|
175
185
|
# @macro api_collection
|
176
186
|
# @return [UserInfo]
|
@@ -200,6 +210,8 @@ module PaypalAPI
|
|
200
210
|
invoice_templates
|
201
211
|
invoices
|
202
212
|
orders
|
213
|
+
partner_referrals
|
214
|
+
payment_experience_web_profiles
|
203
215
|
payment_tokens
|
204
216
|
payout_items
|
205
217
|
payouts
|
@@ -210,6 +222,7 @@ module PaypalAPI
|
|
210
222
|
shipment_tracking
|
211
223
|
subscriptions
|
212
224
|
subscription_plans
|
225
|
+
transaction_search
|
213
226
|
user_info
|
214
227
|
users
|
215
228
|
webhooks
|
@@ -237,6 +250,10 @@ end
|
|
237
250
|
require_relative "paypal-api/access_token"
|
238
251
|
require_relative "paypal-api/api_collection"
|
239
252
|
require_relative "paypal-api/environment"
|
253
|
+
require_relative "paypal-api/client/access_token_methods"
|
254
|
+
require_relative "paypal-api/client/api_methods"
|
255
|
+
require_relative "paypal-api/client/environment_methods"
|
256
|
+
require_relative "paypal-api/client/http_methods"
|
240
257
|
require_relative "paypal-api/client"
|
241
258
|
require_relative "paypal-api/config"
|
242
259
|
require_relative "paypal-api/error"
|
@@ -255,6 +272,8 @@ require_relative "paypal-api/api_collections/disputes"
|
|
255
272
|
require_relative "paypal-api/api_collections/invoice_templates"
|
256
273
|
require_relative "paypal-api/api_collections/invoices"
|
257
274
|
require_relative "paypal-api/api_collections/orders"
|
275
|
+
require_relative "paypal-api/api_collections/partner_referrals"
|
276
|
+
require_relative "paypal-api/api_collections/payment_experience_web_profiles"
|
258
277
|
require_relative "paypal-api/api_collections/payment_tokens"
|
259
278
|
require_relative "paypal-api/api_collections/payout_items"
|
260
279
|
require_relative "paypal-api/api_collections/payouts"
|
@@ -265,6 +284,7 @@ require_relative "paypal-api/api_collections/setup_tokens"
|
|
265
284
|
require_relative "paypal-api/api_collections/shipment_tracking"
|
266
285
|
require_relative "paypal-api/api_collections/subscriptions"
|
267
286
|
require_relative "paypal-api/api_collections/subscription_plans"
|
287
|
+
require_relative "paypal-api/api_collections/transaction_search"
|
268
288
|
require_relative "paypal-api/api_collections/user_info"
|
269
289
|
require_relative "paypal-api/api_collections/users"
|
270
290
|
require_relative "paypal-api/api_collections/webhooks"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paypal-rest-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Glushkov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: PayPal REST API with no dependencies.
|
14
14
|
email:
|
@@ -30,6 +30,8 @@ files:
|
|
30
30
|
- lib/paypal-api/api_collections/invoice_templates.rb
|
31
31
|
- lib/paypal-api/api_collections/invoices.rb
|
32
32
|
- lib/paypal-api/api_collections/orders.rb
|
33
|
+
- lib/paypal-api/api_collections/partner_referrals.rb
|
34
|
+
- lib/paypal-api/api_collections/payment_experience_web_profiles.rb
|
33
35
|
- lib/paypal-api/api_collections/payment_tokens.rb
|
34
36
|
- lib/paypal-api/api_collections/payout_items.rb
|
35
37
|
- lib/paypal-api/api_collections/payouts.rb
|
@@ -40,12 +42,17 @@ files:
|
|
40
42
|
- lib/paypal-api/api_collections/shipment_tracking.rb
|
41
43
|
- lib/paypal-api/api_collections/subscription_plans.rb
|
42
44
|
- lib/paypal-api/api_collections/subscriptions.rb
|
45
|
+
- lib/paypal-api/api_collections/transaction_search.rb
|
43
46
|
- lib/paypal-api/api_collections/user_info.rb
|
44
47
|
- lib/paypal-api/api_collections/users.rb
|
45
48
|
- lib/paypal-api/api_collections/webhook_events.rb
|
46
49
|
- lib/paypal-api/api_collections/webhook_lookups.rb
|
47
50
|
- lib/paypal-api/api_collections/webhooks.rb
|
48
51
|
- lib/paypal-api/client.rb
|
52
|
+
- lib/paypal-api/client/access_token_methods.rb
|
53
|
+
- lib/paypal-api/client/api_methods.rb
|
54
|
+
- lib/paypal-api/client/environment_methods.rb
|
55
|
+
- lib/paypal-api/client/http_methods.rb
|
49
56
|
- lib/paypal-api/config.rb
|
50
57
|
- lib/paypal-api/environment.rb
|
51
58
|
- lib/paypal-api/error.rb
|
@@ -80,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
87
|
- !ruby/object:Gem::Version
|
81
88
|
version: '0'
|
82
89
|
requirements: []
|
83
|
-
rubygems_version: 3.5.
|
90
|
+
rubygems_version: 3.5.20
|
84
91
|
signing_key:
|
85
92
|
specification_version: 4
|
86
93
|
summary: PayPal REST API
|