### 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 } } ```