paypal-payouts-sdk 1.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/dependabot.yml +11 -0
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.travis.yml +13 -0
- data/LICENSE +2 -2
- data/README.md +115 -15
- data/lib/core/version.rb +1 -1
- data/paypal-payouts-sdk.gemspec +4 -4
- data/samples/create_payouts.rb +84 -35
- data/samples/get_payout_item.rb +21 -15
- data/samples/get_payouts.rb +23 -17
- data/samples/run_all.rb +12 -0
- metadata +14 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 598861fd1faeb51dc3004c3ce7eb867dacab94dc5bf07f0054a388745d0266ac
|
4
|
+
data.tar.gz: 57b8b3adc6b021c078d53c6e58d52644e536ea29e6c597e943818396def22d71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 379b7a34c7d71d527a676b06f8f8f59655d228e2a4210fe406adb7528700016eb99eba2eaefeafc59185a9a0680a4dd9cc12015159c2c745bbdb66bc1870d251
|
7
|
+
data.tar.gz: b57381faa439a1519a8bc21349c7fbbcb8bc75768aa990120571b7222598e31da4205311cb6cc6c4ae5610dcfbadbea0280874cbc49c4e9421db804bd3a6c7f2
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
3
|
+
# Please see the documentation for all configuration options:
|
4
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
5
|
+
|
6
|
+
version: 2
|
7
|
+
updates:
|
8
|
+
- package-ecosystem: "bundler" # See documentation for possible values
|
9
|
+
directory: "/" # Location of package manifests
|
10
|
+
schedule:
|
11
|
+
interval: "daily"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# For most projects, this workflow file will not need changing; you simply need
|
2
|
+
# to commit it to your repository.
|
3
|
+
#
|
4
|
+
# You may wish to alter this file to override the set of languages analyzed,
|
5
|
+
# or to provide custom queries or build logic.
|
6
|
+
#
|
7
|
+
# ******** NOTE ********
|
8
|
+
# We have attempted to detect the languages in your repository. Please check
|
9
|
+
# the `language` matrix defined below to confirm you have the correct set of
|
10
|
+
# supported CodeQL languages.
|
11
|
+
#
|
12
|
+
name: "CodeQL"
|
13
|
+
|
14
|
+
on:
|
15
|
+
push:
|
16
|
+
branches: [ master ]
|
17
|
+
pull_request:
|
18
|
+
# The branches below must be a subset of the branches above
|
19
|
+
branches: [ master ]
|
20
|
+
schedule:
|
21
|
+
- cron: '42 8 * * 2'
|
22
|
+
|
23
|
+
jobs:
|
24
|
+
analyze:
|
25
|
+
name: Analyze
|
26
|
+
runs-on: ubuntu-latest
|
27
|
+
permissions:
|
28
|
+
actions: read
|
29
|
+
contents: read
|
30
|
+
security-events: write
|
31
|
+
|
32
|
+
strategy:
|
33
|
+
fail-fast: false
|
34
|
+
matrix:
|
35
|
+
language: [ 'ruby' ]
|
36
|
+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
37
|
+
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
38
|
+
|
39
|
+
steps:
|
40
|
+
- name: Checkout repository
|
41
|
+
uses: actions/checkout@v2
|
42
|
+
|
43
|
+
# Initializes the CodeQL tools for scanning.
|
44
|
+
- name: Initialize CodeQL
|
45
|
+
uses: github/codeql-action/init@v1
|
46
|
+
with:
|
47
|
+
languages: ${{ matrix.language }}
|
48
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
49
|
+
# By default, queries listed here will override any specified in a config file.
|
50
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
51
|
+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
52
|
+
|
53
|
+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
54
|
+
# If this step fails, then you should remove it and run the build manually (see below)
|
55
|
+
- name: Autobuild
|
56
|
+
uses: github/codeql-action/autobuild@v1
|
57
|
+
|
58
|
+
# ℹ️ Command-line programs to run using the OS shell.
|
59
|
+
# 📚 https://git.io/JvXDl
|
60
|
+
|
61
|
+
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
62
|
+
# and modify them (or add more) to build your code if your project
|
63
|
+
# uses a compiled language
|
64
|
+
|
65
|
+
#- run: |
|
66
|
+
# make bootstrap
|
67
|
+
# make release
|
68
|
+
|
69
|
+
- name: Perform CodeQL Analysis
|
70
|
+
uses: github/codeql-action/analyze@v1
|
data/.travis.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
sudo: required
|
2
|
+
dist: trusty
|
3
|
+
language: ruby
|
4
|
+
rvm:
|
5
|
+
- "2.0.0"
|
6
|
+
- "2.2.5"
|
7
|
+
- "2.3.1"
|
8
|
+
script: "PAYPAL_CLIENT_ID=YOUR_SANDBOX_CLIENT_ID PAYPAL_CLIENT_SECRET=YOUR_SANDBOX_CLIENT_SECRET bundle exec rspec"
|
9
|
+
sudo: false
|
10
|
+
notifications:
|
11
|
+
recipients:
|
12
|
+
- dl-paypal-payouts-sdk@paypal.com
|
13
|
+
on_success: change
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -2,21 +2,41 @@
|
|
2
2
|
|
3
3
|
![PayPal Developer](homepage.jpg)
|
4
4
|
|
5
|
-
__Welcome to PayPal Ruby SDK__. This repository contains PayPal's
|
5
|
+
__Welcome to PayPal Ruby SDK__. This repository contains PayPal's Ruby SDK and samples for [v1/payments/payouts](https://developer.paypal.com/docs/api/payments.payouts-batch/v1/) APIs.
|
6
6
|
|
7
7
|
This is a part of the next major PayPal SDK. It includes a simplified interface to only provide simple model objects and blueprints for HTTP calls. This repo currently contains functionality for PayPal Payouts APIs which includes [Payouts](https://developer.paypal.com/docs/api/payments.payouts-batch/v1/).
|
8
8
|
|
9
|
-
Please refer to the [PayPal Payouts Integration Guide](https://developer.paypal.com/docs/payouts/) for more information. Also refer to [Setup your SDK](https://developer.paypal.com/docs/
|
9
|
+
Please refer to the [PayPal Payouts Integration Guide](https://developer.paypal.com/docs/payouts/) for more information. Also refer to [Setup your SDK](https://developer.paypal.com/docs/payouts/reference/setup-sdk) for additional information about setting up the SDK.
|
10
10
|
|
11
11
|
## Prerequisites
|
12
12
|
|
13
13
|
- Ruby 2.0.0 or above
|
14
14
|
- Bundler
|
15
15
|
|
16
|
+
## Installations
|
17
|
+
|
18
|
+
Add this line to your application's Gemfile:
|
19
|
+
|
20
|
+
```
|
21
|
+
gem 'paypal-payouts-sdk'
|
22
|
+
```
|
23
|
+
|
24
|
+
And then execute:
|
25
|
+
|
26
|
+
```
|
27
|
+
$ bundle
|
28
|
+
```
|
29
|
+
|
30
|
+
Or install it yourself as:
|
31
|
+
|
32
|
+
```
|
33
|
+
$ gem install paypal-payouts-sdk
|
34
|
+
```
|
35
|
+
|
16
36
|
## Usage
|
17
37
|
### Binaries
|
18
38
|
|
19
|
-
It is not mandatory to fork this repository for using the PayPal SDK. You can refer [PayPal Payouts SDK](https://developer.paypal.com/docs/
|
39
|
+
It is not mandatory to fork this repository for using the PayPal SDK. You can refer [PayPal Payouts SDK](https://developer.paypal.com/docs/payouts/reference/setup-sdk/#install-the-sdk) for configuring and working with SDK without forking this code.
|
20
40
|
|
21
41
|
For contributing or referring the samples, You can fork/refer this repository.
|
22
42
|
|
@@ -38,12 +58,12 @@ client = PayPal::PayPalHttpClient.new(environment)
|
|
38
58
|
## Examples
|
39
59
|
|
40
60
|
### Creating a Payouts
|
41
|
-
|
61
|
+
This code creates a Payout and prints the batch_id for the Payout.
|
42
62
|
#### Code:
|
43
63
|
```ruby
|
44
64
|
|
45
65
|
# Construct a request object and set desired parameters
|
46
|
-
# Here, PayoutsPostRequest
|
66
|
+
# Here, PayoutsPostRequest.new creates a POST request to /v1/payments/payouts
|
47
67
|
body = {
|
48
68
|
sender_batch_header: {
|
49
69
|
recipient_type: 'EMAIL',
|
@@ -53,7 +73,7 @@ body = {
|
|
53
73
|
email_subject: 'This is a test transaction from SDK'
|
54
74
|
},
|
55
75
|
items: [{
|
56
|
-
note: 'Your
|
76
|
+
note: 'Your $1 Payout!',
|
57
77
|
amount: {
|
58
78
|
currency: 'USD',
|
59
79
|
value: '1.00'
|
@@ -61,7 +81,7 @@ body = {
|
|
61
81
|
receiver: 'payout-sdk-1@paypal.com',
|
62
82
|
sender_item_id: 'Test_txn_1'
|
63
83
|
}, {
|
64
|
-
note: 'Your
|
84
|
+
note: 'Your $1 Payout!',
|
65
85
|
amount: {
|
66
86
|
currency: 'USD',
|
67
87
|
value: '1.00'
|
@@ -69,7 +89,7 @@ body = {
|
|
69
89
|
receiver: 'payout-sdk-2@paypal.com',
|
70
90
|
sender_item_id: 'Test_txn_2'
|
71
91
|
}, {
|
72
|
-
note: 'Your
|
92
|
+
note: 'Your $1 Payout!',
|
73
93
|
amount: {
|
74
94
|
currency: 'USD',
|
75
95
|
value: '1.00'
|
@@ -77,7 +97,7 @@ body = {
|
|
77
97
|
receiver: 'payout-sdk-3@paypal.com',
|
78
98
|
sender_item_id: 'Test_txn_3'
|
79
99
|
}, {
|
80
|
-
note: 'Your
|
100
|
+
note: 'Your $1 Payout!',
|
81
101
|
amount: {
|
82
102
|
currency: 'USD',
|
83
103
|
value: '1.00'
|
@@ -85,7 +105,7 @@ body = {
|
|
85
105
|
receiver: 'payout-sdk-4@paypal.com',
|
86
106
|
sender_item_id: 'Test_txn_4'
|
87
107
|
}, {
|
88
|
-
note: 'Your
|
108
|
+
note: 'Your $1 Payout!',
|
89
109
|
amount: {
|
90
110
|
currency: 'USD',
|
91
111
|
value: '1.00'
|
@@ -94,7 +114,7 @@ body = {
|
|
94
114
|
sender_item_id: 'Test_txn_5'
|
95
115
|
}]
|
96
116
|
}
|
97
|
-
request = PaypalPayoutsSdk::Payouts::PayoutsPostRequest
|
117
|
+
request = PaypalPayoutsSdk::Payouts::PayoutsPostRequest.new
|
98
118
|
request.request_body(body)
|
99
119
|
|
100
120
|
begin
|
@@ -111,13 +131,93 @@ rescue PayPalHttp::HttpError => ioe
|
|
111
131
|
end
|
112
132
|
```
|
113
133
|
|
134
|
+
### Handle API Failure
|
135
|
+
This will create a Payout with validation failure to showcase how to parse the failed response entity. Refer samples for more scenarios
|
136
|
+
```ruby
|
137
|
+
|
138
|
+
# Construct a request object and set desired parameters
|
139
|
+
# Here, PayoutsPostRequest.new creates a POST request to /v1/payments/payouts
|
140
|
+
body = {
|
141
|
+
sender_batch_header: {
|
142
|
+
recipient_type: 'EMAIL',
|
143
|
+
email_message: 'SDK payouts test txn',
|
144
|
+
note: 'Enjoy your Payout!!',
|
145
|
+
sender_batch_id: 'Test_SDK_1',
|
146
|
+
email_subject: 'This is a test transaction from SDK'
|
147
|
+
},
|
148
|
+
items: [{
|
149
|
+
note: 'Your $1 Payout!',
|
150
|
+
amount: {
|
151
|
+
currency: 'USD',
|
152
|
+
value: '1.0.0'
|
153
|
+
},
|
154
|
+
receiver: 'payout-sdk-1@paypal.com',
|
155
|
+
sender_item_id: 'Test_txn_1'
|
156
|
+
}, {
|
157
|
+
note: 'Your $1 Payout!',
|
158
|
+
amount: {
|
159
|
+
currency: 'USD',
|
160
|
+
value: '1.0.0'
|
161
|
+
},
|
162
|
+
receiver: 'payout-sdk-2@paypal.com',
|
163
|
+
sender_item_id: 'Test_txn_2'
|
164
|
+
}, {
|
165
|
+
note: 'Your $1 Payout!',
|
166
|
+
amount: {
|
167
|
+
currency: 'USD',
|
168
|
+
value: '1.0.0'
|
169
|
+
},
|
170
|
+
receiver: 'payout-sdk-3@paypal.com',
|
171
|
+
sender_item_id: 'Test_txn_3'
|
172
|
+
}, {
|
173
|
+
note: 'Your $1 Payout!',
|
174
|
+
amount: {
|
175
|
+
currency: 'USD',
|
176
|
+
value: '1.0.0'
|
177
|
+
},
|
178
|
+
receiver: 'payout-sdk-4@paypal.com',
|
179
|
+
sender_item_id: 'Test_txn_4'
|
180
|
+
}, {
|
181
|
+
note: 'Your $1 Payout!',
|
182
|
+
amount: {
|
183
|
+
currency: 'USD',
|
184
|
+
value: '1.0.0'
|
185
|
+
},
|
186
|
+
receiver: 'payout-sdk-5@paypal.com',
|
187
|
+
sender_item_id: 'Test_txn_5'
|
188
|
+
}]
|
189
|
+
}
|
190
|
+
request = PaypalPayoutsSdk::Payouts::PayoutsPostRequest.new
|
191
|
+
request.request_body(body)
|
192
|
+
|
193
|
+
begin
|
194
|
+
# Call API with your client and get a response for your call
|
195
|
+
client.execute(request)
|
196
|
+
|
197
|
+
rescue PayPalHttp::HttpError => ioe
|
198
|
+
# Something went wrong server-side
|
199
|
+
puts "Status Code: #{ioe.status_code}"
|
200
|
+
puts "Response: #{ioe.result}"
|
201
|
+
puts "Name: #{ioe.result.name}"
|
202
|
+
puts "Message: #{ioe.result.message}"
|
203
|
+
puts "Information link: #{ioe.result.information_link}"
|
204
|
+
puts "Debug Id: #{ioe.result.debug_id}"
|
205
|
+
puts "Details: "
|
206
|
+
ioe.result.details.each { |detail|
|
207
|
+
puts "Error Location: #{detail["location"]}"
|
208
|
+
puts "Error Field: #{detail["field"]}"
|
209
|
+
puts "Error issue: #{detail["issue"]}"
|
210
|
+
}
|
211
|
+
end
|
212
|
+
```
|
213
|
+
|
114
214
|
### Retrieve a Payout Batch
|
115
215
|
Pass the batch_id from the previous sample to retrieve Payouts batch details
|
116
216
|
|
117
217
|
#### Code:
|
118
218
|
```ruby
|
119
|
-
# Here, PayoutsGetRequest
|
120
|
-
request = PaypalPayoutsSdk::Payouts::PayoutsGetRequest
|
219
|
+
# Here, PayoutsGetRequest.new creates a GET request to /v1/payments/payouts/<batch-id>
|
220
|
+
request = PaypalPayoutsSdk::Payouts::PayoutsGetRequest.new("PAYOUT-BATCH-ID")
|
121
221
|
request.page(1)
|
122
222
|
request.page_size(10)
|
123
223
|
request.total_required(true)
|
@@ -150,8 +250,8 @@ You can start off by trying out [Payouts Samples](samples/run_all.rb)
|
|
150
250
|
|
151
251
|
To try out different samples head to [this link](samples)
|
152
252
|
|
153
|
-
Note: Update the `paypal_client.rb` with your sandbox client credentials or pass your client credentials as environment variable
|
253
|
+
Note: Update the `paypal_client.rb` with your sandbox client credentials or pass your client credentials as environment variable while executing the samples.
|
154
254
|
|
155
255
|
|
156
256
|
## License
|
157
|
-
Code released under [SDK LICENSE](LICENSE)
|
257
|
+
Code released under [SDK LICENSE](LICENSE)
|
data/lib/core/version.rb
CHANGED
data/paypal-payouts-sdk.gemspec
CHANGED
@@ -4,9 +4,9 @@ require 'core/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'paypal-payouts-sdk'
|
7
|
-
spec.version =
|
8
|
-
spec.summary = "
|
9
|
-
spec.description = "This repository contains PayPal's Ruby SDK for Payouts REST API"
|
7
|
+
spec.version = "2.0.1"
|
8
|
+
spec.summary = "Deprecated."
|
9
|
+
spec.description = "[Deprecated] This repository contains PayPal's Ruby SDK for Payouts REST API"
|
10
10
|
spec.authors = ["http://developer.paypal.com"]
|
11
11
|
spec.email = 'dl-paypal-payouts-sdk@paypal.com'
|
12
12
|
spec.homepage = 'https://github.com/paypal/Payouts-Ruby-SDK'
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_dependency 'paypalhttp', '~> 1.0.
|
22
|
+
spec.add_dependency 'paypalhttp', '~> 1.0.1'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
data/samples/create_payouts.rb
CHANGED
@@ -9,7 +9,78 @@ module Samples
|
|
9
9
|
# Calls the create batch api (POST - /v1/payments/payouts)
|
10
10
|
# A maximum of 15000 payout items are supported in a single batch request
|
11
11
|
def create_payouts(debug = false)
|
12
|
+
body = build_create_payload()
|
13
|
+
request = PayoutsPostRequest.new()
|
14
|
+
request.request_body(body)
|
15
|
+
|
16
|
+
begin
|
17
|
+
response = PayPalClient::client.execute(request)
|
18
|
+
if debug
|
19
|
+
puts "Status Code: #{response.status_code}"
|
20
|
+
puts "Status: #{response.result.status}"
|
21
|
+
puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}"
|
22
|
+
puts "Payout Batch Status: #{response.result.batch_header.batch_status}"
|
23
|
+
puts "Links: "
|
24
|
+
for link in response.result.links
|
25
|
+
# this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method
|
26
|
+
puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}"
|
27
|
+
end
|
28
|
+
puts PayPalClient::openstruct_to_hash(response.result).to_json
|
29
|
+
end
|
30
|
+
return response
|
31
|
+
rescue PayPalHttp::HttpError => ioe
|
32
|
+
# Exception occured while processing the payouts.
|
33
|
+
puts " Status Code: #{ioe.status_code}"
|
34
|
+
puts " Debug Id: #{ioe.result.debug_id}"
|
35
|
+
puts " Response: #{ioe.result}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Creates a payout batch with 5 payout items having invalid amount
|
40
|
+
# Calls the create batch api (POST - /v1/payments/payouts)
|
41
|
+
# A maximum of 15000 payout items are supported in a single batch request
|
42
|
+
def create_payouts_failure(debug = false)
|
43
|
+
body = build_create_payload(true)
|
44
|
+
request = PayoutsPostRequest.new()
|
45
|
+
request.request_body(body)
|
46
|
+
|
47
|
+
begin
|
48
|
+
response = PayPalClient::client.execute(request)
|
49
|
+
if debug
|
50
|
+
puts "Status Code: #{response.status_code}"
|
51
|
+
puts "Status: #{response.result.status}"
|
52
|
+
puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}"
|
53
|
+
puts "Payout Batch Status: #{response.result.batch_header.batch_status}"
|
54
|
+
puts "Links: "
|
55
|
+
for link in response.result.links
|
56
|
+
# this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method
|
57
|
+
puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}"
|
58
|
+
end
|
59
|
+
puts PayPalClient::openstruct_to_hash(response.result).to_json
|
60
|
+
end
|
61
|
+
return response
|
62
|
+
rescue PayPalHttp::HttpError => ioe
|
63
|
+
# Exception occured while processing the payouts.
|
64
|
+
puts "Status Code: #{ioe.status_code}"
|
65
|
+
puts "Response: #{ioe.result}"
|
66
|
+
puts "Name: #{ioe.result.name}"
|
67
|
+
puts "Message: #{ioe.result.message}"
|
68
|
+
puts "Information link: #{ioe.result.information_link}"
|
69
|
+
puts "Debug Id: #{ioe.result.debug_id}"
|
70
|
+
puts "Details: "
|
71
|
+
ioe.result.details.each { |detail|
|
72
|
+
puts "Error Location: #{detail["location"]}"
|
73
|
+
puts "Error Field: #{detail["field"]}"
|
74
|
+
puts "Error issue: #{detail["issue"]}"
|
75
|
+
}
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def build_create_payload(include_validation_failure = false)
|
12
82
|
sender_batch_id = 'Test_sdk_' + SecureRandom.base64(6)
|
83
|
+
amount = include_validation_failure ? '1.0.0' : '1.00'
|
13
84
|
body = {
|
14
85
|
sender_batch_header: {
|
15
86
|
recipient_type: 'EMAIL',
|
@@ -19,77 +90,55 @@ module Samples
|
|
19
90
|
email_subject: 'This is a test transaction from SDK'
|
20
91
|
},
|
21
92
|
items: [{
|
22
|
-
note: 'Your
|
93
|
+
note: 'Your 1$ Payout!',
|
23
94
|
amount: {
|
24
95
|
currency: 'USD',
|
25
|
-
value:
|
96
|
+
value: amount
|
26
97
|
},
|
27
98
|
receiver: 'payout-sdk-1@paypal.com',
|
28
99
|
sender_item_id: 'Test_txn_1'
|
29
100
|
}, {
|
30
|
-
note: 'Your
|
101
|
+
note: 'Your 1$ Payout!',
|
31
102
|
amount: {
|
32
103
|
currency: 'USD',
|
33
|
-
value:
|
104
|
+
value: amount
|
34
105
|
},
|
35
106
|
receiver: 'payout-sdk-2@paypal.com',
|
36
107
|
sender_item_id: 'Test_txn_2'
|
37
108
|
}, {
|
38
|
-
note: 'Your
|
109
|
+
note: 'Your 1$ Payout!',
|
39
110
|
amount: {
|
40
111
|
currency: 'USD',
|
41
|
-
value:
|
112
|
+
value: amount
|
42
113
|
},
|
43
114
|
receiver: 'payout-sdk-3@paypal.com',
|
44
115
|
sender_item_id: 'Test_txn_3'
|
45
116
|
}, {
|
46
|
-
note: 'Your
|
117
|
+
note: 'Your 1$ Payout!',
|
47
118
|
amount: {
|
48
119
|
currency: 'USD',
|
49
|
-
value:
|
120
|
+
value: amount
|
50
121
|
},
|
51
122
|
receiver: 'payout-sdk-4@paypal.com',
|
52
123
|
sender_item_id: 'Test_txn_4'
|
53
124
|
}, {
|
54
|
-
note: 'Your
|
125
|
+
note: 'Your 1$ Payout!',
|
55
126
|
amount: {
|
56
127
|
currency: 'USD',
|
57
|
-
value:
|
128
|
+
value: amount
|
58
129
|
},
|
59
130
|
receiver: 'payout-sdk-5@paypal.com',
|
60
131
|
sender_item_id: 'Test_txn_5'
|
61
132
|
}]
|
62
133
|
}
|
63
|
-
|
64
|
-
request.request_body(body)
|
65
|
-
|
66
|
-
begin
|
67
|
-
response = PayPalClient::client.execute(request)
|
68
|
-
if debug
|
69
|
-
puts "Status Code: #{response.status_code}"
|
70
|
-
puts "Status: #{response.result.status}"
|
71
|
-
puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}"
|
72
|
-
puts "Payout Batch Status: #{response.result.batch_header.batch_status}"
|
73
|
-
puts "Links: "
|
74
|
-
for link in response.result.links
|
75
|
-
# this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method
|
76
|
-
puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}"
|
77
|
-
end
|
78
|
-
puts PayPalClient::openstruct_to_hash(response.result).to_json
|
79
|
-
end
|
80
|
-
return response
|
81
|
-
rescue PayPalHttp::HttpError => ioe
|
82
|
-
# Exception occured while processing the payouts.
|
83
|
-
puts " Status Code: #{ioe.status_code}"
|
84
|
-
puts " Debug Id: #{ioe.result.debug_id}"
|
85
|
-
puts " Response: #{ioe.result}"
|
86
|
-
end
|
134
|
+
return body
|
87
135
|
end
|
88
|
-
|
89
136
|
end
|
90
137
|
end
|
91
138
|
|
92
139
|
# This is the driver function which invokes the create_payouts function to create an payouts batch.
|
93
140
|
if __FILE__ == $0
|
94
141
|
Samples::CreatePayouts::new().create_payouts(true)
|
142
|
+
#Simulate failure in create payload to showcase validation failure and how to parse the reason for failure
|
143
|
+
Samples::CreatePayouts::new().create_payouts_failure(true)
|
95
144
|
end
|
data/samples/get_payout_item.rb
CHANGED
@@ -13,23 +13,27 @@ module Samples
|
|
13
13
|
|
14
14
|
begin
|
15
15
|
response = PayPalClient::client.execute(request)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
if debug
|
17
|
+
puts "Status Code: #{response.status_code}"
|
18
|
+
puts "Status: #{response.result.status}"
|
19
|
+
puts "Payout Item Id: #{response.result.payout_item_id}"
|
20
|
+
puts "Payout Item Status: #{response.result.transaction_status}"
|
21
|
+
puts "Links: "
|
22
|
+
for link in response.result.links
|
23
|
+
# this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method
|
24
|
+
puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}"
|
25
|
+
end
|
26
|
+
puts PayPalClient::openstruct_to_hash(response.result).to_json
|
25
27
|
end
|
26
|
-
puts PayPalClient::openstruct_to_hash(response.result).to_json
|
27
28
|
return response
|
28
29
|
rescue PayPalHttp::HttpError => ioe
|
29
30
|
# Exception occured while processing the payouts.
|
30
|
-
puts "
|
31
|
-
puts "
|
32
|
-
puts "
|
31
|
+
puts "Status Code: #{ioe.status_code}"
|
32
|
+
puts "Response: #{ioe.result}"
|
33
|
+
puts "Name: #{ioe.result.name}"
|
34
|
+
puts "Message: #{ioe.result.message}"
|
35
|
+
puts "Information link: #{ioe.result.information_link}"
|
36
|
+
puts "Debug Id: #{ioe.result.debug_id}"
|
33
37
|
end
|
34
38
|
end
|
35
39
|
end
|
@@ -37,7 +41,9 @@ end
|
|
37
41
|
|
38
42
|
# This is the driver function which invokes the get_payout_item function to retrieve a Payout Item
|
39
43
|
if __FILE__ == $0
|
40
|
-
batch_id = Samples::CreatePayouts::new().create_payouts(
|
41
|
-
id = Samples::GetPayouts::new().get_payouts(batch_id
|
44
|
+
batch_id = Samples::CreatePayouts::new().create_payouts().result.batch_header.payout_batch_id
|
45
|
+
id = Samples::GetPayouts::new().get_payouts(batch_id).result.items[0].payout_item_id
|
42
46
|
Samples::GetPayoutItem::new().get_payout_item(id, true)
|
47
|
+
puts "Retrieve an invalid payout item id"
|
48
|
+
Samples::GetPayoutItem::new().get_payout_item("DUMMY", true)
|
43
49
|
end
|
data/samples/get_payouts.rb
CHANGED
@@ -18,25 +18,29 @@ module Samples
|
|
18
18
|
|
19
19
|
begin
|
20
20
|
response = PayPalClient::client.execute(request)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
21
|
+
if debug
|
22
|
+
puts "Status Code: #{response.status_code}"
|
23
|
+
puts "Status: #{response.result.status}"
|
24
|
+
puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}"
|
25
|
+
puts "Payout Batch Status: #{response.result.batch_header.batch_status}"
|
26
|
+
puts "Items count: #{response.result.items.length}"
|
27
|
+
puts "First item id: #{response.result.items[0].payout_item_id}"
|
28
|
+
puts "Links: "
|
29
|
+
for link in response.result.links
|
30
|
+
# this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method
|
31
|
+
puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}"
|
32
|
+
end
|
33
|
+
puts PayPalClient::openstruct_to_hash(response.result).to_json
|
34
|
+
end
|
34
35
|
return response
|
35
36
|
rescue PayPalHttp::HttpError => ioe
|
36
37
|
# Exception occured while processing the payouts.
|
37
|
-
puts "
|
38
|
-
puts "
|
39
|
-
puts "
|
38
|
+
puts "Status Code: #{ioe.status_code}"
|
39
|
+
puts "Response: #{ioe.result}"
|
40
|
+
puts "Name: #{ioe.result.name}"
|
41
|
+
puts "Message: #{ioe.result.message}"
|
42
|
+
puts "Information link: #{ioe.result.information_link}"
|
43
|
+
puts "Debug Id: #{ioe.result.debug_id}"
|
40
44
|
end
|
41
45
|
end
|
42
46
|
end
|
@@ -44,6 +48,8 @@ end
|
|
44
48
|
|
45
49
|
# This is the driver function which invokes the get_payouts function to retrieve a Payouts Batch
|
46
50
|
if __FILE__ == $0
|
47
|
-
id = Samples::CreatePayouts::new().create_payouts(
|
51
|
+
id = Samples::CreatePayouts::new().create_payouts().result.batch_header.payout_batch_id
|
48
52
|
Samples::GetPayouts::new().get_payouts(id, true)
|
53
|
+
puts "Retrieve an invalid payout id"
|
54
|
+
Samples::GetPayouts::new().get_payouts("DUMMY", true)
|
49
55
|
end
|
data/samples/run_all.rb
CHANGED
@@ -33,6 +33,10 @@ if create_resp.status_code == 201
|
|
33
33
|
cancel_resp = Samples::CancelPayoutItem.new().cancel_payout_item(item_id, true)
|
34
34
|
if cancel_resp.status_code == 200
|
35
35
|
puts "Successfully cancelled unclaimed Payouts item with id: #{item_id}"
|
36
|
+
|
37
|
+
# Run cancel failure scenario
|
38
|
+
puts "Simulate failure on cancelling an already cancelled Payout item with id: #{item_id}"
|
39
|
+
Samples::CancelPayoutItem.new().cancel_payout_item(item_id, true)
|
36
40
|
else
|
37
41
|
puts "Failed to cancel unclaimed Payouts item with id: #{item_id}"
|
38
42
|
end
|
@@ -49,3 +53,11 @@ if create_resp.status_code == 201
|
|
49
53
|
else
|
50
54
|
puts "Failed to crate Payouts batch"
|
51
55
|
end
|
56
|
+
|
57
|
+
# Execute all failure cases
|
58
|
+
puts "Create a payout with validation failure"
|
59
|
+
Samples::CreatePayouts::new().create_payouts_failure(true)
|
60
|
+
puts "Retrieving an invalid payout"
|
61
|
+
Samples::GetPayouts::new().get_payouts("DUMMY", true)
|
62
|
+
puts "Retrieving an invalid payout item"
|
63
|
+
Samples::GetPayoutItem::new().get_payout_item("DUMMY", true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paypal-payouts-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- http://developer.paypal.com
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paypalhttp
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0.
|
19
|
+
version: 1.0.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0.
|
26
|
+
version: 1.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,13 +66,17 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description: This repository contains PayPal's Ruby SDK for Payouts
|
69
|
+
description: "[Deprecated] This repository contains PayPal's Ruby SDK for Payouts
|
70
|
+
REST API"
|
70
71
|
email: dl-paypal-payouts-sdk@paypal.com
|
71
72
|
executables: []
|
72
73
|
extensions: []
|
73
74
|
extra_rdoc_files: []
|
74
75
|
files:
|
76
|
+
- ".github/dependabot.yml"
|
77
|
+
- ".github/workflows/codeql-analysis.yml"
|
75
78
|
- ".gitignore"
|
79
|
+
- ".travis.yml"
|
76
80
|
- Gemfile
|
77
81
|
- LICENSE
|
78
82
|
- README.md
|
@@ -102,7 +106,7 @@ homepage: https://github.com/paypal/Payouts-Ruby-SDK
|
|
102
106
|
licenses:
|
103
107
|
- https://github.com/paypal/Payouts-Ruby-SDK/blob/master/LICENSE
|
104
108
|
metadata: {}
|
105
|
-
post_install_message:
|
109
|
+
post_install_message:
|
106
110
|
rdoc_options: []
|
107
111
|
require_paths:
|
108
112
|
- lib
|
@@ -117,9 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
121
|
- !ruby/object:Gem::Version
|
118
122
|
version: '0'
|
119
123
|
requirements: []
|
120
|
-
|
121
|
-
|
122
|
-
signing_key:
|
124
|
+
rubygems_version: 3.4.10
|
125
|
+
signing_key:
|
123
126
|
specification_version: 4
|
124
|
-
summary:
|
127
|
+
summary: Deprecated.
|
125
128
|
test_files: []
|