Для початку вам потрібно зареєструвати Apple Merchant ID. Розпочніть з переходу на сторінку з інструкцією щодо реєстрації ідентифікатора торговця на вебсайті Apple Developer.
Заповніть форму з описом та ідентифікатором. Ваш опис призначений для ваших власних потреб і може бути змінений у майбутньому (ми рекомендуємо використовувати назву вашого мобільного додатка). Ідентифікатор має бути унікальним (у всіх додатках Apple, а не тільки у вашому) і не може бути змінений пізніше (хоча ви завжди можете створити інший). Ми рекомендуємо використовувати merchant.aliance.{{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.aliance.{{Your_app_name}}.):
Вам необхідно підключити сертифікат у ваш застосунок для шифрування даних платежів. Для цього виконайте 3 кроки:
2.1 Надайте необхідну для формування CSR-файлу інформацію службі підтримки банку Альянс. Для цього заповніть, будь ласка, там, де стоїть знак “?”:
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 (запит на підпис сертифіката) від банку Альянс:
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 Скачайте і передайте отримані сертифікати назад у банк Альянс для налаштування вашого мерчанта.
Останній крок цього процесу – додати у ваш додаток функцію Apple Pay. У Xcode відкрийте налаштування свого проєкту, виберіть вкладку «Capabilities» і ввімкніть перемикач Apple Pay. У цей момент вам може бути запропоновано увійти у свій обліковий запис розробника. Встановіть прапорець поруч з ідентифікатором мерчанта, який ви створили раніше, і все готово!
3.2 В інтеграції SDK вкажіть merchant_id, отриманий під час реєстрації в мерчант-порталі в конструкторі
self.api = [PSCloudipspApi apiWithMerchant:1396424 andCloudipspView:self.webView];
посилання на рядок у github:
3.4 В інтеграції SDK вкажіть merchant_id, отриманий під час реєстрації в мерчант-порталі в конструкторі
this.api = new Cloudipsp(<ваш merchant_id>, this.cloudipspWebView);
посилання на рядок у github:
Для прямої інтеграції з Apple Pay API, дотримуйтесь інструкції Apple Pay.
openssl genrsa -out merchant.key 2048
Apple Pay Merchant Identity Certificate Private Key:
openssl ecparam -out apple_pay.key -name prime256v1 -genkey
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
openssl pkcs12 -export -out merchant.p12 -inkey merchant.key -in merchant.pem
Приклад PHP 7.2
<?php $ch = curl_init(); $merchantIdentifier = 'merchant.aliance.{{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);
{ "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" } } }