API FONDYВерсія 1.0

Крок 1: Реєстрація Apple Merchant ID

Для початку вам потрібно зареєструвати Apple Merchant ID. Розпочніть з переходу на сторінку з інструкцією щодо реєстрації ідентифікатора торговця на вебсайті Apple Developer.

Заповніть форму з описом та ідентифікатором. Ваш опис призначений для ваших власних потреб і може бути змінений у майбутньому (ми рекомендуємо використовувати назву вашого мобільного додатка). Ідентифікатор має бути унікальним (у всіх додатках Apple, а не тільки у вашому) і не може бути змінений пізніше (хоча ви завжди можете створити інший). Ми рекомендуємо використовувати merchant.{{Your_app_name}}. Збережіть це значення для подальшого використання при розробці застосунку.

Детальна інструкція:

1.1 Перейдіть у Dashboard вашого акаунта в Apple Developer https://developer.apple.com/account/#

1.2 Увійдіть у меню Certificates, Identifiers & Profiles

 

 

1.3 В меню Identifiers натисніть + для створення Merchant ID: https://developer.apple.com/account/resources/identifiers/add/bundleId

 

 

1.4 Заповніть Description (на ваш вибір) і Identifier (merchant.{{Your_app_name}}.):

 

Крок 2: Створіть новий Apple Pay сертифікат

Вам необхідно підключити сертифікат у ваш застосунок для шифрування даних платежів. Для цього виконайте 3 кроки:

2.1 Надайте необхідну для формування CSR-файлу інформацію службі підтримки FONDY. Для цього заповніть, будь ласка, там, де стоїть знак “?”:

Country Name (2 letter code) [AU]: ?
State or Province Name (full name) [Some-State]: ?
Locality Name (eg, city) []: ?
Organization Name (eg, company) [Internet Widgits Pty Ltd]: ?
Organizational Unit Name (eg, section) []: ?
Common Name (e.g. server FQDN or YOUR name) []: ?
Email Address []: ?

2.2 Отримайте 2 файли CSR (запит на підпис сертифіката) від FONDY:

Apple Pay Payment Processing Certificate Request

Apple Pay Merchant Identity Certificate Request

2.3 Використовуйте ці CSR-файли для генерації сертифікатів, продовжуючи крок 1.4

блок Apple Pay Payment Processing Certificate:


блок Apple Pay Merchant Identity Certificate :

2.4 Скачайте і передайте отримані сертифікати назад у FONDY для налаштування вашого мерчанта.

 

Інтеграція в Xcode

Останній крок цього процесу – додати у ваш додаток функцію Apple Pay. У Xcode відкрийте налаштування свого проєкту, виберіть вкладку «Capabilities» і ввімкніть перемикач Apple Pay. У цей момент вам може бути запропоновано увійти у свій обліковий запис розробника. Встановіть прапорець поруч з ідентифікатором мерчанта, який ви створили раніше, і все готово!

для iOS:
Інтегруйте SDK, вказавши в ньому згенерований Merchant ID у 2-х місцях
3.1 В XCode -> Target -> Capabilities -> ApplePay -> Merchant IDS


3.2 В інтеграції SDK вкажіть merchant_id, отриманий під час реєстрації в мерчант-порталі FONDY в конструкторі

self.api = [PSCloudipspApi apiWithMerchant:1396424 andCloudipspView:self.webView];

посилання на рядок у github:

https://github.com/cloudipsp/ios-sdk/blob/f987cda0f4a7461cbe23b9b5a93615adb3244b14/Example/Cloudipsp/CDStartViewController.m#L24

замість тестового 1396424
для ReactNative:
3.3 Інтегруйте Apple Pay у ваш додаток, вказавши Apple Pay Merchant в XCode -> Target -> Capabilities -> Apple Pay -> Merchant IDs

3.4 В інтеграції SDK вкажіть merchant_id, отриманий під час реєстрації в мерчант-порталі FONDY в конструкторі

 

this.api = new Cloudipsp(<ваш FONDY merchant_id>, this.cloudipspWebView);

посилання на рядок у github:

https://github.com/cloudipsp/react-native-cloudipsp/blob/273bcf87d20b6650f96fbd5d424c3c224bc788d3/Example/index.js#L39

Пряма інтеграція Apple Pay

Для прямої інтеграції з Apple Pay API, дотримуйтесь інструкції Apple Pay.

  1. Сформуйте приватні ключі
    Apple Pay Payment Processing Certificate Private Key:

    openssl genrsa -out merchant.key 2048  

    Apple Pay Merchant Identity Certificate Private Key:

    openssl ecparam -out apple_pay.key -name prime256v1 -genkey 
  2. Сформуйте запити на сертифікати
    Apple Pay Payment Processing Certificate Request:

    openssl req -new -key merchant.key -out merchant.csr

    Apple Pay Merchant Identity Certificate Request:

    openssl req -new -sha256 -key apple_pay.key -nodes -out apple_pay.csr
  3. Завантажте CSR-файли в Apple Developer акаунт і скачайте сертифікати (див. крок 2.3 )
  4. Відобразіть на клієнті кнопку Apple Pay, перевіривши попередньо підтримку платежів на пристрої через метод canMakePayments
    Для роботи з Apple Pay на стороні клієнта можна скористатися
    Apple Pay JS SDK для web
    PassKit (Apple Pay and Wallet) для iOS
  5. Використовуйте ApplePayPaymentRequest щоб створити ApplePaySession і викликати діалогове вікно з підтвердженням оплати на клієнті
    Під час показу форми спрацює подія onvalidatemerchant. У параметрі події onvalidatemerchant приходить поле validationURL. На цю адресу з бекенду потрібно надіслати дані, підписані сертифікатом Merchant Identity Certificate. Сертифікат потрібно попередньо конвертувати в PEM-формат:

    openssl pkcs12 -export -out merchant.p12 -inkey merchant.key -in merchant.pem

    Приклад PHP 7.2

    <?php
    
    $ch = curl_init();
    $merchantIdentifier = 'merchant.{{Your_app_name}}'; // Ваш ідентифікатор мерчанта Apple Pay з кроку 1.4
    $domainName = 'доменне ім’я'; // Доменне ім’я вашого сайту, з якого виконується оплата
    $displayName = 'опис вашого сервісу';
    
    $data = [
        'merchantIdentifier' => $merchantIdentifier,
        'domainName' => $domainName,
        'displayName' => $displayName
    ];
    curl_setopt($ch, CURLOPT_URL, $validationURL);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_CERTINFO, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
    curl_setopt($ch, CURLOPT_SSLCERT, __DIR__ . '/merchant.pem');
    curl_setopt($ch, CURLOPT_SSLKEY, __DIR__ . '/merchant.key');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $res = curl_exec($ch);
    
    curl_close($ch);
    echo json_encode($res);
    
  6. Завершіть сесію на клієнті, повернувши отриманий JSON у метод completeMerchantValidation
  7. Отримайте критпограму платіжних даних від Apple Pay SDK на клієнті у відповідь на завершення сесії та надішліть отримані дані на бекенд
  8. Перевідправте криптограму на API endpoint FONDY https://pay.fondy.eu/api/3dsecure_step1/ у параметрі container (див. специфікації)
    дані в параметрі container мають бути у форматі BASE64 і мати таку структуру:

    {
      "token": {
        "paymentData": {
          "data": "1e3kqjVc...HYJkFFBevkjnAO1jjA9oZsg==",
          "signature": "MIAGCSq...AfMDB4b77L6sCICoUo9Lr+0mSvGrn5wKYvB19yOYEAuVwTcxickud0LmIAAAAAAAA",
          "header": {
            "transactionId": "6fb8a4ea40c8a30c2f8...7b80d9d92d060796018e",
            "ephemeralPublicKey": "MFkwEwYHKoZIz.....W56yaUW+kMjaDsvaRpVldv17/mDgP4cK8F0gXmvBaJ3SA==",
            "publicKeyHash": "Yx3yIurI+gR....xH82t/v9uId/8eKM+A="
          },
          "version": "EC_v1"
        },
        "transactionIdentifier": "6FB8A4EA40C8A30....81EFCC255E7B80D9D92D060796018E",
        "paymentMethod": {
          "network": "Visa",
          "type": "debit",
          "displayName": "Visa 1111"
        }
      }
    }
    


  9. Отримайте фінальну відповідь від FONDY з деталями платежу
  10. Відобразіть покупцеві результат оплати

Хочу приймати платежі з усього світу!