strapi-plugin-payone-provider 5.6.11 â 5.6.13
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.
- package/README.md +102 -545
- package/admin/src/components/PluginIcon/index.jsx +14 -3
- package/admin/src/pages/App/components/AppHeader.jsx +1 -1
- package/admin/src/pages/App/components/AppTabs.jsx +69 -16
- package/admin/src/pages/App/components/RenderInput.jsx +9 -25
- package/admin/src/pages/App/components/StatusBadge.jsx +69 -17
- package/admin/src/pages/App/components/configuration/ConfigurationPanel.jsx +2 -2
- package/admin/src/pages/App/components/icons/index.jsx +1 -0
- package/admin/src/pages/App/components/transaction-history/FiltersPanel.jsx +4 -3
- package/admin/src/pages/App/components/transaction-history/TransactionTable.jsx +6 -5
- package/admin/src/pages/App/components/transaction-history/details/TransactionDetails.jsx +10 -10
- package/admin/src/pages/App/index.jsx +3 -3
- package/admin/src/pages/App/styles.css +28 -23
- package/admin/src/pages/utils/api.js +3 -2
- package/admin/src/pages/utils/getInputComponent.jsx +20 -45
- package/admin/src/pages/utils/transactionTableUtils.js +2 -1
- package/package.json +1 -1
- package/server/content-types/index.js +5 -0
- package/server/content-types/transactions/index.js +5 -0
- package/server/content-types/transactions/schema.json +87 -0
- package/server/controllers/payone.js +24 -13
- package/server/index.js +2 -0
- package/server/policies/is-payone-notification.js +12 -23
- package/server/services/transactionService.js +137 -104
- package/server/services/transactionStatusService.js +55 -61
- package/server/utils/sanitize.js +42 -0
package/README.md
CHANGED
|
@@ -8,13 +8,24 @@ A comprehensive Strapi plugin that integrates the Payone payment gateway into yo
|
|
|
8
8
|
- [Requirements](#requirements)
|
|
9
9
|
- [Installation](#installation)
|
|
10
10
|
- [Configuration](#configuration)
|
|
11
|
-
- [
|
|
11
|
+
- [Using the Admin Panel](#using-the-admin-panel-recommended)
|
|
12
|
+
- [Apple Pay Setup](#apple-pay-setup)
|
|
13
|
+
- [Google Pay Configuration](#google-pay-configuration)
|
|
12
14
|
- [Usage](#usage)
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
- [Base URL](#base-url)
|
|
16
|
+
- [Common Request Headers](#common-request-headers)
|
|
17
|
+
- [Common Response Fields](#common-response-fields)
|
|
18
|
+
- [Payment Methods & Operations](#payment-methods--operations)
|
|
19
|
+
- [Credit Card](#credit-card)
|
|
20
|
+
- [PayPal](#paypal)
|
|
21
|
+
- [Google Pay](#google-pay)
|
|
22
|
+
- [Apple Pay](#apple-pay)
|
|
23
|
+
- [SEPA Direct Debit](#sepa-direct-debit)
|
|
24
|
+
- [Sofort Banking](#sofort-banking)
|
|
25
|
+
- [TransactionStatus Notifications](#transactionstatus-notifications)
|
|
26
|
+
- [Notes](#notes)
|
|
27
|
+
|
|
28
|
+
## Features
|
|
18
29
|
|
|
19
30
|
- **Payone API Integration**: Full integration with Payone's Server API (v3.10)
|
|
20
31
|
- **Payment Operations**:
|
|
@@ -29,9 +40,8 @@ A comprehensive Strapi plugin that integrates the Payone payment gateway into yo
|
|
|
29
40
|
- Connection testing
|
|
30
41
|
- **Transaction Logging**: Automatic logging of all payment operations
|
|
31
42
|
- **Security**: Secure credential storage with masked API keys
|
|
32
|
-
- **Test & Live Modes**: Support for both test and production environments
|
|
33
43
|
|
|
34
|
-
##
|
|
44
|
+
## Requirements
|
|
35
45
|
|
|
36
46
|
Before installing this plugin, ensure you have:
|
|
37
47
|
|
|
@@ -53,9 +63,8 @@ You will need the following credentials from your Payone account:
|
|
|
53
63
|
|
|
54
64
|
> âšī¸ **How to get Payone credentials**: Log into your Payone Merchant Interface (PMI) and navigate to Configuration â Payment Portals â [Your Portal] â Advanced Tab to find these credentials.
|
|
55
65
|
|
|
56
|
-
##
|
|
66
|
+
## Installation
|
|
57
67
|
|
|
58
|
-
### Install from npm
|
|
59
68
|
|
|
60
69
|
**Important**: Choose the correct version based on your Strapi version:
|
|
61
70
|
|
|
@@ -63,57 +72,37 @@ You will need the following credentials from your Payone account:
|
|
|
63
72
|
- **For Strapi 4.x.x**: Use plugin version `^4.x.x`
|
|
64
73
|
|
|
65
74
|
```bash
|
|
66
|
-
#
|
|
67
|
-
npm install strapi-plugin-payone-provider
|
|
68
|
-
#
|
|
69
|
-
yarn add strapi-plugin-payone-provider
|
|
70
|
-
#
|
|
71
|
-
pnpm add strapi-plugin-payone-provider
|
|
72
|
-
|
|
73
|
-
# For Strapi 4.x.x
|
|
74
|
-
npm install strapi-plugin-payone-provider@^4
|
|
75
|
-
# or
|
|
76
|
-
yarn add strapi-plugin-payone-provider@^4
|
|
77
|
-
# or
|
|
78
|
-
pnpm add strapi-plugin-payone-provider@^4
|
|
75
|
+
# npm
|
|
76
|
+
npm install strapi-plugin-payone-provider
|
|
77
|
+
# yarn
|
|
78
|
+
yarn add strapi-plugin-payone-provider
|
|
79
|
+
# pnpm
|
|
80
|
+
pnpm add strapi-plugin-payone-provider
|
|
81
|
+
|
|
79
82
|
```
|
|
80
83
|
|
|
81
|
-
>
|
|
84
|
+
> **Version Compatibility**: Make sure to install the correct plugin version that matches your Strapi version. Using an incompatible version may cause errors or unexpected behavior.
|
|
85
|
+
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
|
|
88
|
+
## Configuration
|
|
84
89
|
|
|
85
90
|
After installation, you need to configure your Payone credentials:
|
|
86
91
|
|
|
87
92
|
### Using the Admin Panel (Recommended)
|
|
88
93
|
|
|
89
|
-
1.
|
|
90
|
-
2.
|
|
91
|
-
3.
|
|
92
|
-
4. Fill in your Payone credentials:
|
|
94
|
+
1. Open **Payone Provider** in the sidebar menu
|
|
95
|
+
2. Go to the **Configuration** tab
|
|
96
|
+
3. Fill in your Payone credentials and save:
|
|
93
97
|
- **Account ID (AID)**: Your Payone account ID
|
|
94
98
|
- **Portal ID**: Your Payone portal ID
|
|
95
99
|
- **Merchant ID (MID)**: Your merchant ID
|
|
96
100
|
- **Portal Key**: Your API security key
|
|
97
101
|
- **Mode**: Select `test` for testing or `live` for production
|
|
98
102
|
- **API Version**: Leave as `3.10` (default)
|
|
99
|
-
|
|
100
|
-
6. Click **"Save Configuration"** to store your settings
|
|
101
|
-
|
|
102
|
-
### Apple Pay Configuration
|
|
103
|
+
4. Click **"Test Connection"** to verify your credentials
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
1. Navigate to **Payone Provider** in the sidebar menu
|
|
107
|
-
2. Go to **Payment Actions** tab
|
|
108
|
-
3. Select **Apple Pay** as the payment method
|
|
109
|
-
4. Click on the Apple Pay configuration link: `/plugins/strapi-plugin-payone-provider/apple-pay-config`
|
|
110
|
-
5. Configure the following settings:
|
|
111
|
-
- **Country Code**: Select the country where your business operates
|
|
112
|
-
- **Currency Code**: Select the currency for transactions
|
|
113
|
-
- **Supported Networks**: Select payment card networks (Visa, Mastercard, Amex, etc.)
|
|
114
|
-
- **Merchant Capabilities**: Select payment capabilities (3D Secure is recommended)
|
|
115
|
-
- **Button Style & Type**: Customize the Apple Pay button appearance
|
|
116
|
-
6. Click **"Save Apple Pay Configuration"** to store your settings
|
|
105
|
+
### Apple Pay setup
|
|
117
106
|
|
|
118
107
|
> â ī¸ **Important**: Apple Pay requires a registered domain with HTTPS. It does NOT work on localhost. For testing, use a production domain with HTTPS or test on a device with Safari (iOS/macOS).
|
|
119
108
|
|
|
@@ -132,7 +121,6 @@ https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association
|
|
|
132
121
|
- Download the domain verification file from Payone documentation: [https://docs.payone.com/payment-methods/apple-pay/apple-pay-without-dev](https://docs.payone.com/payment-methods/apple-pay/apple-pay-without-dev)
|
|
133
122
|
- Alternatively, log into your Payone Merchant Interface (PMI)
|
|
134
123
|
- Navigate to **Configuration** â **Payment Portals** â **Apple Pay**
|
|
135
|
-
- Download the `apple-developer-merchantid-domain-association` file
|
|
136
124
|
|
|
137
125
|
2. **Place the file in Strapi:**
|
|
138
126
|
|
|
@@ -152,7 +140,7 @@ https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association
|
|
|
152
140
|
|
|
153
141
|
#### Middleware Configuration for Apple Pay
|
|
154
142
|
|
|
155
|
-
Apple Pay requires Content Security Policy (CSP) configuration in `config/middlewares.js` to allow Apple Pay scripts. Without this configuration, Apple Pay will NOT work.
|
|
143
|
+
Apple Pay requires Content Security Policy (CSP) configuration in `config/middlewares.js` to allow Apple Pay scripts. Without this configuration, Apple Pay will NOT work on your strapi admin for make test transaction.
|
|
156
144
|
|
|
157
145
|
**Required CSP directives:**
|
|
158
146
|
|
|
@@ -195,25 +183,10 @@ module.exports = [
|
|
|
195
183
|
|
|
196
184
|
### Google Pay Configuration
|
|
197
185
|
|
|
198
|
-
To configure Google Pay settings:
|
|
199
|
-
|
|
200
|
-
1. Navigate to **Payone Provider** in the sidebar menu
|
|
201
|
-
2. Go to **Payment Actions** tab
|
|
202
|
-
3. Select **Google Pay** as the payment method
|
|
203
|
-
4. Click on the Google Pay configuration link: `/plugins/strapi-plugin-payone-provider/google-pay-config`
|
|
204
|
-
5. Configure the following settings:
|
|
205
|
-
- **Country Code**: Select the country where your business operates
|
|
206
|
-
- **Currency Code**: Select the currency for transactions
|
|
207
|
-
- **Merchant Name**: Enter your business name as it will appear in Google Pay
|
|
208
|
-
- **Allowed Card Networks**: Select payment card networks (Mastercard, Visa, Amex, etc.)
|
|
209
|
-
- **Allowed Authentication Methods**: Select authentication methods (PAN Only, 3D Secure)
|
|
210
|
-
6. Click **"Save Google Pay Configuration"** to store your settings
|
|
211
|
-
|
|
212
|
-
> âšī¸ **Note**: The Gateway Merchant ID will be automatically obtained from your Payone Merchant ID (MID) or Portal ID configured in the main Configuration tab.
|
|
213
186
|
|
|
214
187
|
#### Middleware Configuration for Google Pay
|
|
215
188
|
|
|
216
|
-
Google Pay requires Content Security Policy (CSP) configuration in `config/middlewares.js` to allow Google Pay scripts. Without this configuration, Google Pay will NOT work.
|
|
189
|
+
Google Pay requires Content Security Policy (CSP) configuration in `config/middlewares.js` to allow Google Pay scripts. Without this configuration, Google Pay will NOT work on your strapi admin for make test transactions.
|
|
217
190
|
|
|
218
191
|
**Required CSP directives:**
|
|
219
192
|
|
|
@@ -252,27 +225,8 @@ module.exports = [
|
|
|
252
225
|
|
|
253
226
|
> â ī¸ **Important**: Without this middleware configuration, Google Pay scripts will be blocked and Google Pay will NOT work!
|
|
254
227
|
|
|
255
|
-
## đ Getting Started
|
|
256
|
-
|
|
257
|
-
### 1. Test Your Connection
|
|
258
|
-
|
|
259
|
-
After configuring your credentials:
|
|
260
|
-
|
|
261
|
-
1. Open the **Configuration** tab in the Payone Provider admin panel
|
|
262
|
-
2. Click the **"Test Connection"** button
|
|
263
|
-
3. If successful, you'll see a green success message
|
|
264
|
-
4. If it fails, check your credentials and try again
|
|
265
228
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
1. Go to the **Payment Actions** tab
|
|
269
|
-
2. Try a **Preauthorization** operation:
|
|
270
|
-
- Amount: 1000 (equals 10.00 EUR in cents)
|
|
271
|
-
- Reference: Leave empty for auto-generation
|
|
272
|
-
- Click **"Execute Preauthorization"**
|
|
273
|
-
3. Check the **Transaction History** tab to see the logged transaction
|
|
274
|
-
|
|
275
|
-
## đ Usage
|
|
229
|
+
## Usage
|
|
276
230
|
|
|
277
231
|
### Base URL
|
|
278
232
|
|
|
@@ -304,127 +258,20 @@ All responses include:
|
|
|
304
258
|
|
|
305
259
|
---
|
|
306
260
|
|
|
307
|
-
##
|
|
308
|
-
|
|
309
|
-
3D Secure (3DS) is a security protocol that adds an extra layer of authentication for credit card payments, ensuring compliance with Strong Customer Authentication (SCA) requirements.
|
|
310
|
-
|
|
311
|
-
### Enabling 3D Secure
|
|
312
|
-
|
|
313
|
-
1. Navigate to **Payone Provider** in the Strapi admin panel
|
|
314
|
-
2. Go to the **Configuration** tab
|
|
315
|
-
3. Find the **"Enable 3D Secure"** dropdown
|
|
316
|
-
4. Select **"Enabled"** to activate 3DS for credit card payments
|
|
317
|
-
5. Click **"Save Configuration"**
|
|
318
|
-
|
|
319
|
-
> â ī¸ **Note**: When 3DS is enabled, it only applies to **credit card** payments (`clearingtype: "cc"`). Other payment methods are not affected.
|
|
320
|
-
|
|
321
|
-
### Supported Operations
|
|
322
|
-
|
|
323
|
-
3D Secure works with the following operations:
|
|
324
|
-
|
|
325
|
-
- â
**Preauthorization** (`POST /api/strapi-plugin-payone-provider/preauthorization`)
|
|
326
|
-
- â
**Authorization** (`POST /api/strapi-plugin-payone-provider/authorization`)
|
|
327
|
-
- â **Capture** - Not applicable (uses preauthorized transaction)
|
|
328
|
-
- â **Refund** - Not applicable (uses existing transaction)
|
|
329
|
-
|
|
330
|
-
### Required Parameters for Preauthorization/Authorization with 3DS
|
|
331
|
-
|
|
332
|
-
When 3DS is enabled and you're making a credit card payment, the following parameters are required:
|
|
333
|
-
|
|
334
|
-
**Credit Card Details** (required when 3DS is enabled):
|
|
335
|
-
|
|
336
|
-
- `cardtype`: Card type (`"V"` for VISA, `"M"` for Mastercard, `"A"` for AMEX, etc.)
|
|
337
|
-
- `cardpan`: Card number (PAN)
|
|
338
|
-
- `cardexpiredate`: Expiry date in format `YYMM` (e.g., `"2512"` for December 2025)
|
|
339
|
-
- `cardcvc2`: CVC/CVV code (3 digits for most cards, 4 digits for AMEX)
|
|
340
|
-
|
|
341
|
-
**Redirect URLs** (required for 3DS authentication flow):
|
|
342
|
-
|
|
343
|
-
- `successurl`: URL to redirect after successful 3DS authentication
|
|
344
|
-
- `errorurl`: URL to redirect after 3DS authentication error
|
|
345
|
-
- `backurl`: URL to redirect if user cancels 3DS authentication
|
|
346
|
-
|
|
347
|
-
**Example Request**:
|
|
348
|
-
|
|
349
|
-
```json
|
|
350
|
-
{
|
|
351
|
-
"amount": 1000,
|
|
352
|
-
"currency": "EUR",
|
|
353
|
-
"reference": "PAY1234567890ABCDEF",
|
|
354
|
-
"clearingtype": "cc",
|
|
355
|
-
"cardtype": "V",
|
|
356
|
-
"cardpan": "4111111111111111",
|
|
357
|
-
"cardexpiredate": "2512",
|
|
358
|
-
"cardcvc2": "123",
|
|
359
|
-
"firstname": "John",
|
|
360
|
-
"lastname": "Doe",
|
|
361
|
-
"email": "john.doe@example.com",
|
|
362
|
-
"street": "Main Street 123",
|
|
363
|
-
"zip": "12345",
|
|
364
|
-
"city": "Berlin",
|
|
365
|
-
"country": "DE",
|
|
366
|
-
"successurl": "https://www.example.com/success",
|
|
367
|
-
"errorurl": "https://www.example.com/error",
|
|
368
|
-
"backurl": "https://www.example.com/back"
|
|
369
|
-
}
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
### 3DS Response Handling
|
|
373
|
-
|
|
374
|
-
When 3DS is required, the API response will include:
|
|
375
|
-
|
|
376
|
-
```json
|
|
377
|
-
{
|
|
378
|
-
"data": {
|
|
379
|
-
"status": "REDIRECT",
|
|
380
|
-
"redirecturl": "https://secure.pay1.de/3ds/...",
|
|
381
|
-
"requires3DSRedirect": true,
|
|
382
|
-
"txid": "123456789"
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
**Response Fields**:
|
|
388
|
-
|
|
389
|
-
- `status`: `"REDIRECT"` when 3DS authentication is required
|
|
390
|
-
- `redirecturl`: URL to redirect the customer for 3DS authentication
|
|
391
|
-
- `requires3DSRedirect`: Boolean indicating if redirect is needed
|
|
392
|
-
- `txid`: Transaction ID (if available)
|
|
393
|
-
|
|
394
|
-
### 3DS Callback Endpoint
|
|
395
|
-
|
|
396
|
-
After the customer completes 3DS authentication, Payone will send a callback to:
|
|
397
|
-
|
|
398
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/3ds-callback`
|
|
261
|
+
## Payment Methods & Operations
|
|
399
262
|
|
|
400
|
-
This
|
|
401
|
-
|
|
402
|
-
> âšī¸ **Note**: The callback endpoint is automatically handled by the plugin. You don't need to manually process it unless you're implementing custom callback handling.
|
|
403
|
-
|
|
404
|
-
### How It Works
|
|
405
|
-
|
|
406
|
-
1. **Request**: Send a preauthorization or authorization request with credit card details and redirect URLs
|
|
407
|
-
2. **Response**: If 3DS is required, you'll receive a `REDIRECT` status with a `redirecturl`
|
|
408
|
-
3. **Redirect**: Redirect the customer to the `redirecturl` for 3DS authentication
|
|
409
|
-
4. **Callback**: After authentication, Payone redirects back to your `successurl`, `errorurl`, or `backurl` with transaction data
|
|
410
|
-
5. **Completion**: The transaction is completed based on the authentication result
|
|
411
|
-
|
|
412
|
-
### Testing 3DS
|
|
413
|
-
|
|
414
|
-
For testing 3DS authentication, use test cards that trigger 3DS challenges. Refer to the [Payone 3D Secure Documentation](https://docs.payone.com/security-risk-management/3d-secure#/) for test card numbers and scenarios.
|
|
415
|
-
|
|
416
|
-
---
|
|
417
|
-
|
|
418
|
-
## đŗ Payment Methods & Operations
|
|
263
|
+
This section provides detailed API documentation for each supported payment method. Click on any payment method below to see the full implementation details:
|
|
419
264
|
|
|
420
265
|
### Credit Card
|
|
421
266
|
|
|
422
267
|
<details>
|
|
423
268
|
<summary><strong>Credit Card Payment Method</strong></summary>
|
|
424
269
|
|
|
425
|
-
#### Preauthorization
|
|
270
|
+
#### Preauthorization/Authorization
|
|
426
271
|
|
|
427
|
-
**
|
|
272
|
+
**Endpoints:**
|
|
273
|
+
- `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
274
|
+
- `POST /api/strapi-plugin-payone-provider/authorization`
|
|
428
275
|
|
|
429
276
|
**Request Body**:
|
|
430
277
|
|
|
@@ -469,56 +316,10 @@ For testing 3DS authentication, use test cards that trigger 3DS challenges. Refe
|
|
|
469
316
|
}
|
|
470
317
|
```
|
|
471
318
|
|
|
472
|
-
#### Authorization
|
|
473
|
-
|
|
474
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/authorization`
|
|
475
|
-
|
|
476
|
-
**Request Body**: (Same as Preauthorization)
|
|
477
|
-
|
|
478
|
-
```json
|
|
479
|
-
{
|
|
480
|
-
"amount": 1000,
|
|
481
|
-
"currency": "EUR",
|
|
482
|
-
"reference": "PAY1234567890ABCDEF",
|
|
483
|
-
"clearingtype": "cc",
|
|
484
|
-
"cardtype": "V",
|
|
485
|
-
"cardpan": "4111111111111111",
|
|
486
|
-
"cardexpiredate": "2512",
|
|
487
|
-
"cardcvc2": "123",
|
|
488
|
-
"firstname": "John",
|
|
489
|
-
"lastname": "Doe",
|
|
490
|
-
"email": "john.doe@example.com",
|
|
491
|
-
"telephonenumber": "+4917512345678",
|
|
492
|
-
"street": "Main Street 123",
|
|
493
|
-
"zip": "12345",
|
|
494
|
-
"city": "Berlin",
|
|
495
|
-
"country": "DE",
|
|
496
|
-
"successurl": "https://www.example.com/success",
|
|
497
|
-
"errorurl": "https://www.example.com/error",
|
|
498
|
-
"backurl": "https://www.example.com/back",
|
|
499
|
-
"salutation": "Herr",
|
|
500
|
-
"gender": "m",
|
|
501
|
-
"ip": "127.0.0.1",
|
|
502
|
-
"language": "de",
|
|
503
|
-
"customer_is_present": "yes"
|
|
504
|
-
}
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
**Response**:
|
|
508
|
-
|
|
509
|
-
```json
|
|
510
|
-
{
|
|
511
|
-
"data": {
|
|
512
|
-
"status": "APPROVED",
|
|
513
|
-
"txid": "123456789",
|
|
514
|
-
"userid": "987654321"
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
```
|
|
518
|
-
|
|
519
319
|
#### Capture
|
|
520
320
|
|
|
521
|
-
**
|
|
321
|
+
**Endpoint:**
|
|
322
|
+
- `POST /api/strapi-plugin-payone-provider/capture`
|
|
522
323
|
|
|
523
324
|
**Request Body**:
|
|
524
325
|
|
|
@@ -544,7 +345,8 @@ For testing 3DS authentication, use test cards that trigger 3DS challenges. Refe
|
|
|
544
345
|
|
|
545
346
|
#### Refund
|
|
546
347
|
|
|
547
|
-
**
|
|
348
|
+
**Endpoint:**
|
|
349
|
+
- `POST /api/strapi-plugin-payone-provider/refund`
|
|
548
350
|
|
|
549
351
|
**Request Body**:
|
|
550
352
|
|
|
@@ -578,9 +380,11 @@ For testing 3DS authentication, use test cards that trigger 3DS challenges. Refe
|
|
|
578
380
|
<details>
|
|
579
381
|
<summary><strong>PayPal Payment Method</strong></summary>
|
|
580
382
|
|
|
581
|
-
#### Preauthorization
|
|
383
|
+
#### Preauthorization/Authorization
|
|
582
384
|
|
|
583
|
-
**
|
|
385
|
+
**Endpoints:**
|
|
386
|
+
- `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
387
|
+
- `POST /api/strapi-plugin-payone-provider/authorization`
|
|
584
388
|
|
|
585
389
|
**Request Body**:
|
|
586
390
|
|
|
@@ -628,59 +432,11 @@ For testing 3DS authentication, use test cards that trigger 3DS challenges. Refe
|
|
|
628
432
|
}
|
|
629
433
|
```
|
|
630
434
|
|
|
631
|
-
#### Authorization
|
|
632
|
-
|
|
633
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/authorization`
|
|
634
|
-
|
|
635
|
-
**Request Body**: (Same as Preauthorization)
|
|
636
|
-
|
|
637
|
-
```json
|
|
638
|
-
{
|
|
639
|
-
"amount": 1000,
|
|
640
|
-
"currency": "EUR",
|
|
641
|
-
"reference": "PAY1234567890ABCDEF",
|
|
642
|
-
"clearingtype": "wlt",
|
|
643
|
-
"wallettype": "PPE",
|
|
644
|
-
"firstname": "John",
|
|
645
|
-
"lastname": "Doe",
|
|
646
|
-
"email": "john.doe@example.com",
|
|
647
|
-
"telephonenumber": "+4917512345678",
|
|
648
|
-
"street": "Main Street 123",
|
|
649
|
-
"zip": "12345",
|
|
650
|
-
"city": "Berlin",
|
|
651
|
-
"country": "DE",
|
|
652
|
-
"shipping_firstname": "John",
|
|
653
|
-
"shipping_lastname": "Doe",
|
|
654
|
-
"shipping_street": "Main Street 123",
|
|
655
|
-
"shipping_zip": "12345",
|
|
656
|
-
"shipping_city": "Berlin",
|
|
657
|
-
"shipping_country": "DE",
|
|
658
|
-
"successurl": "https://www.example.com/success",
|
|
659
|
-
"errorurl": "https://www.example.com/error",
|
|
660
|
-
"backurl": "https://www.example.com/back",
|
|
661
|
-
"salutation": "Herr",
|
|
662
|
-
"gender": "m",
|
|
663
|
-
"ip": "127.0.0.1",
|
|
664
|
-
"language": "de",
|
|
665
|
-
"customer_is_present": "yes"
|
|
666
|
-
}
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
**Response**:
|
|
670
|
-
|
|
671
|
-
```json
|
|
672
|
-
{
|
|
673
|
-
"data": {
|
|
674
|
-
"status": "REDIRECT",
|
|
675
|
-
"txid": "123456789",
|
|
676
|
-
"redirecturl": "https://secure.pay1.de/redirect/..."
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
```
|
|
680
435
|
|
|
681
436
|
#### Capture
|
|
682
437
|
|
|
683
|
-
**
|
|
438
|
+
**Endpoint:**
|
|
439
|
+
- `POST /api/strapi-plugin-payone-provider/capture`
|
|
684
440
|
|
|
685
441
|
**Request Body**:
|
|
686
442
|
|
|
@@ -707,7 +463,8 @@ For testing 3DS authentication, use test cards that trigger 3DS challenges. Refe
|
|
|
707
463
|
|
|
708
464
|
#### Refund
|
|
709
465
|
|
|
710
|
-
**
|
|
466
|
+
**Endpoint:**
|
|
467
|
+
- `POST /api/strapi-plugin-payone-provider/refund`
|
|
711
468
|
|
|
712
469
|
**Request Body**:
|
|
713
470
|
|
|
@@ -757,7 +514,7 @@ Google Pay integration requires obtaining an encrypted payment token from Google
|
|
|
757
514
|
|
|
758
515
|
```javascript
|
|
759
516
|
const paymentsClient = new google.payments.api.PaymentsClient({
|
|
760
|
-
environment: "TEST", // or "PRODUCTION" for live
|
|
517
|
+
environment: "TEST", // or "PRODUCTION" for live mode
|
|
761
518
|
});
|
|
762
519
|
|
|
763
520
|
const baseRequest = {
|
|
@@ -813,8 +570,9 @@ paymentDataRequest.merchantInfo = {
|
|
|
813
570
|
const button = paymentsClient.createButton({
|
|
814
571
|
onClick: async () => {
|
|
815
572
|
try {
|
|
816
|
-
const paymentData =
|
|
817
|
-
|
|
573
|
+
const paymentData = await paymentsClient.loadPaymentData(
|
|
574
|
+
paymentDataRequest
|
|
575
|
+
);
|
|
818
576
|
const token = paymentData.paymentMethodData.tokenizationData.token;
|
|
819
577
|
|
|
820
578
|
// Token is a JSON string, encode it to Base64 for Payone
|
|
@@ -863,9 +621,11 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
863
621
|
|
|
864
622
|
**Important**: The token must be Base64 encoded before sending to Payone.
|
|
865
623
|
|
|
866
|
-
#### Preauthorization
|
|
624
|
+
#### Preauthorization/Authorization
|
|
867
625
|
|
|
868
|
-
**
|
|
626
|
+
**Endpoints:**
|
|
627
|
+
- `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
628
|
+
- `POST /api/strapi-plugin-payone-provider/authorization`
|
|
869
629
|
|
|
870
630
|
**Request Body**:
|
|
871
631
|
|
|
@@ -947,53 +707,11 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
947
707
|
}
|
|
948
708
|
```
|
|
949
709
|
|
|
950
|
-
#### Authorization
|
|
951
|
-
|
|
952
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/authorization`
|
|
953
|
-
|
|
954
|
-
**Request Body**: (Same as Preauthorization, include `googlePayToken`)
|
|
955
|
-
|
|
956
|
-
```json
|
|
957
|
-
{
|
|
958
|
-
"amount": 1000,
|
|
959
|
-
"currency": "EUR",
|
|
960
|
-
"reference": "PAY1234567890ABCDEF",
|
|
961
|
-
"clearingtype": "wlt",
|
|
962
|
-
"wallettype": "GGP",
|
|
963
|
-
"googlePayToken": "BASE64_ENCODED_TOKEN",
|
|
964
|
-
"firstname": "John",
|
|
965
|
-
"lastname": "Doe",
|
|
966
|
-
"email": "john.doe@example.com",
|
|
967
|
-
"street": "Main Street 123",
|
|
968
|
-
"zip": "12345",
|
|
969
|
-
"city": "Berlin",
|
|
970
|
-
"country": "DE",
|
|
971
|
-
"shipping_firstname": "John",
|
|
972
|
-
"shipping_lastname": "Doe",
|
|
973
|
-
"shipping_street": "Main Street 123",
|
|
974
|
-
"shipping_zip": "12345",
|
|
975
|
-
"shipping_city": "Berlin",
|
|
976
|
-
"shipping_country": "DE",
|
|
977
|
-
"successurl": "https://www.example.com/success",
|
|
978
|
-
"errorurl": "https://www.example.com/error",
|
|
979
|
-
"backurl": "https://www.example.com/back"
|
|
980
|
-
}
|
|
981
|
-
```
|
|
982
|
-
|
|
983
|
-
**Response**:
|
|
984
|
-
|
|
985
|
-
```json
|
|
986
|
-
{
|
|
987
|
-
"data": {
|
|
988
|
-
"status": "APPROVED",
|
|
989
|
-
"txid": "123456789"
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
```
|
|
993
710
|
|
|
994
711
|
#### Capture
|
|
995
712
|
|
|
996
|
-
**
|
|
713
|
+
**Endpoint:**
|
|
714
|
+
- `POST /api/strapi-plugin-payone-provider/capture`
|
|
997
715
|
|
|
998
716
|
**Request Body**:
|
|
999
717
|
|
|
@@ -1019,7 +737,8 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1019
737
|
|
|
1020
738
|
#### Refund
|
|
1021
739
|
|
|
1022
|
-
**
|
|
740
|
+
**Endpoint:**
|
|
741
|
+
- `POST /api/strapi-plugin-payone-provider/refund`
|
|
1023
742
|
|
|
1024
743
|
**Request Body**:
|
|
1025
744
|
|
|
@@ -1064,9 +783,11 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1064
783
|
<details>
|
|
1065
784
|
<summary><strong>Apple Pay Payment Method</strong></summary>
|
|
1066
785
|
|
|
1067
|
-
#### Preauthorization
|
|
786
|
+
#### Preauthorization/Authorization
|
|
1068
787
|
|
|
1069
|
-
**
|
|
788
|
+
**Endpoints:**
|
|
789
|
+
- `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
790
|
+
- `POST /api/strapi-plugin-payone-provider/authorization`
|
|
1070
791
|
|
|
1071
792
|
**Request Body**:
|
|
1072
793
|
|
|
@@ -1114,59 +835,10 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1114
835
|
}
|
|
1115
836
|
```
|
|
1116
837
|
|
|
1117
|
-
#### Authorization
|
|
1118
|
-
|
|
1119
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/authorization`
|
|
1120
|
-
|
|
1121
|
-
**Request Body**: (Same as Preauthorization)
|
|
1122
|
-
|
|
1123
|
-
```json
|
|
1124
|
-
{
|
|
1125
|
-
"amount": 1000,
|
|
1126
|
-
"currency": "EUR",
|
|
1127
|
-
"reference": "PAY1234567890ABCDEF",
|
|
1128
|
-
"clearingtype": "wlt",
|
|
1129
|
-
"wallettype": "APL",
|
|
1130
|
-
"firstname": "John",
|
|
1131
|
-
"lastname": "Doe",
|
|
1132
|
-
"email": "john.doe@example.com",
|
|
1133
|
-
"telephonenumber": "+4917512345678",
|
|
1134
|
-
"street": "Main Street 123",
|
|
1135
|
-
"zip": "12345",
|
|
1136
|
-
"city": "Berlin",
|
|
1137
|
-
"country": "DE",
|
|
1138
|
-
"shipping_firstname": "John",
|
|
1139
|
-
"shipping_lastname": "Doe",
|
|
1140
|
-
"shipping_street": "Main Street 123",
|
|
1141
|
-
"shipping_zip": "12345",
|
|
1142
|
-
"shipping_city": "Berlin",
|
|
1143
|
-
"shipping_country": "DE",
|
|
1144
|
-
"successurl": "https://www.example.com/success",
|
|
1145
|
-
"errorurl": "https://www.example.com/error",
|
|
1146
|
-
"backurl": "https://www.example.com/back",
|
|
1147
|
-
"salutation": "Herr",
|
|
1148
|
-
"gender": "m",
|
|
1149
|
-
"ip": "127.0.0.1",
|
|
1150
|
-
"language": "de",
|
|
1151
|
-
"customer_is_present": "yes"
|
|
1152
|
-
}
|
|
1153
|
-
```
|
|
1154
|
-
|
|
1155
|
-
**Response**:
|
|
1156
|
-
|
|
1157
|
-
```json
|
|
1158
|
-
{
|
|
1159
|
-
"data": {
|
|
1160
|
-
"status": "REDIRECT",
|
|
1161
|
-
"txid": "123456789",
|
|
1162
|
-
"redirecturl": "https://secure.pay1.de/redirect/..."
|
|
1163
|
-
}
|
|
1164
|
-
}
|
|
1165
|
-
```
|
|
1166
|
-
|
|
1167
838
|
#### Capture
|
|
1168
839
|
|
|
1169
|
-
**
|
|
840
|
+
**Endpoint:**
|
|
841
|
+
- `POST /api/strapi-plugin-payone-provider/capture`
|
|
1170
842
|
|
|
1171
843
|
**Request Body**:
|
|
1172
844
|
|
|
@@ -1193,7 +865,8 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1193
865
|
|
|
1194
866
|
#### Refund
|
|
1195
867
|
|
|
1196
|
-
**
|
|
868
|
+
**Endpoint:**
|
|
869
|
+
- `POST /api/strapi-plugin-payone-provider/refund`
|
|
1197
870
|
|
|
1198
871
|
**Request Body**:
|
|
1199
872
|
|
|
@@ -1227,9 +900,11 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1227
900
|
<details>
|
|
1228
901
|
<summary><strong>SEPA Direct Debit Payment Method</strong></summary>
|
|
1229
902
|
|
|
1230
|
-
#### Preauthorization
|
|
903
|
+
#### Preauthorization/Authorization
|
|
1231
904
|
|
|
1232
|
-
**
|
|
905
|
+
**Endpoints:**
|
|
906
|
+
- `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
907
|
+
- `POST /api/strapi-plugin-payone-provider/authorization`
|
|
1233
908
|
|
|
1234
909
|
**Request Body**:
|
|
1235
910
|
|
|
@@ -1271,53 +946,10 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1271
946
|
}
|
|
1272
947
|
```
|
|
1273
948
|
|
|
1274
|
-
#### Authorization
|
|
1275
|
-
|
|
1276
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/authorization`
|
|
1277
|
-
|
|
1278
|
-
**Request Body**: (Same as Preauthorization)
|
|
1279
|
-
|
|
1280
|
-
```json
|
|
1281
|
-
{
|
|
1282
|
-
"amount": 1000,
|
|
1283
|
-
"currency": "EUR",
|
|
1284
|
-
"reference": "PAY1234567890ABCDEF",
|
|
1285
|
-
"clearingtype": "elv",
|
|
1286
|
-
"iban": "DE89370400440532013000",
|
|
1287
|
-
"bic": "COBADEFFXXX",
|
|
1288
|
-
"bankaccountholder": "John Doe",
|
|
1289
|
-
"bankcountry": "DE",
|
|
1290
|
-
"firstname": "John",
|
|
1291
|
-
"lastname": "Doe",
|
|
1292
|
-
"email": "john.doe@example.com",
|
|
1293
|
-
"telephonenumber": "+4917512345678",
|
|
1294
|
-
"street": "Main Street 123",
|
|
1295
|
-
"zip": "12345",
|
|
1296
|
-
"city": "Berlin",
|
|
1297
|
-
"country": "DE",
|
|
1298
|
-
"salutation": "Herr",
|
|
1299
|
-
"gender": "m",
|
|
1300
|
-
"ip": "127.0.0.1",
|
|
1301
|
-
"language": "de",
|
|
1302
|
-
"customer_is_present": "yes"
|
|
1303
|
-
}
|
|
1304
|
-
```
|
|
1305
|
-
|
|
1306
|
-
**Response**:
|
|
1307
|
-
|
|
1308
|
-
```json
|
|
1309
|
-
{
|
|
1310
|
-
"data": {
|
|
1311
|
-
"status": "APPROVED",
|
|
1312
|
-
"txid": "123456789",
|
|
1313
|
-
"userid": "987654321"
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
```
|
|
1317
|
-
|
|
1318
949
|
#### Capture
|
|
1319
950
|
|
|
1320
|
-
**
|
|
951
|
+
**Endpoint:**
|
|
952
|
+
- `POST /api/strapi-plugin-payone-provider/capture`
|
|
1321
953
|
|
|
1322
954
|
**Request Body**:
|
|
1323
955
|
|
|
@@ -1343,7 +975,8 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1343
975
|
|
|
1344
976
|
#### Refund
|
|
1345
977
|
|
|
1346
|
-
**
|
|
978
|
+
**Endpoint:**
|
|
979
|
+
- `POST /api/strapi-plugin-payone-provider/refund`
|
|
1347
980
|
|
|
1348
981
|
**Request Body**:
|
|
1349
982
|
|
|
@@ -1377,9 +1010,12 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1377
1010
|
<details>
|
|
1378
1011
|
<summary><strong>Sofort Banking Payment Method</strong></summary>
|
|
1379
1012
|
|
|
1380
|
-
#### Preauthorization
|
|
1013
|
+
#### Preauthorization/Authorization
|
|
1014
|
+
|
|
1015
|
+
**Endpoint:**
|
|
1016
|
+
- `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
1017
|
+
- `POST /api/strapi-plugin-payone-provider/authorization`
|
|
1381
1018
|
|
|
1382
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/preauthorization`
|
|
1383
1019
|
|
|
1384
1020
|
**Request Body**:
|
|
1385
1021
|
|
|
@@ -1422,54 +1058,11 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1422
1058
|
}
|
|
1423
1059
|
```
|
|
1424
1060
|
|
|
1425
|
-
#### Authorization
|
|
1426
|
-
|
|
1427
|
-
**URL**: `POST /api/strapi-plugin-payone-provider/authorization`
|
|
1428
|
-
|
|
1429
|
-
**Request Body**: (Same as Preauthorization)
|
|
1430
|
-
|
|
1431
|
-
```json
|
|
1432
|
-
{
|
|
1433
|
-
"amount": 1000,
|
|
1434
|
-
"currency": "EUR",
|
|
1435
|
-
"reference": "PAY1234567890ABCDEF",
|
|
1436
|
-
"clearingtype": "sb",
|
|
1437
|
-
"onlinebanktransfertype": "PNT",
|
|
1438
|
-
"bankcountry": "DE",
|
|
1439
|
-
"firstname": "John",
|
|
1440
|
-
"lastname": "Doe",
|
|
1441
|
-
"email": "john.doe@example.com",
|
|
1442
|
-
"telephonenumber": "+4917512345678",
|
|
1443
|
-
"street": "Main Street 123",
|
|
1444
|
-
"zip": "12345",
|
|
1445
|
-
"city": "Berlin",
|
|
1446
|
-
"country": "DE",
|
|
1447
|
-
"successurl": "https://www.example.com/success",
|
|
1448
|
-
"errorurl": "https://www.example.com/error",
|
|
1449
|
-
"backurl": "https://www.example.com/back",
|
|
1450
|
-
"salutation": "Herr",
|
|
1451
|
-
"gender": "m",
|
|
1452
|
-
"ip": "127.0.0.1",
|
|
1453
|
-
"language": "de",
|
|
1454
|
-
"customer_is_present": "yes"
|
|
1455
|
-
}
|
|
1456
|
-
```
|
|
1457
|
-
|
|
1458
|
-
**Response**:
|
|
1459
|
-
|
|
1460
|
-
```json
|
|
1461
|
-
{
|
|
1462
|
-
"data": {
|
|
1463
|
-
"status": "REDIRECT",
|
|
1464
|
-
"txid": "123456789",
|
|
1465
|
-
"redirecturl": "https://secure.pay1.de/redirect/..."
|
|
1466
|
-
}
|
|
1467
|
-
}
|
|
1468
|
-
```
|
|
1469
1061
|
|
|
1470
1062
|
#### Capture
|
|
1471
1063
|
|
|
1472
|
-
**
|
|
1064
|
+
**Endpoint:**
|
|
1065
|
+
- `POST /api/strapi-plugin-payone-provider/capture`
|
|
1473
1066
|
|
|
1474
1067
|
**Request Body**:
|
|
1475
1068
|
|
|
@@ -1495,7 +1088,8 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1495
1088
|
|
|
1496
1089
|
#### Refund
|
|
1497
1090
|
|
|
1498
|
-
**
|
|
1091
|
+
**Endpoint:**
|
|
1092
|
+
- `POST /api/strapi-plugin-payone-provider/refund`
|
|
1499
1093
|
|
|
1500
1094
|
**Request Body**:
|
|
1501
1095
|
|
|
@@ -1524,52 +1118,7 @@ The token from Google Pay is a JSON string with the following structure:
|
|
|
1524
1118
|
|
|
1525
1119
|
---
|
|
1526
1120
|
|
|
1527
|
-
##
|
|
1528
|
-
|
|
1529
|
-
Click on any payment method to see detailed API documentation:
|
|
1530
|
-
|
|
1531
|
-
- [Credit Card](#credit-card)
|
|
1532
|
-
- [PayPal](#paypal)
|
|
1533
|
-
- [Google Pay](#google-pay)
|
|
1534
|
-
- [Apple Pay](#apple-pay)
|
|
1535
|
-
- [SEPA Direct Debit](#sepa-direct-debit)
|
|
1536
|
-
- [Sofort Banking](#sofort-banking)
|
|
1537
|
-
|
|
1538
|
-
---
|
|
1539
|
-
|
|
1540
|
-
## đ Notes
|
|
1541
|
-
|
|
1542
|
-
### Important Parameters
|
|
1543
|
-
|
|
1544
|
-
- **amount**: Always in cents (e.g., 1000 = 10.00 EUR)
|
|
1545
|
-
- **reference**: Max 20 characters, alphanumeric only. Auto-normalized by the plugin.
|
|
1546
|
-
- **cardexpiredate**: Format is YYMM (e.g., "2512" = December 2025)
|
|
1547
|
-
- **sequencenumber**: Start with 1 for capture, 2 for first refund, increment for subsequent refunds
|
|
1548
|
-
- **Refund amount**: Must be negative (e.g., -1000 for 10.00 EUR refund)
|
|
1549
|
-
|
|
1550
|
-
### Redirect URLs
|
|
1551
|
-
|
|
1552
|
-
For redirect-based payment methods (PayPal, Google Pay, Apple Pay, Sofort), you must provide:
|
|
1553
|
-
|
|
1554
|
-
- `successurl`: URL to redirect after successful payment
|
|
1555
|
-
- `errorurl`: URL to redirect after payment error
|
|
1556
|
-
- `backurl`: URL to redirect if user cancels payment
|
|
1557
|
-
|
|
1558
|
-
### Preauthorization vs Authorization
|
|
1559
|
-
|
|
1560
|
-
- **Preauthorization**: Reserves funds but doesn't charge immediately. Requires a Capture call later.
|
|
1561
|
-
- **Authorization**: Immediately charges the customer's payment method.
|
|
1562
|
-
|
|
1563
|
-
### Capture Mode
|
|
1564
|
-
|
|
1565
|
-
For wallet payments (PayPal, Google Pay, Apple Pay), you can specify:
|
|
1566
|
-
|
|
1567
|
-
- `capturemode: "full"`: Capture the entire preauthorized amount
|
|
1568
|
-
- `capturemode: "partial"`: Capture less than the preauthorized amount
|
|
1569
|
-
|
|
1570
|
-
---
|
|
1571
|
-
|
|
1572
|
-
## đĸ TransactionStatus Notifications
|
|
1121
|
+
## TransactionStatus Notifications
|
|
1573
1122
|
|
|
1574
1123
|
The Payone platform provides an asynchronous way of notifying your system of changes to a transaction. These notifications are called "TransactionStatus" and are automatically handled by this plugin.
|
|
1575
1124
|
|
|
@@ -1632,3 +1181,11 @@ The plugin automatically verifies:
|
|
|
1632
1181
|
4. **Credentials**: Verifies that `portalid` and `aid` match your configured settings
|
|
1633
1182
|
|
|
1634
1183
|
> đ **Reference**: For more details, see [Payone TransactionStatus Notification Documentation](https://docs.payone.com/integration/response-handling/transactionstatus-notification)
|
|
1184
|
+
|
|
1185
|
+
---
|
|
1186
|
+
|
|
1187
|
+
## Notes
|
|
1188
|
+
|
|
1189
|
+
For additional information and updates, please refer to the official Payone documentation:
|
|
1190
|
+
|
|
1191
|
+
**Payone Documentation**: [https://docs.payone.com/payment-methods](https://docs.payone.com/payment-methods)
|