Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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

Отчество покупателя

email

Нет

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

Code Block
languageactionscript3
import UIKit
import AssistMobile
 
class ViewController: UIViewController, AssistPayDelegate {
    @IBOutlet weak var result: UILabel! 
    var data = PayData()
 
    @IBAction func startPay(sender: UIButton) {
 
        data.merchantId = "123456"
        data.orderNumber = "test_payment_01"
        data.orderAmount = "100.05"
        data.orderComment = "This is a test!"
        data.orderCurrency = .RUB     
        data.lastname = "Ivanov"
        data.firstname = "Ivan"
        data.middlename = "Ivanovich"
        data.email = "i3@mail.ru"
        data.mobilePhone = "+79210000000"
        data.address = "Nevskiy prospekt, 1"
        data.country = "Russian Federation"
        data.state = "Saint-Petersburg"
        data.city = "Saint-Petersburg"
     
        let pay = AssistPay(delegate: self)
        pay.start(self, withData: data)
    } 
 
    func payFinished(bill: String, status: PaymentStatus, message: String?) {
        let msg = message ?? ""
        result.text = "Finished: bill = \(bill), status = \(status.rawValue), message = \(msg)"
    }
}

Пример кода на Objective C

ViewController.h

Code Block
languagec#
#import <UIKit/UIKit.h>
#import "AssistMobile/AssistMobile.h"
 
@interface ViewController : UIViewController<AssistPayDelegate>
@property (weak, nonatomic) IBOutlet UILabel *result;
- (IBAction)pay:(UIButton *)sender;
 
@end

ViewController.m

Code Block
languagec#
#import "ViewController.h"
@interface ViewController ()
 
@property (strong, nonatomic) PayData* data;
@end
 
@implementation ViewController
- (IBAction)pay:(UIButton *)sender {
    if (!_data) {
        _data = [[PayData alloc] init];
    }
 
    _data.orderAmount = @"100.05";
    _data.orderNumber = @"test_payment_002";
    _data.merchantId = @"679471";
  
    AssistPay* assistPay = [[AssistPay alloc] initWithDelegate: self];
    [assistPay start:self withData: _data];
}
 
- (void)payFinished:(NSString * __nonnull)bill status:(NSString * __nonnull)status message:(NSString * __nullable)message
{
    NSString* res = @"status: ";
    res = [res stringByAppendingString: status];
    res = [res stringByAppendingString: @", billnumber: "];
    res = [res stringByAppendingString: bill];
    res = [res stringByAppendingString: @", message: "];
    res = [res stringByAppendingString: message];
    _result.text = res;
}
 
@end

Интеграция с Apple Pay

  1. Выполнить шаги из раздела 4 «Порядок интеграции мобильного приложения интернет-магазина с фреймворком AssistMobile».
  2. Скомпилировать AssistMobile.framework из исходников.
  3. Добавить фреймворк в свой проект.
  4. Включить опцию Build Settings -> Build Options -> Embedded Content Contains Swift Code в YES в настройках проекта.
  5. Добавить AssisyMobile.framework в настройку General->Embedded Binaries.
  6. В ключ NSLocationWhenInUseUsageDescription в настройках Info.plist -> Information Property List, добавляем параметр типа String со значением 'Permit to send geolocation data to Assist.

Пример кода Swift

Code Block
languagec#
import UIKit
import AssistMobile
 
class ViewController: UIViewController, AssistPayDelegate {
    @IBOutlet weak var result: UILabel! 
    var data = PayData()
     
    @available(iOS 10.0, *)
    @IBAction func payWithApplePay(_ sender: UIButton) {
        data = PayData()
        pay = AssistPay(delegate: self)
        data.merchantId = "your merhcnt id in assist"
        var apmid = "murchant.id.in.apple"
        data.login = "your account login in assist"
        data.password = "your account password in assist"
        data.orderNumber = "order number"
        data.orderComment = "comment"
        data.orderAmount = "100.05"
        data.orderCurrency = .RUB
        data.lastname = "Ivanov"
        data.firstname = "Ivan"
        data.email = "ivan@mailhost.ru"
     
        AssistLinks.currentHost = "https://payments.assist.ru"
     
        pay!.startWithApplePay(self, withData: data, applePayMerchantId: apmid)
    }
     
     func payFinished(bill: String, status: PaymentStatus, message: String?) {
        let msg = message ?? ""
        result.text = "Finished: bill = \(bill), status = \(status.rawValue), message = \(msg)"
    }
}

SDK и пример приложения доступны для скачивания по следующей ссылке:

https://github.com/assist-group/assist-mcommerce-sdk-ios

Наверх