Общие сведения
Фреймворк AssistMobile позволяет разработать мобильное приложение интернет-магазина для проведения через АПК Ассист платежей банковской картой с мобильных устройств.
Пользователями фреймворка AssistMobile являются разработчики мобильного приложения интернет-магазина.
Настоящий документ содержит сведения по установке, настройке и использованию фреймворка AssistMobile, достаточные для его применения.
Системные требования
Для работы с AssistMobile необходимо использовать среду разработки iOS SDK версии не ниже 8.4.
Описание фреймворка AssistMobile
Фреймворк AssistMobile представляет собой файл AssistMobile.framework.
Для доступа к функционалу библиотеки нужно использовать объект класса AssistPay.
Класс содержит:
- инициализатор, принимающий поддерживающие протокол AssistPayDelegate объекты;
 - метод start, принимающий объект класса UIViewController и объект PayData с данными об оплате;
 - метод getResult, принимающий структуру с данными об оплате PayData.
 
Протокол AssistPayDelegate определяет метод payFinished, с помощью которого поддерживающий этот протокол объект будет получать результат оплаты. Метод payFinished будет вызван, если оплата завершена. Метод имеет следующие параметры:
- bill - номер транзакции в АПК Ассист в строковом формате;
 - status - статус платежа;
 - message - описание статуса.
 
Статус может иметь следующие значения:
Unknown - статус неизвестен – вероятно, произошла непредвиденная ошибка и не удалось получить статус оплаты, через некоторое время следует вызвать метод getResult и дождаться возвращения статуса; если ошибка повторяется, то необходимо связаться со службой поддержки Assist;
- InProgress - оплата находится в обработке, через некоторое время следует повторно вызвать метод getResult, для получения результата;
 - Delayed - платеж отложен, используется при включении функции отложенных платежей;
 - Approved - платеж завершен успешно;
 - PartialApproved - платеж завершен успешно на неполную сумму, используется при включении функции подтверждения платежа на неполную сумму;
 - PartialDelayed - платеж частично отложен, используется при включении специальной функции;
 - Canceled - платеж отменен;
 - PartialCanceled - платеж частично отменен;
 - Declined - оплата отклонена;
 - Timeout - оплата завершена по таймауту;
 - Repeated - в системе есть платеж с таким же номером заказа.
 
Метод start позволяет инициировать процесс оплаты, принимает параметры:
- UIViewController - контроллер вызывающего приложения;
 - PayData - данные оплаты.
 
Метод getResult позволяет получить результат оплаты из АПК Ассист. Принимает параметр PayData.
- PayData - объект этого класса содержит данные платежа.
 
Данные платежа задаются свойствами объекта:
Название  | Обязательное поле  | Тип  | Описание  | 
merchantId  | Да  | String  | Идентификатор предприятия в системе АПК Ассист  | 
customerId  | Да/нет  | String  | Идентификатор покупателя, используется при подключении OneClick  | 
orderNumber  | Да  | String  | Номер заказа  | 
language  | Нет  | Language  | Язык авторизационных страниц (RU, EN, BY или UK)  | 
languageStr  | Нет  | String  | Язык авторизационных страниц в строковом формате, используются значения из перечисления Language  | 
orderAmount  | Да  | String  | Сумма платежа в оригинальной валюте (например, 100.99).  | 
orderComment  | Нет  | String  | Комментарий  | 
orderCurrency  | Да/нет  | Currency  | Валюта (RUB, USD, EUR, BYR или UAH)  | 
orderCurrencyStr  | Нет  | String  | Валюта в строковом формате, используются значения из перечисления Currency  | 
lastname  | Нет  | String  | Фамилия покупателя  | 
firstname  | Нет  | String  | Имя покупателя  | 
middlename  | Нет  | String  | Отчество покупателя  | 
Нет  | String  | E-mail адрес покупателя  | |
address  | Нет  | String  | Адрес покупателя  | 
homePhone  | Нет  | String  | Домашний телефон покупателя  | 
workPhone  | Нет  | String  | Рабочий телефон покупателя  | 
mobilePhone  | Нет  | String  | Мобильный телефон покупателя  | 
fax  | Нет  | String  | Факс покупателя  | 
country  | Нет  | String  | Страна покупателя  | 
state  | Нет  | String  | Код региона покупателя  | 
city  | Нет  | String  | Город покупателя  | 
zip  | Нет  | String  | Индекс предприятия связи покупателя  | 
signature  | Да/нет  | String  | Подпись. Формируется строка, сшитая из следующих параметров заказа: MerchantId;OrderNumber;OrderAmount;OrderCurrency, разделенных точкой с запятой. На базе этой строки алгоритмом MD5 формируется дайджест. Дайджест подписывается закрытым RSA ключом мерчанта. Длина ключа - 1024. Полученная байтовая последовательность является подписью магазина. Подпись передается нам в виде строки BASE64.  | 
Порядок интеграции мобильного приложения интернет-магазина с фреймворком AssistMobile
Для интеграции мобильного приложения интернет-магазина с фреймворком AssistMobile необходимо выполнить следующие действия:
скачать актуальную версию AssistMobile.framework;
добавить фреймворк в разрабатываемый проект, перетащив фреймворк в Xcode в дерево проекта;
установить в свойствах проекта Build Settings -> Build Options -> Embedded Content Contains Swift Code значение «Yes»;
добавить AssistMobile.framework в свойствах General->Embedded Binaries;
добавить ключ NSLocationWhenInUseUsageDescription в файл Info.plist, в Information Property List, тип String, значение - строка "Позволить отправить данные геолокации в АПК Ассист".
Примеры реализации оплаты с помощью фреймворка AssistMobile
Пример кода Swift