Прием платежей по банковским картам в приложениях на iOS
Вслед за разработанными ранее SDK для Windows Universal App (о чем мы уже рассказывали на Хабре) и node.js, в мае мы разработали и опубликовали SDK для iOS. О том, какие приложения на iOS могут принимать платежи через сторонний платежный сервис, зачем это нужно и как интегрировать платежный сервис в мобильное приложение, читайте под катом. А еще — вкусная свежая статистика по доле мобильных пользователей в платежном трафике PayOnline за последние 3 года. Только для жителей ХабраХабр!
Прежде чем переходить к детальному рассмотрению Payment SDK для iOS и обсуждению специфики требований к App Store, мы хотим поделиться с вами статистикой PayOnline по мобильным платежам за последние три года.
Взрыв мобильного трафика в 2013 — 2015Когда в начале 2010-х мы запускали продукт для приема платежей с мобильных устройств и из мобильных приложений Pay-Mobile, мы даже не подозревали, какой дикий рост покажет мобильный трафик уже в ближайшие несколько лет.Сегодня из каждого утюга несется история о начале эпохи мобильной коммерции, но получить адекватные, точные, а главное —локализованные на Россию статистические данные получается с трудом. Вводя в Google запрос «доля iOS в России», мы получаем множество приблизительных цифр, основанных на мировой статистике и показателях продаж устройств по отчетам крупнейших торговых сетей.
К счастью, мы ежедневно обрабатываем десятки тысяч платежей и имеем доступ к реальным показателям того, с чего же россияне платят в Интернете. Сегодня мы покажем вам данные с 2013 по 2015 год, за которые считанные проценты оплат с мобильных устройств превратились в пятую часть нашего платежного трафика.
В 2013 году мобильный трафик рос более чем в 2 раза быстрее «десктопного», а в 2014 — более чем в 6 раз. И, судя по всему, в ближайшие годы это движение не остановить. На диаграмме ниже представлены показатели мобильного трафика за последние 3 года с разделением по ключевым мобильных операционным системам.
Отметим, что эти цифры распределены по устройствам, с которых были успешно совершенны платежи через PayOnline. Чистый коммерческий трафик без примеси интернет-серферов и пользователей бесплатных приложений :)
Переходим к Payment SDK PayOnline для iOS Payment SDK для приложений iOS позволяет разработчикам легко и непринужденно интегрировать прием платежей по банковским картам в мобильное приложение. Зачем разработчику приложения Payment SDK можно прочитать в материале, который мы опубликовали в блоге в начале года.Что самое главное? Главное, что интегрировав прием платежей с помощью SDK для iOS, вы избежите WebView. Все элементы процесса оплаты встраиваются в мобильное приложение и кастомизируются под его дизайн.
Объясняя в двух словах: SDK позволяет избежать погружения в пучины интеграции с платежным шлюзом, реализации протокола безопасности 3-D Secure и других нецелевых расходов времени и сил. Но прежде чем переходить к вопросам интеграции, стоит разобраться в непростых правилах Apple по отношению к сторонним платежным сервисам в приложениях.
Какие приложения вообще могут принимать платежи в iOS приложениях не через App Store? Вопрос о том, можно ли вообще принимать платежи в iOS приложениях волнует умы разработчиков и владельцев не первый год, вызывая многочисленные дискуссии.Чтобы разобраться в этом вопросе, мы обратились к первоисточнику — «App Store Review Guidelines», главе 11 «Purchasing and currencies».
Читать первоисточник Purchasing and currencies11.1 Apps that unlock or enable additional features or functionality with mechanisms other than the App Store will be rejected11.2 Apps utilizing a system other than the In-App Purchase API (IAP) to purchase content, functionality, or services in an App will be rejected11.3 Apps using IAP to purchase physical goods or goods and services used outside of the App will be rejected11.4 Apps that use IAP to purchase credits or other currencies must consume those credits within the App11.5 Apps that use IAP to purchase credits or other currencies that expire will be rejected11.6 Content subscriptions using IAP must last a minimum of 7 days and be available to the user from all of their iOS devices11.7 Apps that use IAP to purchase items must assign the correct Purchasability type11.8 Apps that use IAP to purchase access to built-in capabilities provided by iOS, such as the camera or the gyroscope, will be rejected11.9 Apps containing content or services that expire after a limited time will be rejected, except for specific approved content (e.g. films, television programs, music, books)11.10 Insurance Apps must be free, in legal-compliance in the regions distributed, and cannot use IAP11.11 In general, the more expensive your App, the more thoroughly we will review it11.12 Apps offering subscriptions must do so using IAP, Apple will share the same 70/30 revenue split with developers for these purchases, as set forth in the Program License Agreement11.13 Apps that link to external mechanisms for purchases or subscriptions to be used in the App, such as a «buy» button that goes to a web site to purchase a digital book, will be rejected11.14 Apps can read or play approved content (specifically magazines, newspapers, books, audio, music, video and cloud storage) that is subscribed to or purchased outside of the App, as long as there is no button or external link in the App to purchase the approved content. Apple will only receive a portion of revenues for content purchased inside the App11.15 Apps may only use auto-renewing subscriptions for periodicals (newspapers, magazines), business Apps (enterprise, productivity, professional creative, cloud storage), and media Apps (video, audio, voice), or the App will be rejected11.16 Apps may enable additional approved features or functionality when used in combination with specific approved physical products (such as a toy) as long as the additional features and functionality are either completely dependent on such hardware (for example an App that is used to control a telescope) or also available through the App without the physical products, such as by way of reward for achievement or by use of IAP11.17 Apps may facilitate transmission of approved virtual currencies provided that they do so in compliance with all state and federal laws for the territories in which the app functions
Если не вдаваться в дословный перевод, суть требований Apple такова: все товары и услуги виртуального и цифрового плана должны быть оплачены через App Store. Иначе приложение будет удалено.Таким образом, наш Payment SDK не смогут использовать владельцы игровых, развлекательных приложений, продавцы цифрового контента и т.д. Вопрос виртуальных товаров является пограничным, но чаще всего также решается в пользу приема платежей через App Store. Так, например, интернет-магазин цифровых книг ЛитРес принимает платежи в приложении на Android через PayOnline, а вот на iOS — через App Store.
Другое дело, если вы сделали мобильное приложение для своего интернет-магазина, туристического агентства или авиакассы. Результатом сделки между вами и вашим покупателем является физический товар или физический документ, подтверждающий право пользования услугой. В таком случае вы можете спокойно интегрировать прием платежей через сторонний платежный сервис и оперативно получать средства на свой счет в банке, не теряя время и деньги на недоброй комиссии App Store.
Как работает Payment SDK PayOnline для iOS? Для подключения SDK необходимо добавить в проект библиотеку libPayOnlineSdk.a и папку PayOnlineSdk, содержащую header-файлы (скачать библиотеку можно здесь).Для выполнения платежа нужно:
1. Создать объект конфигурации PayOnlineConfiguration.
Пример кода: PayOnlineConfiguration *payOnlineConfiguration = [PayOnlineConfiguration configurationWithMerchantId:12345 privateKey: @»12–34–5»]; 2. Реализовать методы протокола PayOnlineDelegate.Пример кода: @implementation ViewController … #pragma mark — PayOnlineDelegate methods (void)payOnlineSuccess:(PayOnlinePayResponse *)response { // платеж прошел успешно } (void)payOnlineDeclined:(PayOnlinePayResponse *)response { // платеж отклонен } // необходима проверка 3DS (void)payOnlineThreeDsRequired:(PayOnlinePayResponse *)response { // создаем и показываем встроенный браузер UIWebView *webView = [[UIWebView alloc] initWithFrame: self.view.bounds]; [self.view addSubview: webView]; // открываем страницу банка-эмитента во встроенном браузере [self.processing navigateToAcsUrl: response delegate: self webView: webView]; } (void)payOnlineError:(PayOnlineError *)error { // ошибка } @end 3. Создать объект платежа PayOnlinePayRequest.Пример кода: PayOnlinePayRequest *payRequest = [[PayOnlinePayRequest alloc] init]; payRequest.email = @«test@payonline.com»; payRequest.cardNumber = @»4444333322221111»; payRequest.ip = @»127.0.0.1»; payRequest.cardExpMonth = 1; payRequest.cardExpYear = 2015; payRequest.cardHolderName = @«NAME SURNAME»; payRequest.cardCvv = 123; payRequest.amount = [NSDecimalNumber decimalNumberWithString:@»120.00»]; payRequest.currency = PayOnlineCurrencyRub; payRequest.orderId = @«order12345»; 4. Создать объект PayOnlineProcessing на основе конфигурации среды выполнения и вызвать метод pay.Пример кода: PayOnlineProcessing *processing = [PayOnlineProcessing processingWithConfig: payOnlineConfiguration]; [processing pay: payRequest delegate: payOnlineDelegate]; 5. Работа метода pay завершится вызовом одного из методов payOnlineDelegate.Пример реализации — мобильное приложение «Уральских авиалиний» для iOS Одним из первых клиентов нашей компании, использовавшим SDK для интеграции платежного сервиса в мобильное приложение под iOS, стала авиакомпания «Уральские авиалинии».
Если хотите посмотреть, как происходит процесс бронирования и оплаты билета in-app purchase — кликайте сюда Начинается все с ввода параметров полета:
В результатах поиска выбираем подходящий рейс:
Подтверждаем количество пассажиров и стоимость:
Вводим данные о пассажире:
И данные плательщика. На введенный адрес электронной почты PayOnline отправит платежную квитанцию сразу после завершения оплаты:
После этого билет бронируется, чтобы в тот момент, когда вы совершаете оплату, никто не купил ваш билет прямо «у вас перед носом» (что может быть особенно обидно, если билет был последний):
И, наконец, оплата. Как вы видите, дизайн платежной формы ничем не отличается от оформления остальных экранов мобильного приложения. А лаконичность формы позволяет минимизировать долю отказов на стадии оплаты:
Экран обработки оплаты также соответствует общему дизайну приложения:
Экран завершения оплаты мы не сделали, так как в на тот момент Екатеринбург лететь никто не собрался :)Но данные мониторинга ежедневно сообщают об успешных платежах через приложение.
Что кроме технической интеграции? Юридическое лицо Заключить договор с PayOnline может только юридическое лицо или индивидуальный предприниматель.Сайт Проще всего подключить прием платежей в мобильном приложении, если у вас уже есть интернет-магазин или иной коммерческий сайт. В ходе подключения приема платежей через процессинговый центр (или через банк напрямую) вам будет выдан так называемый «терминал» — идентификатор вашего сайта. Напрямую с мобильными приложениями подавляющее большинство банков в России не работает. Их подключают после сайта и выдают на приложение дополнительный терминал.Поэтому, если у вас нет сайта, для безболезненного и простого подключения приема платежей в приложениях вам потребуется сделать простой сайт-визитку, соответствующий минимальным требованиям.
Ставка комиссии Ставка комиссии определяется индивидуально в зависимости от оборота платежей в приложении и уровня рисков с вашем сегменте бизнеса. Логика понятна: выше оборот — ниже ставка, выше риски — выше ставка.Выплаты Средства перечисляются на ваш расчетный счет в банке на 2-й или 6-й день (в зависимости от выбранного базового платежного продукта). Вот и все, что мы хотели рассказать сегодня о Payment SDK для iOS и специфике настройки приема платежей в мобильных приложениях на iOS. С удовольствием ответим на ваши вопросы в комментариях!