API FONDYВерсия 1.0

Шаг 1: Регистрация Apple Merchant ID

Для начала вам необходимо зарегистрировать Apple Merchant ID. Начните с перехода на страницу с инструкцией по регистрации идентификатора продавца на веб-сайте Apple Developer.

Заполните форму с описанием и идентификатором. Ваше описание предназначено для ваших собственных потребностей и может быть изменено в будущем (мы рекомендуем использовать название вашего мобильного приложения). Идентификатор должен быть уникальным (во всех приложениях Apple, а не только в вашем) и не может быть изменен позже (хотя вы всегда можете создать другое). Мы рекомендуем использовать merchant.fondy.eu.{{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.fondy.eu.{{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 указав в нем сгенерированный MerchantID в 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 интегрируйте ApplePay в ваше приложение указав ApplePayMerchant в XCode -> Target -> Capabilities -> ApplePay -> 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.fondy.eu.{{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. Отобразите покупателю результат оплаты

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