8.9 KiB
ПСКБ Платежи iOS SDK
Библиотека является дополнением к API системы интернет-эквайринга ПСКБ "Платежи" и позволяет подключить приём платежей по картам в мобильных приложениях iOS с минимальными усилиями.
Возможности
На текущий момент библиотека поддерживает:
- Apple Pay
- Оплата картами
Подключение зависимостей
- Установите CocoaPods 1.10.0 или выше
gem install cocoapods
Официальная документация по установке CocoaPods
- Создайте в своём приложении
Podfile
Это также можно сделать при помощи команды pod init
, находясь в директории своего проекта. (В таком случае будет создан Podfile
с настройками по умолчанию)
- Добавьте зависимости в
Podfile
platform :ios, '10.0'
target '<Target name>' do
use_frameworks!
pod 'PSCBOnline', :git => "https://bitbucket.org/dev_ai/pscbonline.git", :tag => "1.0.0"
end
<Target name>
- Название проекта вашего приложения в XCode
- Выполните команду
pod install
Интеграция
- Для работы с библиотекой импортируйте зависимости в нужный файл проекта:
import PSCBOnline
- Создайте экземпляр
PSCBOnlineClient
с вашими настройками:
let apiClient = PSCBOnlineClient(
environment: .sandbox,
marketPlaceId: "<Your MarketPlace ID>",
signingKey: "<Your Signing Key>"
)
environment
- окружение, в рамках которого библиотека взаимодействует с сервисом..sandbox
- тестовое окружение;.production
- продуктовое.Your MarketPlace ID
- ваш идентификатор в системе ПСКБ-Онлайн.Your Signing Key
- ваш ключ подписи запросов к системе.
- Создайте экземпляр
Payment
let payment = Payment(amount: Decimal(1000.00), orderId: "Order-ID")
amount
- сумма в рублях. (На текущий момент другая валюта не поддерживается.)orderId
- уникальный идентификатор заказа в рамках магазина.
Для детальной информации, какие параметры принимает смотрите документацию Payment
.
Дальнейшая интеграция отличается от способа оплаты.
Доступные способы оплаты
Сейчас в SDK доступна оплата:
- Банковкой кратой
- Apple Pay
Для их настройки реализации смотрите дальше.
Приём оплаты банковскимикартами
- Для приёма оплаты картами нужно создать экземпляр класса
CardData
.
let card = CardData(
pan: "4761349750010326",
expiryYear: 2022,
expiryMonth: 12,
cvCode: "851"
)
- Создать токен запроса, используя экземпляр
PSCBOnlineClient
, созданный ранее.
let request = try! client.makeRequestWithCardData(card: card, payment: payment)
- Отправить токен запроса на сервер ПСКБ-Онлайн.
// Send request to backend
client.send(request, responseHandler: { (error, response) in
guard nil == error && nil != response else {
print("Error sending request: \(String(describing: error))")
return
}
print("Successful request:")
print(response!)
})
В случае успешного выполнения запроса,
response
будет содержать информацию о принятом платеже, его ID, состояние и прочие данные.
Приём оплаты Apple Pay
Для приёма платежей через Apple Pay вы должны зарегестрировать Merchant ID в Apple.
Помимо merchant ID
необходимо настроить сертификат обработки запросов (Payment Processing Certificate
) и передать его ПСКБ-Онлайн. Этим сертификатом Apple будет шифровать данные банковских карт перед отправкой на сервер ПСКБ-Онлайн.
Все пререквизиты описаны на сайте официальной документации Apple.
Также вы можете ознакомиться сподробной инструкцией на сайте документации ПСКБ Онлайн.
После выполнения пререквизитов, в коде необходимо:
- Импортировать
PassKit
:
import PassKit
- Создать экземпляр класса
PKPaymentAuthorizationController
и настроить делегирующий классPKPaymentAuthorizationControllerDelegate
:
Пример:
import PassKit
import PSCBOnline
class ApplePayHandler: NSObject {
public func handleApplePay(payment: Payment) {
// Позиции оплаты для представления пользователя
let items = [PKPaymentSummaryItem(label: "Shoes", amount: NSDecimalNumber(intergerLiteral: 1000))]
// Запрос на оплату для PKPaymentAuthorizationController
let paymentRequest = PSCBAPI.makePaymentRequest(merchantId: "<Your Apple Merchant ID>", items: [])
// Вызов модуля оплаты
let authorizationController = PKPaymentAuthorizationController(paymentRequest: paymentRequest)
authorizationController?.delegate = self
authorizationController?.present(completion: { presented in
if presented {
print("Controller presented")
} else {
print("Controller could not be presented")
}
})
}
}
extension ApplePayHandler: PKPaymentAuthorizationControllerDelegate {
public func paymentAuthorizationController(_ controller: PKPaymentAuthorizationController,
didAuthorizePayment payment: PKPayment,
handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) {
// 1.
// Вызывается после авторизации платежа плательщиком биометрическими данными или паролем
}
public func paymentAuthorizationControllerDidFinish(_ controller: PKPaymentAuthorizationController) {
// 2.
// Вызывается после того, как платёж совершён или пользователь закрыл модуль оплаты.
}
}
<Your Apple Merchant ID>
- Ваш идентификатор мерчанта.
- Далее в примере выше в п.1 и п.2 реализовать необходимую логику отправки запроса на сервер ПСКБ-Онлайн.
Для пункта 1 - это создание токена запроса (используя
client.makeRequestWithPayment(pkPayment, pscbPayment)
и отправка его на сервер:
// Request token
let request = try! client.makeRequestWithPayment(pkPayment: pkPayment, pscbPayment: payment)
// Sending request to backend
client.send(request, responseHandler: { (error, response) in
if (error == nil && response != nil) {
completion(PKPaymentAuthorizationResult(status: .success, errors: nil))
} else {
print("Error sending payment: \(String(describing: error))")
completion(PKPaymentAuthorizationResult(status: .failure, errors: nil))
}
})
- А для пункта 2 - обработка закрытия модуля оплаты.