Skip to content

pikassa-payments/pikassa-sdk-ios

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

Pikassa SDK

Подключение зависимостей

  1. Установите CocoaPods
gem install cocoapods
  1. Создайте файл Podfile

CocoaPods предоставляет команду pod init для создания Podfile с настройками по умолчанию.

  1. Добавьте зависимости в Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!

target 'Your Target Name' do
  pod 'PikassaSDK',
    :git => 'https://github.com/pikassa-payments/pikassa-sdk-ios.git',
    :tag => 'tag'
end

Your Target Name - название таргета в Xcode для вашего приложения.
tag - версия SDK. Актуальную версию можно узнать на github в разделе releases.

  1. Выполните команду pod install

Пример использования

Работа с библиотекой осуществляется через объект Pikassa, у которого доступны 2 метода: setup(), sendPaymentData().

  1. Для начала необходимо вызвать метод setup:
Pikassa.setup("your_api_key")

где "your_api_key" - ключ доступа к API.

  1. После инициализации можно вызвать метод отправки данных:
func sendPaymentData(
    method: PaymentMethods,
    invoiceId: String,
    didSuccessBlock: ((PayResponse) -> Void)?,
    didFailBlock: ((Error) -> Void)?)

где method - один из поддерживаемых способов оплаты (далее, в п. 3) invoiceId - номер счета на оплату didSuccessBlock - результат успешной передачи карточных данных, возвращает информацию с сервера в случае успеха (PayResponse), didFailBlock - ошибка при передаче данных, возвращает стандартную ошибку (Error).

  1. На данный момент поддерживаются два метода оплаты - картой (с готовой структурой BankCardDetails) и с кастомным словарем полей:
public enum PaymentMethods {
    case bankCard(details: BankCardDetails)
    
    case custom(details: [String: String])
}
  1. Описание полей BankCardDetails pan - номер карты cardHolder - владелец карты; expYear - год окончания срока действия карты (формат "YY"); expMonth - месяц окончания срока действия карты (формат "mm"); cvc - код с обратной стороны (3 цифры);

И пример вызова:

let cardDetails: BankCardDetails = BankCardDetails(
            pan: "4444 4444 4444 4444",
            cardHolder: "CARD HOLDER",
            cvc: "999",
            expYear: "2024",
            expMonth: "11")
        
        Pikassa.sendPaymentData(
            method: PaymentMethods.bankCard(details: cardDetails),
            invoiceId: "<invoice id>",
            didSuccessBlock: { ... },
            didFailBlock: { ... })
  1. Для вызова передачи платежных данных с кастомными полями для вызова обязательным является наличие параметра "paymentMethod" в передаваемом словаре:
        Pikassa.sendPaymentData(
            method: PaymentMethods.custom([ "paymentMethod": "Mobile", "phone" : "+79999999999"]),
            invoiceId: "<invoice id>",
            didSuccessBlock: { ... },
            didFailBlock: { ... })

Перечень методов оплаты

  1. В случае успеха выполнения отправки данных, в didSuccessBlock приходит ответ PayResponse, структура которого выглядит следующим образом:
public struct PayResponse: Decodable {
    public let uuid: String
    public let requestId: String
    public let redirect: Redirect?
}

uuid - идентификатор платежа; requestId - идентификатор запроса redirect - ссылка для перенаправления пользователя. Например, для карт может потребоваться перенаправление пользователя на страницу ввода кода 3DS. Может быть нулевым, если аутентификация не нужна при платеже. В случае, если ненулевое поле, то структура следующая:

public struct Redirect: Decodable {
    public let url: String
    public let method: String             //метод оплаты
    public let params: [[String: String]] //дополнительные возвращаемые параметры
}

Здесь основным параметром является url, в котором хранится ссылка на редирект, по которому нужно пройти для подтверждения платежа.

  1. В случае неуспешного выполнения отправки данных в didFailBlock приходит стандартный интерфейс ошибки Error.

В случае если он приводится к классу PikassaError, причину ошибки можно понять по полю code (возможные коды ошибок)

В остальных случаях обрабатывать также как обычные системные ошибки (например для ошибок сети приводить к NSError и сравнивать domain с NSURLErrorDomain)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published