Page History
...
Прервать процесс оплаты можно с помощью метода:
void assistPayEngine.stopPayment(Activity caller).
Класс ru.assisttech.sdk.AssistPaymentData, позволяющий устанавливать параметры оплаты, содержит следующие методы:
- void setMerchantId(String value) – метод позволяет установить идентификатор торговой точки, задание идентификатора торговой точки обязательно;
- void setOrderNumber(String value) – метод позволяет установить номер заказа, задание номера заказа обязательно;
- void setOrderAmount(String value) - метод позволяет установить сумму заказа (используется строковое значение суммы в копейках), задание суммы заказа обязательно;
- void setOrderCurrency(Currency value) - метод позволяет установить валюту заказа;
- void setOrderComment(String value) - метод позволяет установить комментарий - описание платежа;
- void setEmail(String value) - метод позволяет установить адрес электронной почты плательщика;
- void setAddress(String value) - метод позволяет установить почтовый адрес плательщика;
- void setHomePhone(String value) - метод позволяет установить домашний телефон плательщика;
- void setWorkPhone(String value) - метод позволяет установить рабочий телефон плательщика;
- void setMobilePhone(String value) - метод позволяет установить мобильный телефон плательщика;
- void setFax(String value) – метод позволяет установить номер факса плательщика;
- void setLastname(String value) - метод позволяет установить фамилию плательщика;
- void setFirstname(String value) - метод позволяет установить имя плательщика;
- void setMiddlename(String value) - метод позволяет установить отчество плательщика;
- void setCountry(String value) - метод позволяет установить страну плательщика;
- void setState(String value) - метод позволяет установить область (регион);
- void setCity(String value) – метод позволяет установить город;
- void setZip(String value) - метод позволяет установить почтовый индекс;
- void setSignature(String value) – метод позволяет установить подпись параметров.
| Note |
|---|
Формируется строка, сшитая из следующих параметров заказа: MerchantId;OrderNumber;OrderAmount;OrderCurrency, разделенных точкой с запятой. На базе этой строки алгоритмом MD5 формируется дайджест. Дайджест подписывается закрытым RSA ключом мерчанта. Длина ключа - 1024. Полученная байтовая последовательность является подписью магазина. Подпись передается в запросе как дополнительный параметр, закодированный в виде строки BASE64. |
Хранение результатов оплаты
Проведенные оплаты сохраняются в SQLite DB, доступ к которой осуществляется через интерфейс AssistTransactionStorage и классы AssistTransactionFilter и AssistTransactionsLoader.
Класс AssistTransactionStorage предназначен для доступа к единичной транзакции по ID, в то время как AssistTransactionsLoader используется для получения списка транзакций без блокирования основного потока приложения.
Класс AssistTransactionFilter используется для фильтрации списка транзакций, получаемых от AssistTransactionStorage.
Получить экземпляр класса AssistTransactionStorage можно с помощью метода:Получить экземпляр класса AssistTransactionStorage можно с помощью метода:
AssistTransactionStorage assistPayEngine.transactionStorage().
Экземпляр класса AssistTransactionsLoader необходимо создавать в методе onCreateLoader(int id, Bundle args) класса, реализующего интерфейс LoaderManager.LoaderCallbacks<>.
Поддержка Android Pay
Для работы с Android Pay рекомендуется предварительно ознакомиться с документацией на сайте разработчика https://developers.google.com/android-pay/.
На данный момент работа с кошельком Google представлена в режиме SANDBOX. Поэтому для определения возможности проведения тестового платежа требуется связаться со службой поддержки Assist support@belassist.by.
Поддержка Samsung Pay
Для использования Samsung Pay в своем приложении предприятию необходимо зарегистрироваться в Samsung и зарегистрировать свое приложение, а затем получить Samsung Pay SDK http://www.samsung.com/ru/apps/mobile/samsungpay/.
Далее следует создать запрос на сертификат, выпустить сертификат магазина в Samsung и передать его в Assist через support@belassist.by для подключения услуги Samsung Pay.
В своем приложении необходимо следовать инструкции Samsung для инициации платежа через Samsung Pay. Для завершения оплаты Samsung Pay нужно передать данные, полученные из Samsung Pay SDK в Assist с помощью функции AssistPayEngine.payToken().
Порядок интеграции мобильного приложения интернет-магазина с SDK Assist.Mobile
Для интеграции мобильного приложения интернет-магазина с SDK Assist.Mobile необходимо выполнить следующие действия:
Скопировать файл mobilePay-release-X.X.X.aar в каталог /libs модуля приложения.
Добавить в build.gradle модуля:
Code Block language actionscript3 repositories { flatDir { dirs 'libs' } } dependencies { compile 'io.card:android-sdk:5.0.0' compile(name: 'mobilePay-release-X.X.X', ext: 'aar') }- Сделать следующие изменения в AndroidManifect.xml:
3.1. Сначала необходимо убедиться, что минимальная версия SDK 15 или выше. Должен быть примерно такой элемент внутри элемента <manifest>:
| Code Block | ||
|---|---|---|
| ||
<uses-sdk android:minSdkVersion="15"/> |
3.2. Также внутри элемента <manifest> должны присутствовать следующие разрешения:
| Code Block | ||
|---|---|---|
| ||
<activity
android:name="ru.assisttech.sdk.processor.WebViewActivity"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name="io.card.payment.CardIOActivity"
android:configChanges="keyboardHidden|orientation" />
<activity android:name="io.card.payment.DataEntryActivity" /> |
3.3. В элемент <application> следует добавить activity:
| Code Block | ||
|---|---|---|
| ||
```
-keep class io.card.**
-keepclassmembers class io.card.** {
*;
}
-keep class ru.assisttech.sdk.**
-keepclassmembers class ru.assisttech.sdk.** {
*;
}
``` |
Пример реализации оплаты с помощью SDK Assist.Mobile
| Code Block | ||
|---|---|---|
| ||
package ru.assisttech.example;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import ru.assisttech.sdk.AssistSDK;
import ru.assisttech.sdk.AssistPaymentData;
import ru.assisttech.sdk.engine.AssistPayEngine;
import ru.assisttech.sdk.engine.PayEngineListener;
import ru.assisttech.sdk.storage.AssistTransaction;
public class
MainActivity extends
Activity implements
PayEngineListener {
private TextView tvPaymentResult;
private AssistPayEngine
engine;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvPaymentResult = (TextView) findViewById(R.id.textView);
// Получение платежного компонента из библиотеки
engine= AssistSDK.getPayEngine(this);
// Установка адреса сервера
engine.setServerURL("server url");
// Установка получателя результата
engine.setEngineListener(this);
findViewById(R.id.btPay).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// Установка параметров платежа
AssistPaymentData data = new AssistPaymentData();
// ID мерчанта в АПК Ассист
data.setMerchantId("12345");
// Номер заказа
data.setOrderNumber("OrderNo");
// Сумма
data.setOrderAmount("100"); // 100 руб
// Валюта
data.setOrderCurrency(AssistPaymentData.Currency.RUB);
// Комментарий
data.setOrderComment("Тестовый платеж");
// e-mail покупателя
data.setEmail("customer@mail.com");
// Почтовый адрес покупателя
data.setAddress("Москва, Ленинградское ш. 39");
// Домашний телефон
data.setHomePhone("567-99-29");
// Рабочий телефон
data.setWorkPhone("555-00-00");
// Мобильный телефон
data.setMobilePhone("+79067410863");
// Факс
data.setFax("");
// Фамилия
data.setLastname("Романов");
// Имя
data.setFirstname("Пётр");
// Отчество
data.setMiddlename("Алексеевич");
// Страна покупателя
data.setCountry("Russia");
// Область (штат)
data.setState("Moscow");
// город
data.setCity("Moscow");
// Почтовый индекс
data.setZip("100290");
// Язык
data.setLanguage(AssistPaymentData.Lang.RU);
// Вычисление подписи параметров платежа ...
String signature = "stub_signature";
// Установка подписи
data.setSignature(signature);
// Запуск процесса оплаты
engine.payWeb(MainActivity.this, data, false);
}
});
}
/**
* PayEngineListener callbacks
*/
@Override
public void onFinished(Activity activity, AssistTransaction assistTransaction) {
if (!this.equals(activity)) {
activity.finish();
}
tvPaymentResult.setText(assistTransaction.getResult().getOrderState().toText());
}
@Override
public void onCanceled(Activity activity, AssistTransaction assistTransaction) {
if (!this.equals(activity)) {
activity.finish();
}
tvPaymentResult.setText(assistTransaction.getResult().getOrderState().toText());
}
@Override
public void onFailure(Activity activity, String info) {
tvPaymentResult.setText("Ошибка: " + info);
}
@Override
public void onNetworkError(Activity activity, String s) {
tvPaymentResult.setText("Сетевая ошибка: " + s);
}
} |
SDK и пример приложения доступны для скачивания по следующей ссылке:
https://github.com/assist-group/assist-mcommerce-sdk-android