pcp-server-ruby-sdk 1.9.0 → 1.10.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/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/api-definition.yaml +197 -8
- data/lib/PCP-server-Ruby-SDK/endpoints/payment_execution_api_client.rb +26 -0
- data/lib/PCP-server-Ruby-SDK/models/cancel_payment_request.rb +16 -4
- data/lib/PCP-server-Ruby-SDK/models/fund_split_request.rb +153 -0
- data/lib/PCP-server-Ruby-SDK/models/fund_split_response.rb +180 -0
- data/lib/PCP-server-Ruby-SDK/models/payment_references_for_refund.rb +9 -2
- data/lib/PCP-server-Ruby-SDK/models/redirect_payment_method_specific_input.rb +10 -1
- data/lib/PCP-server-Ruby-SDK/models/redirect_payment_product900_specific_input.rb +183 -0
- data/lib/PCP-server-Ruby-SDK/version.rb +1 -1
- data/lib/PCP-server-Ruby-SDK.rb +3 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/spec/endpoints/payment_execution_api_client_spec.rb +52 -0
- metadata +10 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 482f280c7f678eb053e4b60b6b598efd83f822598825c40b036fda794d8ea931
|
|
4
|
+
data.tar.gz: ee91952a8e82ca06fb099357ff371e074158db1818cd7edabf63c6c8d303e468
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1fec4a3be2887f4ae41bdb3f4c77e4cf88b0ea65d4deb62f2275f8df12c194997cfe18fa8b8754c58d309d5b48afc22e82372d4d3a2f892c4f85e0946aa5ffe2
|
|
7
|
+
data.tar.gz: f9689ef5abca20c6c4fb2029abf485f2f45ee7b6557ae6f84637539b0ed37b432b958e29c4f661a5babd64e0810b93f3ecee81a2a8113535d5a486f89ad88f95
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# [1.10.0](https://github.com/PAYONE-GmbH/PCP-ServerSDK-ruby/compare/v1.9.0...v1.10.0) (2026-05-22)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* feat: update API version to 1.55.0 ([55d757f9427b16513b6c48bd9a8d7332d82bd886](https://github.com/PAYONE-GmbH/PCP-ServerSDK-ruby/commit/55d757f9427b16513b6c48bd9a8d7332d82bd886))
|
|
6
|
+
|
|
1
7
|
# [1.9.0](https://github.com/PAYONE-GmbH/PCP-ServerSDK-ruby/compare/v1.8.0...v1.9.0) (2026-04-29)
|
|
2
8
|
|
|
3
9
|
### Features
|
data/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|

|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
Welcome to the Ruby SDK for the PAYONE Commerce Platform (api-version 1.
|
|
9
|
+
Welcome to the Ruby SDK for the PAYONE Commerce Platform (api-version 1.55.0)! This repository contains a powerful, easy-to-use software development kit (SDK) designed to simplify the integration of online payment processing into your applications.
|
|
10
10
|
|
|
11
11
|
## Requirements
|
|
12
12
|
|
data/api-definition.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
openapi: "3.0.3"
|
|
2
2
|
|
|
3
3
|
info:
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.55.0
|
|
5
5
|
title: "Commerce Platform API"
|
|
6
6
|
description: |
|
|
7
7
|
RESTful API for the creation of Commerce Cases with Checkouts and the execution of Payments.
|
|
8
8
|
|
|
9
9
|
servers:
|
|
10
|
-
- url: "https://
|
|
10
|
+
- url: "https://api.commerce.payone.com"
|
|
11
11
|
description: Production URL
|
|
12
|
-
- url: "https://preprod.commerce
|
|
12
|
+
- url: "https://api.preprod.commerce.payone.com"
|
|
13
13
|
description: Pre-Production URL
|
|
14
14
|
|
|
15
15
|
tags:
|
|
@@ -1245,6 +1245,100 @@ paths:
|
|
|
1245
1245
|
schema:
|
|
1246
1246
|
$ref: '#/components/schemas/ErrorResponse'
|
|
1247
1247
|
|
|
1248
|
+
'/v1/{merchantId}/commerce-cases/{commerceCaseId}/checkouts/{checkoutId}/payment-executions/{paymentExecutionId}/events/{eventId}/fund-splits':
|
|
1249
|
+
post:
|
|
1250
|
+
summary: Create a Fund Split for a Chargeback Event
|
|
1251
|
+
description: |-
|
|
1252
|
+
This endpoint allows merchants to instruct fund split distributions for a specific chargeback event
|
|
1253
|
+
within a marketplace transaction. When a chargeback event is received and allocated to a Payment Execution
|
|
1254
|
+
that belongs to a marketplace transaction, the merchant can use this endpoint to specify how the chargeback
|
|
1255
|
+
amount should be distributed among the different sellers (fund recipients) involved in the original order.
|
|
1256
|
+
|
|
1257
|
+
The fund split instruction contains one or more fund distributions, each specifying a target account,
|
|
1258
|
+
the amount to be allocated, and the type of distribution (e.g. seller revenue, platform commission, etc.).
|
|
1259
|
+
|
|
1260
|
+
This endpoint is only applicable for Payment Executions that belong to a marketplace transaction.
|
|
1261
|
+
If the Payment Execution is not part of a marketplace transaction, a 400 error will be returned.
|
|
1262
|
+
tags:
|
|
1263
|
+
- PaymentExecution
|
|
1264
|
+
operationId: createFundSplit
|
|
1265
|
+
parameters:
|
|
1266
|
+
- $ref: '#/components/parameters/merchantIdPath'
|
|
1267
|
+
- $ref: '#/components/parameters/commerceCaseIdPath'
|
|
1268
|
+
- $ref: '#/components/parameters/checkoutIdPath'
|
|
1269
|
+
- $ref: '#/components/parameters/paymentExecutionId'
|
|
1270
|
+
- $ref: '#/components/parameters/eventIdPath'
|
|
1271
|
+
requestBody:
|
|
1272
|
+
required: true
|
|
1273
|
+
content:
|
|
1274
|
+
application/json:
|
|
1275
|
+
schema:
|
|
1276
|
+
$ref: '#/components/schemas/FundSplitRequest'
|
|
1277
|
+
responses:
|
|
1278
|
+
'201':
|
|
1279
|
+
x-nullable: true
|
|
1280
|
+
description: The fund split instruction was successfully created and will be processed.
|
|
1281
|
+
content:
|
|
1282
|
+
application/json:
|
|
1283
|
+
schema:
|
|
1284
|
+
$ref: '#/components/schemas/FundSplitResponse'
|
|
1285
|
+
'400':
|
|
1286
|
+
x-nullable: true
|
|
1287
|
+
description: |-
|
|
1288
|
+
The request was malformed, was missing required data, or the Payment Execution does not belong to a
|
|
1289
|
+
marketplace transaction. The error message will indicate the specific issue.
|
|
1290
|
+
content:
|
|
1291
|
+
application/json:
|
|
1292
|
+
schema:
|
|
1293
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1294
|
+
'403':
|
|
1295
|
+
x-nullable: true
|
|
1296
|
+
description: You are not allowed to access the service or account or your API authentication failed.
|
|
1297
|
+
content:
|
|
1298
|
+
application/json:
|
|
1299
|
+
schema:
|
|
1300
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1301
|
+
'404':
|
|
1302
|
+
x-nullable: true
|
|
1303
|
+
description: The Commerce Case, Checkout, Payment Execution, or Event was not found.
|
|
1304
|
+
content:
|
|
1305
|
+
application/json:
|
|
1306
|
+
schema:
|
|
1307
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1308
|
+
'409':
|
|
1309
|
+
x-nullable: true
|
|
1310
|
+
description: |-
|
|
1311
|
+
A fund split instruction has already been submitted for this event, or the event is in a state
|
|
1312
|
+
that does not allow fund split creation.
|
|
1313
|
+
content:
|
|
1314
|
+
application/json:
|
|
1315
|
+
schema:
|
|
1316
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1317
|
+
'500':
|
|
1318
|
+
x-nullable: true
|
|
1319
|
+
description: Internal server exception.
|
|
1320
|
+
content:
|
|
1321
|
+
application/json:
|
|
1322
|
+
schema:
|
|
1323
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1324
|
+
'502':
|
|
1325
|
+
x-nullable: true
|
|
1326
|
+
description: |-
|
|
1327
|
+
Any 5XX response points to something that went wrong on our end. This could also be that the system was
|
|
1328
|
+
unable to route the transaction to an appropriate acquirer/3rd party. Another reason for such a response
|
|
1329
|
+
is when the 3rd party's response could not be understood.
|
|
1330
|
+
content:
|
|
1331
|
+
application/json:
|
|
1332
|
+
schema:
|
|
1333
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1334
|
+
'503':
|
|
1335
|
+
x-nullable: true
|
|
1336
|
+
description: Service unavailable.
|
|
1337
|
+
content:
|
|
1338
|
+
application/json:
|
|
1339
|
+
schema:
|
|
1340
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
1341
|
+
|
|
1248
1342
|
'/v1/{merchantId}/commerce-cases/{commerceCaseId}/checkouts/{checkoutId}/payment-information':
|
|
1249
1343
|
post:
|
|
1250
1344
|
summary: Create a Payment Information
|
|
@@ -1405,6 +1499,16 @@ components:
|
|
|
1405
1499
|
schema:
|
|
1406
1500
|
type: string
|
|
1407
1501
|
format: UUID
|
|
1502
|
+
eventIdPath:
|
|
1503
|
+
in: path
|
|
1504
|
+
name: eventId
|
|
1505
|
+
description: |-
|
|
1506
|
+
Unique identifier of a payment event (e.g. a chargeback event) that is associated with a Payment Execution.
|
|
1507
|
+
This ID is used to link the fund split instruction to the specific event that triggered the chargeback allocation.
|
|
1508
|
+
required: true
|
|
1509
|
+
schema:
|
|
1510
|
+
type: string
|
|
1511
|
+
format: UUID
|
|
1408
1512
|
commerceCaseIdQuery:
|
|
1409
1513
|
in: query
|
|
1410
1514
|
name: commerceCaseId
|
|
@@ -2110,6 +2214,15 @@ components:
|
|
|
2110
2214
|
properties:
|
|
2111
2215
|
cancellationReason:
|
|
2112
2216
|
$ref: '#/components/schemas/CancellationReason'
|
|
2217
|
+
amount:
|
|
2218
|
+
type: integer
|
|
2219
|
+
format: int64
|
|
2220
|
+
maximum: 999999999999
|
|
2221
|
+
minimum: 1
|
|
2222
|
+
description: |-
|
|
2223
|
+
Here you can specify the amount that you want to cancel (specified in cents, where single digit currencies
|
|
2224
|
+
are presumed to have 2 digits). The amount can be lower than the amount that was authorized, but not higher.
|
|
2225
|
+
If left empty, the remaining open amount will be cancelled.
|
|
2113
2226
|
CancelPaymentResponse:
|
|
2114
2227
|
type: object
|
|
2115
2228
|
additionalProperties: false
|
|
@@ -2595,6 +2708,7 @@ components:
|
|
|
2595
2708
|
* false = the payment does not require approval, and the funds will be captured automatically
|
|
2596
2709
|
|
|
2597
2710
|
If the parameter is not provided in the request, the default value will be true
|
|
2711
|
+
default: true
|
|
2598
2712
|
paymentProduct3391SpecificInput:
|
|
2599
2713
|
$ref: '#/components/schemas/PaymentProduct3391SpecificInput'
|
|
2600
2714
|
CompleteOrderRequest:
|
|
@@ -2977,7 +3091,7 @@ components:
|
|
|
2977
3091
|
properties:
|
|
2978
3092
|
acceptHeader:
|
|
2979
3093
|
type: string
|
|
2980
|
-
description: |
|
|
3094
|
+
description: |
|
|
2981
3095
|
The accept-header of the customer client from the HTTP Headers.
|
|
2982
3096
|
This field can be mandatory depending on the selected payment method and routing option.
|
|
2983
3097
|
maxLength: 2048
|
|
@@ -3147,6 +3261,7 @@ components:
|
|
|
3147
3261
|
* false = the payment does not require approval, and the funds will be captured automatically
|
|
3148
3262
|
|
|
3149
3263
|
If the parameter is not provided in the request, the default value will be true
|
|
3264
|
+
default: true
|
|
3150
3265
|
paymentProduct3392SpecificInput:
|
|
3151
3266
|
$ref: '#/components/schemas/PaymentProduct3392SpecificInput'
|
|
3152
3267
|
FinancingPaymentMethodSpecificOutput:
|
|
@@ -3240,6 +3355,46 @@ components:
|
|
|
3240
3355
|
type: array
|
|
3241
3356
|
items:
|
|
3242
3357
|
$ref: '#/components/schemas/FundDistribution'
|
|
3358
|
+
FundSplitRequest:
|
|
3359
|
+
type: object
|
|
3360
|
+
description: |-
|
|
3361
|
+
Request object for creating a fund split instruction for a chargeback event in a marketplace transaction.
|
|
3362
|
+
Contains the fund split details specifying how the chargeback amount should be distributed among the
|
|
3363
|
+
different sellers and/or the platform involved in the original marketplace order.
|
|
3364
|
+
additionalProperties: false
|
|
3365
|
+
required:
|
|
3366
|
+
- fundSplit
|
|
3367
|
+
properties:
|
|
3368
|
+
fundSplit:
|
|
3369
|
+
$ref: '#/components/schemas/FundSplit'
|
|
3370
|
+
FundSplitResponse:
|
|
3371
|
+
type: object
|
|
3372
|
+
description: |-
|
|
3373
|
+
Response object returned after successfully creating a fund split instruction. Contains the unique
|
|
3374
|
+
identifier of the created fund split and the processing status.
|
|
3375
|
+
additionalProperties: false
|
|
3376
|
+
properties:
|
|
3377
|
+
fundSplitId:
|
|
3378
|
+
type: string
|
|
3379
|
+
format: UUID
|
|
3380
|
+
description: |-
|
|
3381
|
+
Unique identifier assigned to the created fund split instruction. This ID can be used for tracking
|
|
3382
|
+
and referencing the fund split in subsequent operations or inquiries.
|
|
3383
|
+
example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
|
|
3384
|
+
paymentExecutionId:
|
|
3385
|
+
type: string
|
|
3386
|
+
format: UUID
|
|
3387
|
+
description: |-
|
|
3388
|
+
Unique identifier of the Payment Execution that this fund split is associated with.
|
|
3389
|
+
example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"
|
|
3390
|
+
eventId:
|
|
3391
|
+
type: string
|
|
3392
|
+
format: UUID
|
|
3393
|
+
description: |-
|
|
3394
|
+
Unique identifier of the chargeback event that this fund split instruction was created for.
|
|
3395
|
+
example: "c56a4180-65aa-42ec-a945-5fd21dec0538"
|
|
3396
|
+
fundSplit:
|
|
3397
|
+
$ref: '#/components/schemas/FundSplit'
|
|
3243
3398
|
InstallmentOption:
|
|
3244
3399
|
type: object
|
|
3245
3400
|
properties:
|
|
@@ -3509,7 +3664,7 @@ components:
|
|
|
3509
3664
|
example: 0
|
|
3510
3665
|
taxAmountPerUnit:
|
|
3511
3666
|
type: boolean
|
|
3512
|
-
description: |-
|
|
3667
|
+
description: |-
|
|
3513
3668
|
This field indicates if the `taxAmount` is to be interpreted as the tax amount per unit rather than for the entire line item.
|
|
3514
3669
|
This field is included in the response only when `taxAmount` is set; otherwise, it will return as `null`.
|
|
3515
3670
|
format: int64
|
|
@@ -4207,7 +4362,10 @@ components:
|
|
|
4207
4362
|
example: your-order-6372
|
|
4208
4363
|
PaymentReferencesForRefund:
|
|
4209
4364
|
type: object
|
|
4210
|
-
description:
|
|
4365
|
+
description: |-
|
|
4366
|
+
Object that holds all reference properties that are linked to this refund transaction.
|
|
4367
|
+
Extends the standard PaymentReferences with an additional captureReference field to support
|
|
4368
|
+
scenarios where a Checkout may contain multiple partial captures from different sellers.
|
|
4211
4369
|
additionalProperties: false
|
|
4212
4370
|
allOf:
|
|
4213
4371
|
- $ref: '#/components/schemas/PaymentReferences'
|
|
@@ -4215,9 +4373,16 @@ components:
|
|
|
4215
4373
|
properties:
|
|
4216
4374
|
captureReference:
|
|
4217
4375
|
description: |-
|
|
4218
|
-
|
|
4376
|
+
Merchant-provided reference of the capture that this refund should be applied to.
|
|
4377
|
+
A single Checkout can contain multiple partial captures.
|
|
4378
|
+
By supplying the captureReference the merchant ensures the refund is allocated to the correct
|
|
4379
|
+
capture.
|
|
4380
|
+
|
|
4381
|
+
This value must match the merchantReference that was provided in the PaymentReferences of the
|
|
4382
|
+
original capture request.
|
|
4219
4383
|
example: your-order-6372
|
|
4220
4384
|
type: string
|
|
4385
|
+
maxLength: 20
|
|
4221
4386
|
PaymentResponse:
|
|
4222
4387
|
type: object
|
|
4223
4388
|
description: Object that holds the payment related properties.
|
|
@@ -4454,6 +4619,7 @@ components:
|
|
|
4454
4619
|
* false = the payment does not require approval, and the funds will be captured automatically
|
|
4455
4620
|
|
|
4456
4621
|
If the parameter is not provided in the request, the default value will be true
|
|
4622
|
+
default: true
|
|
4457
4623
|
paymentProcessingToken:
|
|
4458
4624
|
type: string
|
|
4459
4625
|
description: ID of the token to use to create the payment.
|
|
@@ -4477,6 +4643,8 @@ components:
|
|
|
4477
4643
|
$ref: '#/components/schemas/PaymentProductId'
|
|
4478
4644
|
paymentProduct840SpecificInput:
|
|
4479
4645
|
$ref: '#/components/schemas/RedirectPaymentProduct840SpecificInput'
|
|
4646
|
+
paymentProduct900SpecificInput:
|
|
4647
|
+
$ref: '#/components/schemas/RedirectPaymentProduct900SpecificInput'
|
|
4480
4648
|
redirectionData:
|
|
4481
4649
|
$ref: '#/components/schemas/RedirectionData'
|
|
4482
4650
|
RedirectPaymentMethodSpecificOutput:
|
|
@@ -4529,6 +4697,27 @@ components:
|
|
|
4529
4697
|
Default value is false.
|
|
4530
4698
|
default: false
|
|
4531
4699
|
example: true
|
|
4700
|
+
RedirectPaymentProduct900SpecificInput:
|
|
4701
|
+
type: object
|
|
4702
|
+
properties:
|
|
4703
|
+
captureTrigger:
|
|
4704
|
+
type: string
|
|
4705
|
+
description: |-
|
|
4706
|
+
Indicates the event upon which the payment should be captured.
|
|
4707
|
+
This value is shown to customers in the Wero portal to clarify
|
|
4708
|
+
when the capture will occur.
|
|
4709
|
+
Has the following possible values:
|
|
4710
|
+
- shipping: Upon shipping the order.
|
|
4711
|
+
- delivery: Upon delivering the order.
|
|
4712
|
+
- availability: As soon as the order is available.
|
|
4713
|
+
- serviceFulfillment: Upon fulfilling the service.
|
|
4714
|
+
- other: For any other use case.
|
|
4715
|
+
enum:
|
|
4716
|
+
- shipping
|
|
4717
|
+
- delivery
|
|
4718
|
+
- availability
|
|
4719
|
+
- serviceFulfillment
|
|
4720
|
+
- other
|
|
4532
4721
|
References:
|
|
4533
4722
|
type: object
|
|
4534
4723
|
description: Object that holds all reference properties that are linked to this transaction.
|
|
@@ -5008,4 +5197,4 @@ components:
|
|
|
5008
5197
|
enum:
|
|
5009
5198
|
- first
|
|
5010
5199
|
- subsequent
|
|
5011
|
-
x-enum-to-string: false
|
|
5200
|
+
x-enum-to-string: false
|
|
@@ -6,6 +6,7 @@ require_relative '../models/cancel_payment_response'
|
|
|
6
6
|
require_relative '../models/capture_payment_response'
|
|
7
7
|
require_relative '../models/complete_payment_response'
|
|
8
8
|
require_relative '../models/create_payment_response'
|
|
9
|
+
require_relative '../models/fund_split_response'
|
|
9
10
|
require_relative '../models/refund_payment_response'
|
|
10
11
|
module PCPServerSDK
|
|
11
12
|
module Endpoints
|
|
@@ -176,6 +177,31 @@ module PCPServerSDK
|
|
|
176
177
|
deserialize_json(response, PCPServerSDK::Models::PaymentExecution)
|
|
177
178
|
end
|
|
178
179
|
|
|
180
|
+
# Create a fund split for a payment event
|
|
181
|
+
# @param merchant_id [String] The merchant identifier
|
|
182
|
+
# @param commerce_case_id [String] The commerce case identifier
|
|
183
|
+
# @param checkout_id [String] The checkout identifier
|
|
184
|
+
# @param payment_execution_id [String] The payment execution identifier
|
|
185
|
+
# @param event_id [String] The payment event identifier
|
|
186
|
+
# @param payload [PCPServerSDK::Models::FundSplitRequest] The fund split request
|
|
187
|
+
# @return [PCPServerSDK::Models::FundSplitResponse] The fund split response
|
|
188
|
+
def create_fund_split(merchant_id, commerce_case_id, checkout_id, payment_execution_id, event_id, payload)
|
|
189
|
+
validate_ids(merchant_id, commerce_case_id, checkout_id)
|
|
190
|
+
raise TypeError, PAYMENT_EXECUTION_ID_REQUIRED_ERROR if payment_execution_id.nil? || payment_execution_id.empty?
|
|
191
|
+
raise TypeError, 'Event ID is required' if event_id.nil? || event_id.empty?
|
|
192
|
+
|
|
193
|
+
url = URI.join(get_config.host, "/v1/#{merchant_id}/commerce-cases/#{commerce_case_id}/checkouts/#{checkout_id}/payment-executions/#{payment_execution_id}/events/#{event_id}/fund-splits")
|
|
194
|
+
|
|
195
|
+
request_init = {
|
|
196
|
+
method: 'POST',
|
|
197
|
+
headers: { 'Content-Type' => 'application/json' },
|
|
198
|
+
body: JSON.generate(payload)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
response = make_api_call(url.to_s, request_init)
|
|
202
|
+
deserialize_json(response, PCPServerSDK::Models::FundSplitResponse)
|
|
203
|
+
end
|
|
204
|
+
|
|
179
205
|
|
|
180
206
|
private
|
|
181
207
|
|
|
@@ -6,6 +6,11 @@ module PCPServerSDK
|
|
|
6
6
|
class CancelPaymentRequest
|
|
7
7
|
attr_accessor :cancellation_reason
|
|
8
8
|
|
|
9
|
+
# Here you can specify the amount that you want to cancel (specified in cents, where single digit currencies
|
|
10
|
+
# are presumed to have 2 digits). The amount can be lower than the amount that was authorized, but not higher.
|
|
11
|
+
# If left empty, the remaining open amount will be cancelled.
|
|
12
|
+
attr_accessor :amount
|
|
13
|
+
|
|
9
14
|
class EnumAttributeValidator
|
|
10
15
|
attr_reader :datatype
|
|
11
16
|
attr_reader :allowable_values
|
|
@@ -31,7 +36,8 @@ module PCPServerSDK
|
|
|
31
36
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
32
37
|
def self.attribute_map
|
|
33
38
|
{
|
|
34
|
-
:'cancellation_reason' => :'cancellationReason'
|
|
39
|
+
:'cancellation_reason' => :'cancellationReason',
|
|
40
|
+
:'amount' => :'amount'
|
|
35
41
|
}
|
|
36
42
|
end
|
|
37
43
|
|
|
@@ -43,7 +49,8 @@ module PCPServerSDK
|
|
|
43
49
|
# Attribute type mapping.
|
|
44
50
|
def self.openapi_types
|
|
45
51
|
{
|
|
46
|
-
:'cancellation_reason' => :'CancellationReason'
|
|
52
|
+
:'cancellation_reason' => :'CancellationReason',
|
|
53
|
+
:'amount' => :'Integer'
|
|
47
54
|
}
|
|
48
55
|
end
|
|
49
56
|
|
|
@@ -71,6 +78,10 @@ module PCPServerSDK
|
|
|
71
78
|
if attributes.key?(:'cancellation_reason')
|
|
72
79
|
self.cancellation_reason = attributes[:'cancellation_reason']
|
|
73
80
|
end
|
|
81
|
+
|
|
82
|
+
if attributes.key?(:'amount')
|
|
83
|
+
self.amount = attributes[:'amount']
|
|
84
|
+
end
|
|
74
85
|
end
|
|
75
86
|
|
|
76
87
|
# Checks equality by comparing each attribute.
|
|
@@ -78,7 +89,8 @@ module PCPServerSDK
|
|
|
78
89
|
def ==(o)
|
|
79
90
|
return true if self.equal?(o)
|
|
80
91
|
self.class == o.class &&
|
|
81
|
-
cancellation_reason == o.cancellation_reason
|
|
92
|
+
cancellation_reason == o.cancellation_reason &&
|
|
93
|
+
amount == o.amount
|
|
82
94
|
end
|
|
83
95
|
|
|
84
96
|
# @see the `==` method
|
|
@@ -90,7 +102,7 @@ module PCPServerSDK
|
|
|
90
102
|
# Calculates hash code according to all attributes.
|
|
91
103
|
# @return [Integer] Hash code
|
|
92
104
|
def hash
|
|
93
|
-
[cancellation_reason].hash
|
|
105
|
+
[cancellation_reason, amount].hash
|
|
94
106
|
end
|
|
95
107
|
|
|
96
108
|
# Builds the object from hash
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
|
|
2
|
+
require 'date'
|
|
3
|
+
require 'time'
|
|
4
|
+
|
|
5
|
+
module PCPServerSDK
|
|
6
|
+
module Models
|
|
7
|
+
class FundSplitRequest
|
|
8
|
+
attr_accessor :fund_split
|
|
9
|
+
|
|
10
|
+
def self.attribute_map
|
|
11
|
+
{
|
|
12
|
+
:'fund_split' => :'fundSplit'
|
|
13
|
+
}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.acceptable_attributes
|
|
17
|
+
attribute_map.values
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.openapi_types
|
|
21
|
+
{
|
|
22
|
+
:'fund_split' => :'FundSplit'
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.openapi_nullable
|
|
27
|
+
Set.new([])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def initialize(attributes = {})
|
|
31
|
+
if (!attributes.is_a?(Hash))
|
|
32
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `FundSplitRequest` initialize method"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
36
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
37
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `FundSplitRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
38
|
+
end
|
|
39
|
+
h[k.to_sym] = v
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if attributes.key?(:'fund_split')
|
|
43
|
+
self.fund_split = attributes[:'fund_split']
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def ==(o)
|
|
48
|
+
return true if self.equal?(o)
|
|
49
|
+
self.class == o.class &&
|
|
50
|
+
fund_split == o.fund_split
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def eql?(o)
|
|
54
|
+
self == o
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def hash
|
|
58
|
+
[fund_split].hash
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.build_from_hash(attributes)
|
|
62
|
+
return nil unless attributes.is_a?(Hash)
|
|
63
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
64
|
+
transformed_hash = {}
|
|
65
|
+
openapi_types.each_pair do |key, type|
|
|
66
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
67
|
+
transformed_hash["#{key}"] = nil
|
|
68
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
69
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
70
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
71
|
+
end
|
|
72
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
73
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
new(transformed_hash)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self._deserialize(type, value)
|
|
80
|
+
case type.to_sym
|
|
81
|
+
when :Time
|
|
82
|
+
Time.parse(value)
|
|
83
|
+
when :Date
|
|
84
|
+
Date.parse(value)
|
|
85
|
+
when :String
|
|
86
|
+
value.to_s
|
|
87
|
+
when :Integer
|
|
88
|
+
value.to_i
|
|
89
|
+
when :Float
|
|
90
|
+
value.to_f
|
|
91
|
+
when :Boolean
|
|
92
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
93
|
+
true
|
|
94
|
+
else
|
|
95
|
+
false
|
|
96
|
+
end
|
|
97
|
+
when :Object
|
|
98
|
+
value
|
|
99
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
|
100
|
+
inner_type = Regexp.last_match[:inner_type]
|
|
101
|
+
value.map { |v| _deserialize(inner_type, v) }
|
|
102
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
|
103
|
+
k_type = Regexp.last_match[:k_type]
|
|
104
|
+
v_type = Regexp.last_match[:v_type]
|
|
105
|
+
{}.tap do |hash|
|
|
106
|
+
value.each do |k, v|
|
|
107
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
else
|
|
111
|
+
klass = PCPServerSDK::Models.const_get(type)
|
|
112
|
+
klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def to_s
|
|
117
|
+
to_hash.to_s
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def to_body
|
|
121
|
+
to_hash
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def to_hash
|
|
125
|
+
hash = {}
|
|
126
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
127
|
+
value = self.send(attr)
|
|
128
|
+
if value.nil?
|
|
129
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
130
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
hash[param] = _to_hash(value)
|
|
134
|
+
end
|
|
135
|
+
hash
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def _to_hash(value)
|
|
139
|
+
if value.is_a?(Array)
|
|
140
|
+
value.compact.map { |v| _to_hash(v) }
|
|
141
|
+
elsif value.is_a?(Hash)
|
|
142
|
+
{}.tap do |hash|
|
|
143
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
|
144
|
+
end
|
|
145
|
+
elsif value.respond_to? :to_hash
|
|
146
|
+
value.to_hash
|
|
147
|
+
else
|
|
148
|
+
value
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
|
|
2
|
+
require 'date'
|
|
3
|
+
require 'time'
|
|
4
|
+
|
|
5
|
+
module PCPServerSDK
|
|
6
|
+
module Models
|
|
7
|
+
class FundSplitResponse
|
|
8
|
+
attr_accessor :fund_split_id
|
|
9
|
+
|
|
10
|
+
attr_accessor :payment_execution_id
|
|
11
|
+
|
|
12
|
+
attr_accessor :event_id
|
|
13
|
+
|
|
14
|
+
attr_accessor :fund_split
|
|
15
|
+
|
|
16
|
+
def self.attribute_map
|
|
17
|
+
{
|
|
18
|
+
:'fund_split_id' => :'fundSplitId',
|
|
19
|
+
:'payment_execution_id' => :'paymentExecutionId',
|
|
20
|
+
:'event_id' => :'eventId',
|
|
21
|
+
:'fund_split' => :'fundSplit'
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.acceptable_attributes
|
|
26
|
+
attribute_map.values
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.openapi_types
|
|
30
|
+
{
|
|
31
|
+
:'fund_split_id' => :'String',
|
|
32
|
+
:'payment_execution_id' => :'String',
|
|
33
|
+
:'event_id' => :'String',
|
|
34
|
+
:'fund_split' => :'FundSplit'
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.openapi_nullable
|
|
39
|
+
Set.new([])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def initialize(attributes = {})
|
|
43
|
+
if (!attributes.is_a?(Hash))
|
|
44
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `FundSplitResponse` initialize method"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
48
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
49
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `FundSplitResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
50
|
+
end
|
|
51
|
+
h[k.to_sym] = v
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if attributes.key?(:'fund_split_id')
|
|
55
|
+
self.fund_split_id = attributes[:'fund_split_id']
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
if attributes.key?(:'payment_execution_id')
|
|
59
|
+
self.payment_execution_id = attributes[:'payment_execution_id']
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
if attributes.key?(:'event_id')
|
|
63
|
+
self.event_id = attributes[:'event_id']
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if attributes.key?(:'fund_split')
|
|
67
|
+
self.fund_split = attributes[:'fund_split']
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def ==(o)
|
|
72
|
+
return true if self.equal?(o)
|
|
73
|
+
self.class == o.class &&
|
|
74
|
+
fund_split_id == o.fund_split_id &&
|
|
75
|
+
payment_execution_id == o.payment_execution_id &&
|
|
76
|
+
event_id == o.event_id &&
|
|
77
|
+
fund_split == o.fund_split
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def eql?(o)
|
|
81
|
+
self == o
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def hash
|
|
85
|
+
[fund_split_id, payment_execution_id, event_id, fund_split].hash
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def self.build_from_hash(attributes)
|
|
89
|
+
return nil unless attributes.is_a?(Hash)
|
|
90
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
91
|
+
transformed_hash = {}
|
|
92
|
+
openapi_types.each_pair do |key, type|
|
|
93
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
94
|
+
transformed_hash["#{key}"] = nil
|
|
95
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
96
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
97
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
98
|
+
end
|
|
99
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
100
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
new(transformed_hash)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def self._deserialize(type, value)
|
|
107
|
+
case type.to_sym
|
|
108
|
+
when :Time
|
|
109
|
+
Time.parse(value)
|
|
110
|
+
when :Date
|
|
111
|
+
Date.parse(value)
|
|
112
|
+
when :String
|
|
113
|
+
value.to_s
|
|
114
|
+
when :Integer
|
|
115
|
+
value.to_i
|
|
116
|
+
when :Float
|
|
117
|
+
value.to_f
|
|
118
|
+
when :Boolean
|
|
119
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
120
|
+
true
|
|
121
|
+
else
|
|
122
|
+
false
|
|
123
|
+
end
|
|
124
|
+
when :Object
|
|
125
|
+
value
|
|
126
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
|
127
|
+
inner_type = Regexp.last_match[:inner_type]
|
|
128
|
+
value.map { |v| _deserialize(inner_type, v) }
|
|
129
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
|
130
|
+
k_type = Regexp.last_match[:k_type]
|
|
131
|
+
v_type = Regexp.last_match[:v_type]
|
|
132
|
+
{}.tap do |hash|
|
|
133
|
+
value.each do |k, v|
|
|
134
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
else
|
|
138
|
+
klass = PCPServerSDK::Models.const_get(type)
|
|
139
|
+
klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def to_s
|
|
144
|
+
to_hash.to_s
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def to_body
|
|
148
|
+
to_hash
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def to_hash
|
|
152
|
+
hash = {}
|
|
153
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
154
|
+
value = self.send(attr)
|
|
155
|
+
if value.nil?
|
|
156
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
157
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
hash[param] = _to_hash(value)
|
|
161
|
+
end
|
|
162
|
+
hash
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def _to_hash(value)
|
|
166
|
+
if value.is_a?(Array)
|
|
167
|
+
value.compact.map { |v| _to_hash(v) }
|
|
168
|
+
elsif value.is_a?(Hash)
|
|
169
|
+
{}.tap do |hash|
|
|
170
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
|
171
|
+
end
|
|
172
|
+
elsif value.respond_to? :to_hash
|
|
173
|
+
value.to_hash
|
|
174
|
+
else
|
|
175
|
+
value
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
require 'date'
|
|
2
2
|
require 'time'
|
|
3
3
|
|
|
4
|
-
# Object that holds all reference properties
|
|
4
|
+
# Object that holds all reference properties that are linked to this refund transaction.
|
|
5
|
+
# Extends the standard PaymentReferences with an additional captureReference field to support
|
|
6
|
+
# scenarios where a Checkout may contain multiple partial captures from different sellers.
|
|
5
7
|
module PCPServerSDK
|
|
6
8
|
module Models
|
|
7
9
|
class PaymentReferencesForRefund
|
|
8
10
|
# Unique reference of the Commerce Case that is also returned for reporting and reconciliation purposes.
|
|
9
11
|
attr_accessor :merchant_reference
|
|
10
12
|
|
|
11
|
-
#
|
|
13
|
+
# Merchant-provided reference of the capture that this refund should be applied to.
|
|
14
|
+
# A single Checkout can contain multiple partial captures.
|
|
15
|
+
# By supplying the captureReference the merchant ensures the refund is allocated to the correct
|
|
16
|
+
# capture.
|
|
17
|
+
# This value must match the merchantReference that was provided in the PaymentReferences of the
|
|
18
|
+
# original capture request.
|
|
12
19
|
attr_accessor :capture_reference
|
|
13
20
|
|
|
14
21
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
@@ -23,6 +23,8 @@ module PCPServerSDK
|
|
|
23
23
|
|
|
24
24
|
attr_accessor :payment_product840_specific_input
|
|
25
25
|
|
|
26
|
+
attr_accessor :payment_product900_specific_input
|
|
27
|
+
|
|
26
28
|
attr_accessor :redirection_data
|
|
27
29
|
|
|
28
30
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
@@ -34,6 +36,7 @@ module PCPServerSDK
|
|
|
34
36
|
:'tokenize' => :'tokenize',
|
|
35
37
|
:'payment_product_id' => :'paymentProductId',
|
|
36
38
|
:'payment_product840_specific_input' => :'paymentProduct840SpecificInput',
|
|
39
|
+
:'payment_product900_specific_input' => :'paymentProduct900SpecificInput',
|
|
37
40
|
:'redirection_data' => :'redirectionData'
|
|
38
41
|
}
|
|
39
42
|
end
|
|
@@ -52,6 +55,7 @@ module PCPServerSDK
|
|
|
52
55
|
:'tokenize' => :'Boolean',
|
|
53
56
|
:'payment_product_id' => :'Integer',
|
|
54
57
|
:'payment_product840_specific_input' => :'RedirectPaymentProduct840SpecificInput',
|
|
58
|
+
:'payment_product900_specific_input' => :'RedirectPaymentProduct900SpecificInput',
|
|
55
59
|
:'redirection_data' => :'RedirectionData'
|
|
56
60
|
}
|
|
57
61
|
end
|
|
@@ -101,6 +105,10 @@ module PCPServerSDK
|
|
|
101
105
|
self.payment_product840_specific_input = attributes[:'payment_product840_specific_input']
|
|
102
106
|
end
|
|
103
107
|
|
|
108
|
+
if attributes.key?(:'payment_product900_specific_input')
|
|
109
|
+
self.payment_product900_specific_input = attributes[:'payment_product900_specific_input']
|
|
110
|
+
end
|
|
111
|
+
|
|
104
112
|
if attributes.key?(:'redirection_data')
|
|
105
113
|
self.redirection_data = attributes[:'redirection_data']
|
|
106
114
|
end
|
|
@@ -117,6 +125,7 @@ module PCPServerSDK
|
|
|
117
125
|
tokenize == o.tokenize &&
|
|
118
126
|
payment_product_id == o.payment_product_id &&
|
|
119
127
|
payment_product840_specific_input == o.payment_product840_specific_input &&
|
|
128
|
+
payment_product900_specific_input == o.payment_product900_specific_input &&
|
|
120
129
|
redirection_data == o.redirection_data
|
|
121
130
|
end
|
|
122
131
|
|
|
@@ -129,7 +138,7 @@ module PCPServerSDK
|
|
|
129
138
|
# Calculates hash code according to all attributes.
|
|
130
139
|
# @return [Integer] Hash code
|
|
131
140
|
def hash
|
|
132
|
-
[requires_approval, payment_processing_token, reporting_token, tokenize, payment_product_id, payment_product840_specific_input, redirection_data].hash
|
|
141
|
+
[requires_approval, payment_processing_token, reporting_token, tokenize, payment_product_id, payment_product840_specific_input, payment_product900_specific_input, redirection_data].hash
|
|
133
142
|
end
|
|
134
143
|
|
|
135
144
|
# Builds the object from hash
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
|
|
2
|
+
require 'date'
|
|
3
|
+
require 'time'
|
|
4
|
+
|
|
5
|
+
module PCPServerSDK
|
|
6
|
+
module Models
|
|
7
|
+
class RedirectPaymentProduct900SpecificInput
|
|
8
|
+
attr_accessor :capture_trigger
|
|
9
|
+
|
|
10
|
+
class EnumAttributeValidator
|
|
11
|
+
attr_reader :datatype
|
|
12
|
+
attr_reader :allowable_values
|
|
13
|
+
|
|
14
|
+
def initialize(datatype, allowable_values)
|
|
15
|
+
@allowable_values = allowable_values.map do |value|
|
|
16
|
+
case datatype.to_s
|
|
17
|
+
when /Integer/i
|
|
18
|
+
value.to_i
|
|
19
|
+
when /Float/i
|
|
20
|
+
value.to_f
|
|
21
|
+
else
|
|
22
|
+
value
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def valid?(value)
|
|
28
|
+
!value || allowable_values.include?(value)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.attribute_map
|
|
33
|
+
{
|
|
34
|
+
:'capture_trigger' => :'captureTrigger'
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.acceptable_attributes
|
|
39
|
+
attribute_map.values
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.openapi_types
|
|
43
|
+
{
|
|
44
|
+
:'capture_trigger' => :'String'
|
|
45
|
+
}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.openapi_nullable
|
|
49
|
+
Set.new([])
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def initialize(attributes = {})
|
|
53
|
+
if (!attributes.is_a?(Hash))
|
|
54
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `RedirectPaymentProduct900SpecificInput` initialize method"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
58
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
59
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `RedirectPaymentProduct900SpecificInput`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
60
|
+
end
|
|
61
|
+
h[k.to_sym] = v
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if attributes.key?(:'capture_trigger')
|
|
65
|
+
self.capture_trigger = attributes[:'capture_trigger']
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def ==(o)
|
|
70
|
+
return true if self.equal?(o)
|
|
71
|
+
self.class == o.class &&
|
|
72
|
+
capture_trigger == o.capture_trigger
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def eql?(o)
|
|
76
|
+
self == o
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def hash
|
|
80
|
+
[capture_trigger].hash
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def self.build_from_hash(attributes)
|
|
84
|
+
return nil unless attributes.is_a?(Hash)
|
|
85
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
86
|
+
transformed_hash = {}
|
|
87
|
+
openapi_types.each_pair do |key, type|
|
|
88
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
89
|
+
transformed_hash["#{key}"] = nil
|
|
90
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
91
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
92
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
93
|
+
end
|
|
94
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
95
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
new(transformed_hash)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def self._deserialize(type, value)
|
|
102
|
+
case type.to_sym
|
|
103
|
+
when :Time
|
|
104
|
+
Time.parse(value)
|
|
105
|
+
when :Date
|
|
106
|
+
Date.parse(value)
|
|
107
|
+
when :String
|
|
108
|
+
value.to_s
|
|
109
|
+
when :Integer
|
|
110
|
+
value.to_i
|
|
111
|
+
when :Float
|
|
112
|
+
value.to_f
|
|
113
|
+
when :Boolean
|
|
114
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
115
|
+
true
|
|
116
|
+
else
|
|
117
|
+
false
|
|
118
|
+
end
|
|
119
|
+
when :Object
|
|
120
|
+
value
|
|
121
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
|
122
|
+
inner_type = Regexp.last_match[:inner_type]
|
|
123
|
+
value.map { |v| _deserialize(inner_type, v) }
|
|
124
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
|
125
|
+
k_type = Regexp.last_match[:k_type]
|
|
126
|
+
v_type = Regexp.last_match[:v_type]
|
|
127
|
+
{}.tap do |hash|
|
|
128
|
+
value.each do |k, v|
|
|
129
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
else
|
|
133
|
+
klass = PCPServerSDK::Models.const_get(type)
|
|
134
|
+
klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def to_s
|
|
139
|
+
to_hash.to_s
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def to_body
|
|
143
|
+
to_hash
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def to_hash
|
|
147
|
+
hash = {}
|
|
148
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
149
|
+
value = self.send(attr)
|
|
150
|
+
if value.nil?
|
|
151
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
152
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
hash[param] = _to_hash(value)
|
|
156
|
+
end
|
|
157
|
+
hash
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def _to_hash(value)
|
|
161
|
+
if value.is_a?(Array)
|
|
162
|
+
value.compact.map { |v| _to_hash(v) }
|
|
163
|
+
elsif value.is_a?(Hash)
|
|
164
|
+
{}.tap do |hash|
|
|
165
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
|
166
|
+
end
|
|
167
|
+
elsif value.respond_to? :to_hash
|
|
168
|
+
value.to_hash
|
|
169
|
+
else
|
|
170
|
+
value
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def capture_trigger=(capture_trigger)
|
|
175
|
+
validator = EnumAttributeValidator.new('String', ['shipping', 'delivery', 'availability', 'serviceFulfillment', 'other'])
|
|
176
|
+
unless validator.valid?(capture_trigger)
|
|
177
|
+
fail ArgumentError, "invalid value for \"capture_trigger\", must be one of #{validator.allowable_values}."
|
|
178
|
+
end
|
|
179
|
+
@capture_trigger = capture_trigger
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
data/lib/PCP-server-Ruby-SDK.rb
CHANGED
|
@@ -78,6 +78,8 @@ require_relative 'PCP-server-Ruby-SDK/models/financing_payment_method_specific_i
|
|
|
78
78
|
require_relative 'PCP-server-Ruby-SDK/models/financing_payment_method_specific_output'
|
|
79
79
|
require_relative 'PCP-server-Ruby-SDK/models/fund_distribution'
|
|
80
80
|
require_relative 'PCP-server-Ruby-SDK/models/fund_split'
|
|
81
|
+
require_relative 'PCP-server-Ruby-SDK/models/fund_split_request'
|
|
82
|
+
require_relative 'PCP-server-Ruby-SDK/models/fund_split_response'
|
|
81
83
|
require_relative 'PCP-server-Ruby-SDK/models/installment_option'
|
|
82
84
|
require_relative 'PCP-server-Ruby-SDK/models/link_information'
|
|
83
85
|
require_relative 'PCP-server-Ruby-SDK/models/mandate_recurrence_type'
|
|
@@ -138,6 +140,7 @@ require_relative 'PCP-server-Ruby-SDK/models/complete_payment_product840_specifi
|
|
|
138
140
|
require_relative 'PCP-server-Ruby-SDK/models/complete_redirect_payment_method_specific_input'
|
|
139
141
|
require_relative 'PCP-server-Ruby-SDK/models/redirect_payment_method_specific_output'
|
|
140
142
|
require_relative 'PCP-server-Ruby-SDK/models/redirect_payment_product840_specific_input'
|
|
143
|
+
require_relative 'PCP-server-Ruby-SDK/models/redirect_payment_product900_specific_input'
|
|
141
144
|
require_relative 'PCP-server-Ruby-SDK/models/redirection_data'
|
|
142
145
|
require_relative 'PCP-server-Ruby-SDK/models/references'
|
|
143
146
|
require_relative 'PCP-server-Ruby-SDK/models/refresh_payment_request'
|
data/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pcp-serversdk-ruby",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pcp-serversdk-ruby",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.10.0",
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@commitlint/cli": "19.4.0",
|
|
12
12
|
"@commitlint/config-conventional": "19.2.2",
|
data/package.json
CHANGED
|
@@ -377,4 +377,56 @@ RSpec.describe PCPServerSDK::Endpoints::PaymentExecutionApiClient do
|
|
|
377
377
|
end
|
|
378
378
|
end
|
|
379
379
|
end
|
|
380
|
+
|
|
381
|
+
describe '#create_fund_split' do
|
|
382
|
+
let(:payload) { double('PCPServerSDK::Models::FundSplitRequest') }
|
|
383
|
+
|
|
384
|
+
context 'when request is successful' do
|
|
385
|
+
let(:response) { double('Response', body: '{}', code: '200') }
|
|
386
|
+
let(:expected_response) { PCPServerSDK::Models::FundSplitResponse.new }
|
|
387
|
+
|
|
388
|
+
before do
|
|
389
|
+
allow(client).to receive(:get_response).and_return(response)
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
it 'returns a successful response' do
|
|
393
|
+
result = client.create_fund_split('1', '2', '3', '4', '5', payload)
|
|
394
|
+
expect(result).to eq(expected_response)
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
context 'when request is unsuccessful (400)' do
|
|
399
|
+
let(:response) { double('Response', body: error_body, code: '400') }
|
|
400
|
+
|
|
401
|
+
before do
|
|
402
|
+
allow(client).to receive(:get_response).and_return(response)
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
it 'raises an PCPServerSDK::Errors::ApiErrorResponseException' do
|
|
406
|
+
expect { client.create_fund_split('1', '2', '3', '4', '5', payload) }.to raise_error(PCPServerSDK::Errors::ApiErrorResponseException)
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
context 'when request is unsuccessful (500)' do
|
|
411
|
+
let(:response) { double('Response', body: '{}', code: '500') }
|
|
412
|
+
|
|
413
|
+
before do
|
|
414
|
+
allow(client).to receive(:get_response).and_return(response)
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
it 'raises an PCPServerSDK::Errors::ApiResponseRetrievalException' do
|
|
418
|
+
expect { client.create_fund_split('1', '2', '3', '4', '5', payload) }.to raise_error(PCPServerSDK::Errors::ApiResponseRetrievalException)
|
|
419
|
+
end
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
context 'when some params are nil' do
|
|
423
|
+
it 'raises a TypeError' do
|
|
424
|
+
expect { client.create_fund_split(nil, '2', '3', '4', '5', payload) }.to raise_error(TypeError, 'Merchant ID is required')
|
|
425
|
+
expect { client.create_fund_split('1', nil, '3', '4', '5', payload) }.to raise_error(TypeError, 'Commerce Case ID is required')
|
|
426
|
+
expect { client.create_fund_split('1', '2', nil, '4', '5', payload) }.to raise_error(TypeError, 'Checkout ID is required')
|
|
427
|
+
expect { client.create_fund_split('1', '2', '3', nil, '5', payload) }.to raise_error(TypeError, 'Payment Execution ID is required')
|
|
428
|
+
expect { client.create_fund_split('1', '2', '3', '4', nil, payload) }.to raise_error(TypeError, 'Event ID is required')
|
|
429
|
+
end
|
|
430
|
+
end
|
|
431
|
+
end
|
|
380
432
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pcp-server-ruby-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- PAYONE GmbH
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-05-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: net-http
|
|
@@ -190,6 +190,8 @@ files:
|
|
|
190
190
|
- lib/PCP-server-Ruby-SDK/models/financing_payment_method_specific_output.rb
|
|
191
191
|
- lib/PCP-server-Ruby-SDK/models/fund_distribution.rb
|
|
192
192
|
- lib/PCP-server-Ruby-SDK/models/fund_split.rb
|
|
193
|
+
- lib/PCP-server-Ruby-SDK/models/fund_split_request.rb
|
|
194
|
+
- lib/PCP-server-Ruby-SDK/models/fund_split_response.rb
|
|
193
195
|
- lib/PCP-server-Ruby-SDK/models/installment_option.rb
|
|
194
196
|
- lib/PCP-server-Ruby-SDK/models/link_information.rb
|
|
195
197
|
- lib/PCP-server-Ruby-SDK/models/mandate_recurrence_type.rb
|
|
@@ -249,6 +251,7 @@ files:
|
|
|
249
251
|
- lib/PCP-server-Ruby-SDK/models/redirect_payment_method_specific_input.rb
|
|
250
252
|
- lib/PCP-server-Ruby-SDK/models/redirect_payment_method_specific_output.rb
|
|
251
253
|
- lib/PCP-server-Ruby-SDK/models/redirect_payment_product840_specific_input.rb
|
|
254
|
+
- lib/PCP-server-Ruby-SDK/models/redirect_payment_product900_specific_input.rb
|
|
252
255
|
- lib/PCP-server-Ruby-SDK/models/redirection_data.rb
|
|
253
256
|
- lib/PCP-server-Ruby-SDK/models/references.rb
|
|
254
257
|
- lib/PCP-server-Ruby-SDK/models/refresh_payment_request.rb
|
|
@@ -332,15 +335,15 @@ specification_version: 4
|
|
|
332
335
|
summary: Commerce Platform API Ruby Gem
|
|
333
336
|
test_files:
|
|
334
337
|
- spec/communicator_configuration_spec.rb
|
|
338
|
+
- spec/endpoints/order_management_checkout_actions_api_client_spec.rb
|
|
339
|
+
- spec/endpoints/base_api_client_spec.rb
|
|
335
340
|
- spec/endpoints/payment_execution_api_client_spec.rb
|
|
336
|
-
- spec/endpoints/checkout_api_client_spec.rb
|
|
337
341
|
- spec/endpoints/payment_information_api_client_spec.rb
|
|
338
|
-
- spec/endpoints/commerce_case_api_client_spec.rb
|
|
339
|
-
- spec/endpoints/base_api_client_spec.rb
|
|
340
|
-
- spec/endpoints/order_management_checkout_actions_api_client_spec.rb
|
|
341
342
|
- spec/endpoints/authentication_api_client_spec.rb
|
|
342
|
-
- spec/
|
|
343
|
+
- spec/endpoints/checkout_api_client_spec.rb
|
|
344
|
+
- spec/endpoints/commerce_case_api_client_spec.rb
|
|
343
345
|
- spec/errors/api_response_retrieval_exception_spec.rb
|
|
346
|
+
- spec/errors/api_exception_spec.rb
|
|
344
347
|
- spec/errors/api_error_response_exception_spec.rb
|
|
345
348
|
- spec/models/required_field_validation_spec.rb
|
|
346
349
|
- spec/queries/get_checkouts_query_spec.rb
|