### Install ClientSecurityKit pod
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Run pod install to install the ClientSecurityKit pod. The output shows the installation process and a warning about the missing platform specification.
```bash
$ pod install
Analyzing dependencies
Downloading dependencies
Using ClientSecurityKit (1.2.5)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
[!] Automatically assigning platform `ios` with version `11.0` on target `app` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
```
--------------------------------
### Install Ratepay via Composer and Enable Module
Source: https://docs.ratepay.com/docs/developer/shop_modules/magento/magento_2/get_started/installation.md
Run these commands from the root of your shop directory to install the package, enable the module, and update the Magento setup.
```bash
composer require ratepay/magento2-payment
php bin/magento module:enable RatePAY_Payment
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:clean
```
--------------------------------
### CONFIGURATION_REQUEST Response XML Example
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/the_ratepay_gateway_operations/instalment_calculator/configuration_request.md
Example response XML for the CONFIGURATION_REQUEST operation. It includes the head section with processing status and the content section with installment configuration result parameters.
```xml
MyTestsystem
CONFIGURATION_REQUEST
CONFIGURATION_SETTINGS
2016-01-11T15:50:09.000
Successfully
Calculation configuration read successful
Calculation configuration processed
0
0
0
0
3
3
0
0
3
2
2
30
0
10
0
0
28
```
--------------------------------
### Example 1: All fields filled in (CSV)
Source: https://docs.ratepay.com/docs/reporting/regular_customers/technical_description.md
CSV example with all fields populated, including order, delivery, payment dates, amounts, and flags. The header row defines the required columns. This example corresponds to the sample rows described in the table above.
```csv
FileRownumber;InterfaceVersion;ShopsOrder_ID;ShopsCustomer_ID;OrderDate;OrderTime;DeliveryDate;PaymentDate;PaymentMethod;Currency;OrderAmount;PaymentAmount;CancellationAmount;ReturnAmount;LoginFlag;NewAddressFlag;ReturningPeriod
1;1;"123456";"sci1234";"2017-12-01";"09:17:24";"2017-12-03";"2017-12-17";"INV1";"EUR";110.00; 90.00;0.00;0.00;1;0;14
2;1;"123467";"sci2345";"2018-01-03";"16:23:27";"2018-01-06";"2018-01-25";"INV2";"EUR";200.00; 100.00;0.00;0.00;1;0;14
3;1;"123457";"sci2345";"2018-01-03";"16:23:27";"2018-01-10";"2018-02-01";"INV2";"EUR";200.00; 75.00;0.00;0.00;1;0;14
4;1;"123457";"sci2345";"2018-01-03";"16:23:27";"2018-01-15";"2018-02-08";"INV2";"EUR";200.00; 25.00;0.00;0.00;1;0;14
5;1;"123896";"sci1234";"2018-04-04";"11:27:05";"2018-04-09";"2018-04-06";"PP1";"EUR";150.00; 150.00;0.00;20.00;1;1;14
6;1;"123411";"sci3231";"2018-11-03";"08:03:43";"2018-11-05";"2018-11-08";"DD1";"EUR";80.00; 50.00;30.00;0.00;0;0;14
7;1;"123411";"sci2273";"2018-07-31";"20:12:59";"2018-08-01";"9999-12-31";"INV1";"EUR";120.00; 0.00;-5.00;0.00;1;0;14
```
--------------------------------
### Install Ratepay Payment Plugin via Composer
Source: https://docs.ratepay.com/docs/developer/shop_modules/oxid/get_started/setup/installation_under_oxid_6/installation_via_composer.md
Run this command in the shop installation directory to install the Ratepay Payment Plugin. Requires SSH access to the server where the shop and its vendor folder are located.
```php
composer require ratepay/oxid6-payment
```
--------------------------------
### Example of correspondence_settings.payment_method_specific array
Source: https://docs.ratepay.com/docs/developer/psps_and_marketplaces/interfaces/merchant_registration_api/operations/other/retrieveshop
Example of the payment_method_specific array, showing configuration for two payment methods. The first entry uses OPEN_INVOICE with BANK_TRANSFER and includes deposit_confirmation; the second uses INSTALMENT with DIRECT_DEBIT and omits deposit_confirmation. Note that dunning_1, dunning_2, and dunning_3 in the second entry omit skip_sending, which defaults to false.
```json
[{"payment_method":{"payment_option":"OPEN_INVOICE","transfer_type":"BANK_TRANSFER"},"invoice":{"skip_sending":false,"shop_branding":true},"deposit_confirmation":{"skip_sending":false,"shop_branding":true},"dunning_1":{"skip_sending":false,"shop_branding":true},"dunning_2":{"skip_sending":false,"shop_branding":true},"dunning_3":{"skip_sending":false,"shop_branding":true}},{"payment_method":{"payment_option":"INSTALMENT","transfer_type":"DIRECT_DEBIT"},"invoice":{"skip_sending":true,"shop_branding":true},"dunning_1":{"shop_branding":true},"dunning_2":{"shop_branding":true},"dunning_3":{"shop_branding":true}}]
```
--------------------------------
### Install CocoaPods and cocoapods-art plugin
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Install CocoaPods and the cocoapods-art plugin via the terminal. Requires sudo privileges.
```bash
sudo gem install cocoapods
sudo gem install cocoapods-art
```
--------------------------------
### CONFIGURATION_REQUEST XML Example
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/the_ratepay_gateway_operations/instalment_calculator/configuration_request.md
Example request XML for the CONFIGURATION_REQUEST operation. It includes the head section with system-id, operation, and credential. The request has no content section.
```xml
MyTestsystem
CONFIGURATION_REQUEST
INTEGRATION_TE_DACH
4c0a11923fa3433fb168f9c7176429e9
```
--------------------------------
### Apply configuration and install Ratepay plugin
Source: https://docs.ratepay.com/docs/developer/shop_modules/oxid/get_started/update/update_oxid_6/update_process_with_composer/version_6.2.0-6.2.2.md
First command applies the updated configuration after removing Ratepay entries from yaml-files. Second command installs the Ratepay Payment Plugin via Composer.
```php
vendor/bin/oe-console oe:module:apply-configuration
```
```php
composer require ratepay/oxid6-payment
```
--------------------------------
### Install module configuration
Source: https://docs.ratepay.com/docs/developer/shop_modules/oxid/get_started/setup/installation_under_oxid_6/manual_installation_via_zip/version_6.2.x.md
Run this command to create the configuration files for the Ratepay extension.
```php
vendor/bin/oe-console oe:module:install-configuration source/modules/pi/ratepay
```
--------------------------------
### Session Record COMPLETED Example
Source: https://docs.ratepay.com/_bundle/apis/hpp/openapi/hpp_api.yaml?download=
Example response for a session record with status COMPLETED. Shows the session ID, partner transaction ID, shop buyer ID, and timestamps.
```json
{
"session_id": "46c13096-2615-4894-96af-48b55dcd5f26",
"partner_transaction_id": "789",
"shop_buyer_id": "MyShopBuyerID2",
"session_status": "COMPLETED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
--------------------------------
### head Request Example
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/api_explorer/head.md
XML example of the head element in a RatePAY gateway request, including system-id, transaction-id, operation, credential, external, and meta fields.
```APIDOC
## head Request Example
### Description
XML example of the head element in a RatePAY gateway request.
### XML Example
```xml
myshop
A12B3CD23J3KU324DADK
PAYMENT_CHANGE
account123
6cddf6b3a0e03412b0f3c0615616025a
O-1234-HDZ
CUSTOMER4711
12345
678910
1.8
```
### Fields
- **system-id** (string) - Required - Identifier of the shop system.
- **transaction-id** (string) - Required - Unique transaction identifier.
- **operation** (string) - Required - Operation type, with optional subtype attribute (e.g., cancellation).
- **credential** (object) - Required - Contains profile-id and securitycode for authentication.
- **external** (object) - Optional - Contains order-id, merchant-consumer-id, and tracking information.
- **meta** (object) - Optional - Contains system information and API version.
```
--------------------------------
### PAYMENT_REQUEST XML Response Example
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/the_ratepay_gateway_operations/place_order/payment_request.md
An example of a successful PAYMENT_REQUEST response containing the head and content sections with customer and payment data.
```xml
MyTestsystem
xx-xxxxxxxxxxxxxx
PAYMENT_REQUEST
PAYMENT_PERMISSION
12345
2016-01-06T16:30:20.000
Successfully
Request successful
Transaction result pending
Nicht-Versenden-Straße 1
2
12345
Testhausen
DE
230.00
3
76.67
76.66
0
2
DIRECT-DEBIT
DG0479414D0
```
--------------------------------
### Session status example values (CREATED, IN_PROGRESS, COMPLETED, ERROR, EXPIRED, CANCELED, FRAUD_CANCELLATION_REQUESTED)
Source: https://docs.ratepay.com/_bundle/apis/hpp/openapi/hpp_api.yaml?download=
Example JSON responses for each session status value (CREATED, IN_PROGRESS, COMPLETED, ERROR, EXPIRED, CANCELED, FRAUD_CANCELLATION_REQUESTED). The ERROR example includes decline_reasons with invalid_fields details. These are sample payloads for the session status field.
```json
{
"session_id": "53998820-2dcf-4187-b1d0-f0a78cb06d39",
"partner_transaction_id": "123",
"shop_buyer_id": "MyShopBuyerID",
"session_status": "CREATED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:41:36.325775Z"
}
```
```json
{
"session_id": "298a92fc-0a15-455c-b279-948a5ff1c75b",
"partner_transaction_id": "456",
"shop_buyer_id": "MyShopBuyerID1",
"session_status": "IN_PROGRESS",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "46c13096-2615-4894-96af-48b55dcd5f26",
"transaction_id": "6Z54V9SXRCRSKDXDGKZW",
"partner_transaction_id": "789",
"shop_buyer_id": "MyShopBuyerID2",
"session_status": "COMPLETED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:41:36.325775Z"
}
```
```json
{
"session_id": "7e0e21cc-2dee-46fc-b8cc-d6705efe3b83",
"partner_transaction_id": "0123",
"shop_buyer_id": "MyShopBuyerID3",
"session_status": "ERROR",
"decline_reasons": {
"category": "SYNTAX",
"reasons": [
"INVALID_FIELDS"
],
"invalid_fields": [
{
"json_path": "order_data.buyer.billing_address.street_number",
"message": "size must be between 1 and 30"
},
{
"json_path": "order_data.buyer.billing_address.street_number",
"message": "must be null or not blank"
}
]
},
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "a1728eee-4a43-4627-b661-5d9c80a9ac2",
"partner_transaction_id": "0456",
"shop_buyer_id": "MyShopBuyerID4",
"session_status": "EXPIRED",
"decline_reasons": {
"category": "Expired_Session",
"reasons": []
},
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "7c3814e4-e8f5-4aae-bfc1-5a833588ca18",
"partner_transaction_id": "0789",
"shop_buyer_id": "MyShopBuyerID5",
"session_status": "CANCELED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "cbc710ef-18d7-4454-8770-b14e315554ca",
"partner_transaction_id": "00123",
"shop_buyer_id": "MyShopBuyerID6",
"session_status": "FRAUD_CANCELLATION_REQUESTED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
--------------------------------
### SessionCreatedResponseDto example for successful session creation
Source: https://docs.ratepay.com/_bundle/apis/hpp/openapi/hpp_api.json?download=
Example response for a successful session creation (HTTP 201). Contains a session_id and a landing_page URL with a retrieval key for redirecting the customer to the Ratepay payment page.
```json
{
"session_id": "6919e03b-08b7-4bcd-b8c4-7a6a225d3a20",
"landing_page": "https://payment.ratepay.com/session/6919e03b-08b7-4bcd-b8c4-7a6a225d3a20?retrievalKey=e_5p43MMTCitRzQu8a7Wcw&v=ratepay&t=6919e03b08b74bcdb8c47a6a225d3a20"
}
```
--------------------------------
### Session records list response example
Source: https://docs.ratepay.com/_bundle/apis/hpp/openapi/hpp_api.yaml?download=
Example response for a successful session records retrieval (HTTP 200). Contains an array of session records with fields such as session_id, partner_transaction_id, shop_buyer_id, session_status, created_date, updated_date, and optionally decline_reasons.
```json
[
{
"session_id": "53998820-2dcf-4187-b1d0-f0a78cb06d39",
"partner_transaction_id": "123",
"shop_buyer_id": "MyShopBuyerID",
"session_status": "CREATED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:41:36.325775Z"
},
{
"session_id": "298a92fc-0a15-455c-b279-948a5ff1c75b",
"partner_transaction_id": "456",
"shop_buyer_id": "MyShopBuyerID1",
"session_status": "IN_PROGRESS",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:41:36.325775Z"
},
{
"session_id": "46c13096-2615-4894-96af-48b55dcd5f26",
"transaction_id": "6Z54V9SXRCRSKDXDGKZW",
"partner_transaction_id": "789",
"shop_buyer_id": "MyShopBuyerID2",
"session_status": "COMPLETED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:41:36.325775Z"
},
{
"session_id": "7e0e21cc-2dee-46fc-b8cc-d6705efe3b83",
"partner_transaction_id": "0123",
"shop_buyer_id": "MyShopBuyerID3",
"session_status": "ERROR",
"decline_reasons": {
"category": "SYNTAX",
"reasons": [
{
"code": "...",
"message": "..."
}
]
}
}
]
```
--------------------------------
### Session status response examples (ERROR, EXPIRED, FRAUD_CANCELLATION_REQUESTED, OTP_PENDING)
Source: https://docs.ratepay.com/_bundle/apis/hpp/openapi/hpp_api.yaml?download=
Example response bodies for the session statuses ERROR, EXPIRED, FRAUD_CANCELLATION_REQUESTED, and OTP_PENDING. Each shows the session_id, partner_transaction_id, shop_buyer_id, session_status, and timestamps; ERROR includes decline_reasons with invalid_fields details.
```json
{
"session_id": "7e0e21cc-2dee-46fc-b8cc-d6705efe3b83",
"partner_transaction_id": "0123",
"shop_buyer_id": "MyShopBuyerID3",
"session_status": "ERROR",
"decline_reasons": {
"category": "SYNTAX",
"reasons": [
"INVALID_FIELDS"
],
"invalid_fields": [
{
"json_path": "order_data.buyer.billing_address.street_number",
"message": "size must be between 1 and 30"
},
{
"json_path": "order_data.buyer.billing_address.street_number",
"message": "must be null or not blank"
}
]
},
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "a1728eee-4a43-4627-b661-5d9dc80a9ac2",
"partner_transaction_id": "0456",
"shop_buyer_id": "MyShopBuyerID4",
"session_status": "EXPIRED",
"decline_reasons": {
"category": "Expired_Session",
"reasons": []
},
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "cbc710ef-18d7-4454-8770-b14e315554ca",
"partner_transaction_id": "00123",
"shop_buyer_id": "MyShopBuyerID6",
"session_status": "FRAUD_CANCELLATION_REQUESTED",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
```json
{
"session_id": "9d769c3a-81cd-4baa-8214-6f0ebc806014",
"partner_transaction_id": "00456",
"shop_buyer_id": "MyShopBuyerID7",
"session_status": "OTP_PENDING",
"created_date": "2026-06-05T15:41:36.325775Z",
"updated_date": "2026-06-05T15:42:36.325775Z"
}
```
--------------------------------
### Project directory listing after Pod init
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Example output of listing the project directory after running 'Pod init'. Shows the expected files and folders.
```bash
$ ls –ahl
total 24
drwxr-xr-x 6 user staff 204B Jul 28 13:06 .
drwxr-xr-x 6 user staff 204B Jul 28 13:05 ..
-rw-r--r--@ 1 user staff 6.0K Jul 28 13:06 .DS_Store
drwxr-xr-x 7 user staff 238B Jul 28 13:05 New Application
drwxr-xr-x 5 user staff 170B Jul 28 13:05 New Application.xcodeproj
-rw-r--r-- 1 user staff 269B Jul 28 13:06 Podfile
```
--------------------------------
### CALCULATION_REQUEST XML Request
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/the_ratepay_gateway_operations/instalment_calculator/calculation_request.md
An example of a calculation request by time, specifying the amount and the number of months for the installment plan.
```xml
MyTestsystem
CALCULATION_REQUEST
INTEGRATION_TE_DACH
4c0a11923fa3433fb168f9c7176429e9
200.00
3
```
--------------------------------
### Create MainApplication.java
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/android.md
Example of a main application class that extends Application. This is needed if you don't already have one.
```java
MainApplication.java
public class MainApplication extends Application
{
@Override public void onCreate()
{
super.onCreate();
}
}
```
--------------------------------
### PAYMENT_REQUEST XML structure
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/how_to_integrate_ratepay/pay_in_3.md
A complete example of the PAYMENT_REQUEST XML payload for a Pay in 3 transaction, including customer, basket, and installment details.
```xml
MyTestsystem
xx-xxxxxxxxxxxxxx
PAYMENT_REQUEST
INTEGRATION_TE_DACH
4c0a11923fa3433fb168f9c7176429e9
O-1234-HDZ
12345
xxxxxxxxxxxxxxxxxxxxxxxx
Max
Mustermann
M
1982-10-31
127.0.0.1
test@test.de
030123456
Nicht-Versenden-Strasse
1
12345
Testhausen
DE
Strasse der Lieferadresse
2
54321
Testhausen
DE
Max Mustermann
DE44100500001654698497
BELADEBEXXX
DE
yes
- Example Product
Versandkosten
200.00
3
66.67
66.66
0
2
DIRECT-DEBIT
```
--------------------------------
### CALCULATION_REQUEST XML Response
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/the_ratepay_gateway_operations/instalment_calculator/calculation_request.md
An example of a successful calculation response containing the installment plan details such as total amount, interest, and rate breakdown.
```xml
MyTestsystem
CALCULATION_REQUEST
INSTALLMENT_PLAN
2016-03-29T13:37:08.000
Successfully
Calculation reason: FULFILLED_CONDITION: The payment plan fulfilled the conditions.
Calculation successful
200
200
0
0
0
0
0
3
66.67
66.66
2
```
--------------------------------
### Apply module configuration
Source: https://docs.ratepay.com/docs/developer/shop_modules/oxid/get_started/setup/installation_under_oxid_6/manual_installation_via_zip/version_6.2.x.md
Run this command to apply the recently created configuration.
```php
vendor/bin/oe-console oe:module:apply-configuration
```
--------------------------------
### Create global ClientSecurityModule reference
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Create a global reference to the ClientSecurityModule.
```bash
var module : ClientSecurityModule?
```
--------------------------------
### Calculate Pay in 3 installments in JavaScript
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/how_to_integrate_ratepay/pay_in_3.md
This function calculates the installment schedule for a Pay in 3 product. It handles rounding remainders by assigning them to the final installment and determines the first due date based on the shipment date.
```javascript
function calculatePayIn3(amount, shipmentDate) {
// --- Configuration: Pay in 3 is a 0% interest, 0-fee product ---
const NUMBER_OF_INSTALLMENTS = 3;
const DURATION_UNIT = "months";
const INTEREST_RATE = 0;
const INTEREST_AMOUNT = 0;
const FEES_AMOUNT = 0;
const HAS_INTEREST = false;
const HAS_FEES = false;
// --- Calculate installment amounts ---
// Split evenly; any rounding remainder goes to the final installment
const regularAmount = Math.round((amount / NUMBER_OF_INSTALLMENTS) * 100) / 100;
const finalAmount = Math.round((amount - regularAmount * (NUMBER_OF_INSTALLMENTS - 1)) * 100) / 100;
// --- Determine the first due date ---
// First instalment is due on the 2nd of the month following shipment,
// provided there are at least 28 days between shipment and that date.
// Otherwise, it is pushed to the 2nd of the subsequent month.
function getFirstDueDate(shipment) {
let next2nd = new Date(Date.UTC(shipment.getUTCFullYear(), shipment.getUTCMonth() + 1, 2));
const shipmentUTC = Date.UTC(shipment.getUTCFullYear(), shipment.getUTCMonth(), shipment.getUTCDate());
const next2ndUTC = Date.UTC(next2nd.getUTCFullYear(), next2nd.getUTCMonth(), next2nd.getUTCDate());
const diffDays = Math.floor((next2ndUTC - shipmentUTC) / (1000 * 60 * 60 * 24));
if (diffDays >= 28) return next2nd;
return new Date(Date.UTC(shipment.getUTCFullYear(), shipment.getUTCMonth() + 2, 2));
}
// Parse shipmentDate string (YYYY-MM-DD) or default to today, using UTC for consistency
let shipment;
if (shipmentDate) {
const parts = shipmentDate.split("-");
shipment = new Date(Date.UTC(+parts[0], +parts[1] - 1, +parts[2]));
} else {
const today = new Date();
shipment = new Date(Date.UTC(today.getFullYear(), today.getMonth(), today.getDate()));
}
const firstDue = getFirstDueDate(shipment);
// --- Build the installment schedule ---
const schedule = [];
let remaining = amount;
for (let i = 1; i <= NUMBER_OF_INSTALLMENTS; i++) {
const dueDate = new Date(Date.UTC(firstDue.getUTCFullYear(), firstDue.getUTCMonth() + (i - 1), 2));
const payment = i < NUMBER_OF_INSTALLMENTS ? regularAmount : finalAmount;
remaining = Math.round((remaining - payment) * 100) / 100;
schedule.push({
installmentNumber: i,
estimatedDueDate:
dueDate.getUTCFullYear() + "-" +
String(dueDate.getUTCMonth() + 1).padStart(2, "0") + "-" +
String(dueDate.getUTCDate()).padStart(2, "0"),
paymentAmount: payment,
principalAmount: payment,
interestAmount: INTEREST_AMOUNT,
feesAmount: FEES_AMOUNT,
remainingPrincipalBalanceAmount: remaining,
});
}
// --- Return the complete plan object ---
return {
planMetadata: { hasInterest: HAS_INTEREST, hasFees: HAS_FEES },
repaymentPlan: {
numberOfInstallments: NUMBER_OF_INSTALLMENTS,
durationOfInstallments: DURATION_UNIT,
regularInstallmentAmount: regularAmount,
finalInstallmentAmount: finalAmount,
},
creditTerms: {
totalPayableAmount: amount,
totalCostOfCreditAmount: INTEREST_AMOUNT + FEES_AMOUNT,
totalInterestAmount: INTEREST_AMOUNT,
totalFeesAmount: FEES_AMOUNT,
nominalInterestRatePercentage: INTEREST_RATE,
annualPercentageRate: INTEREST_RATE,
},
fees: { serviceFeeAmount: FEES_AMOUNT },
installmentSchedule: schedule,
};
}
```
--------------------------------
### Initialize Podfile
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Initialize a Podfile in the project directory. This is the second step after creating a new Xcode project.
```bash
Pod init
```
--------------------------------
### Example of shop_branding boolean value
Source: https://docs.ratepay.com/docs/developer/psps_and_marketplaces/interfaces/merchant_registration_api/operations/other/retrieveshop
Example value for the shop_branding boolean field. The default value is true.
```json
true
```
--------------------------------
### Example 2: Only mandatory fields filled in (CSV)
Source: https://docs.ratepay.com/docs/reporting/regular_customers/technical_description.md
CSV example with only mandatory fields filled; optional fields are left empty. The header row is the same as Example 1. Note that the last row uses curly quotes for some values.
```csv
FileRownumber;InterfaceVersion;ShopsOrder_ID;ShopsCustomer_ID;OrderDate;OrderTime;DeliveryDate;PaymentDate;PaymentMethod;Currency;OrderAmount;PaymentAmount;CancellationAmount;ReturnAmount;LoginFlag;NewAddressFlag;ReturningPeriod
1;1;"123456";"sci1234";"2017-12-01";;"2017-12-03";"2017-12-17";"INV1";"EUR";;90.00;;;;;
2;1;"123467";"sci2345";"2018-01-03";;"2018-01-06";"2018-01-25";"INV2";"EUR";;100.00;;;;;
3;1;"123457";"sci2345";"2018-01-03";;"2018-01-10";"2018-02-01";"INV2";"EUR";;75.00;;;;;
4;1;"123457";"sci2345";"2018-01-03";;"2018-01-15";"2018-02-08";"INV2";"EUR";;25.00;;;;;
5;1;"123896";"sci1234";"2018-04-04";;"2018-04-09";"2018-04-06";"PP1";"EUR";;150.00;;;;;
6;1;"123411";"sci3231";"2018-11-03";;"2018-11-05";"2018-11-08";"DD1";"EUR";;50.00;;;;;
7;1;“123411“;“sci2273“;“2018-07-31“;;“2018-08-01“;“9999-12-31“;“INV1“;“EUR“;;0.00;;;;;
```
--------------------------------
### Open Xcode workspace
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Open the app's .xcworkspace file to launch Xcode after installing the library.
```bash
open "New Application.xcworkspace"
```
--------------------------------
### SessionRequestDto example for creating a session
Source: https://docs.ratepay.com/_bundle/apis/hpp/openapi/hpp_api.json?download=
Example request body for the session creation endpoint. Contains order data with partner transaction ID, buyer billing and contact details, delivery address, shop baskets with items and special items, VAT breakdown, payment method (OPEN_INVOICE with BANK_TRANSFER), and URL data for success, failure, cancel, and webhook callbacks.
```json
{
"order_data": {
"partner_transaction_id": "1234567",
"buyer": {
"billing_address": {
"city": "Berlin",
"country_code": "DE",
"street": "Schönhauser Allee",
"street_addition": "Seitenflügel, 2. HH",
"street_number": "84",
"zip_code": "10439"
},
"contact": {
"email": "heinz.steeger@example.org",
"phone": "+49 170 1234567"
},
"person": {
"title": "Dr.",
"first_name": "Heinz",
"last_name": "Steeger",
"date_of_birth": "1971-05-19"
}
},
"currency": "EUR",
"delivery": {
"full_name": "Max Mustermann",
"address": {
"city": "Berlin",
"country_code": "DE",
"street": "Schönhauser Allee",
"street_addition": "Seitenflügel, 2. HH",
"street_number": "84",
"zip_code": "10439"
}
},
"shop_baskets": [
{
"partner_shop_id": "demo-shop-1",
"shop_transaction_id": "sale_order_35",
"gross_amount": 43.8,
"items": [
{
"article_number": "kitchen-utils-1",
"category": "household",
"description": "fruit knife with curved blade, 8 cm",
"gross_total_price": 33.8,
"gross_unit_discount": -1.55,
"gross_unit_price": 18.45,
"name": "fruit knife",
"net_total_price": 28.4,
"net_unit_discount": -1.3,
"net_unit_price": 15.5,
"quantity": 2,
"tax_rate": 19,
"unit": "piece"
}
],
"special_items": [
{
"article_number": "Shipping",
"category": "shipping",
"description": "Shipping",
"gross_total_price": 10,
"gross_unit_price": 10,
"name": "Shipping",
"net_total_price": 8.4,
"net_unit_price": 8.4,
"quantity": 1,
"tax_rate": 19,
"unit": "piece"
}
],
"vats": [
{
"tax_rate": 19.0,
"net_amount": 21.01,
"tax_amount": 3.99
}
]
}
],
"payment_method": {
"payment_option":"OPEN_INVOICE",
"transfer_type":"BANK_TRANSFER"
}
},
"url_data": {
"success_url": "https://localhost/success?storeTransactionId=123456",
"failure_url": "https://localhost/failure?storeTransactionId=123456",
"cancel_url": "https://localhost/cancel?storeTransactionId=123456",
"webhook_url": "https://localhost/webhook?storeTransactionId=123456"
}
}
```
--------------------------------
### head Response Example
Source: https://docs.ratepay.com/docs/developer/api_integration/payment_1.8/payment_api_documentation/api_explorer/head.md
XML example of the head element in a RatePAY gateway response, including processing status, reason, and result codes.
```APIDOC
## head Response Example
### Description
XML example of the head element in a RatePAY gateway response.
### XML Example
```xml
myshop
A12B3CD23J3KU324DADK
PAYMENT_REQUEST
PAYMENT_PERMISSION
O-1234-HDZ
CUSTOMER4711
neutral
2012-04-30T12:27:39.234
Successfully
Request successful
Transaction result pending
```
### Fields
- **system-id** (string) - Required - Identifier of the shop system.
- **transaction-id** (string) - Required - Unique transaction identifier.
- **operation** (string) - Required - Operation type.
- **response-type** (string) - Required - Type of response (e.g., PAYMENT_PERMISSION).
- **external** (object) - Optional - Contains order-id, merchant-consumer-id, and merchant-consumer-classification.
- **processing** (object) - Required - Contains timestamp, status, reason, and result codes.
```
--------------------------------
### Initialize ClientSecurityModule
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/ios.md
Initialize the ClientSecurityModule inside the ViewController class. The location parameter is optional.
```bash
module = ClientSecurityModule(snippetId: String, requestToken: String, location: String? = nil)
```
--------------------------------
### Initialize ClientSecurityModule in MainApplication
Source: https://docs.ratepay.com/docs/developer/device_fingerprinting/android.md
Add the import and initialize call in your main application class. Replace with your snippet ID.
```java
import com.riskident.device.ClientSecurityModule; // add this line
public class MainApplication extends Application
{
@Override public void onCreate()
{
super.onCreate();
ClientSecurityModule.initialize(""); // add this line
}
}
```