Этот репозиторий предоставляет пошаговую документацию для собственного Android SDK SumUp, который позволяет вам интегрировать наши собственные карточные терминалы и их платежную платформу для приема платежей по кредитным и дебетовым картам (включая VISA, MasterCard, American Express и другие). SDK прозрачно обменивается данными с терминалом(ами) карты через Bluetooth (BLE 4.0). После начала оформления заказа SDK помогает вашему пользователю использовать соответствующие экраны на каждом этапе процесса оплаты. В рамках этого процесса SumUp также предоставляет экран настройки карточного терминала, а также экран проверки подписи владельца карты. Результат оформления заказа возвращается с соответствующими данными для ваших записей.
Никакие конфиденциальные данные карты никогда не передаются и не сохраняются на телефоне продавца. Все данные шифруются карточным терминалом, который полностью сертифицирован в соответствии с самыми высокими отраслевыми стандартами (PCI, EMV I и II, Visa, MasterCard и Amex).
Для получения дополнительной информации о продуктах для разработчиков SumUp обратитесь к нашей документации SumUp API.
minSdkVersion
26 или новее.targetSDK
31 или новееДобавьте репозиторий в зависимости Gradle:
allprojects {
repositories {
maven { url ' https://maven.sumup.com/releases ' }
}
}
Добавьте зависимость в модуль:
implementation ' com.sumup:merchant-sdk:5.0.3 '
Инициализируйте компоненты SumUp в своем приложении:
public class SampleApplication extends Application {
@ Override
public void onCreate () {
super . onCreate ();
SumUpState . init ( this );
}
}
Прежде чем использовать какие-либо функции SumUp SDK, необходимо войти в зарегистрированную учетную запись продавца SumUp. Перейдите на https://me.sumup.com/developers, чтобы получить партнерский ключ, введя идентификатор приложения вашего приложения. (например, com.sumup.sdksampleapp)
SumUpLogin sumupLogin = SumUpLogin . builder ( mAffiliateKey ). build ();
SumUpAPI . openLoginActivity ( MainActivity . this , sumupLogin , 1 );
Примечание. Также можно войти в учетную запись с помощью токена без ввода пользователем своих учетных данных для входа в SumUp в SDK. Пожалуйста, обратитесь к разделу «Прозрачная аутентификация».
После входа в систему вы можете начать использовать SumUp SDK для приема платежей по картам. Если ни одна учетная запись не зарегистрирована, будет возвращен SumUpAPI.Response.ResultCode.ERROR_NOT_LOGGED_IN
.
SumUpPayment payment = SumUpPayment . builder ()
// mandatory parameters
. total ( new BigDecimal ( "1.12" )) // minimum 1.00
. currency ( SumUpPayment . Currency . EUR )
// optional: to be used only if the card reader supports the feature, what can be checked with `SumUpApi.isTipOnCardReaderAvailable()`
. tipOnCardReader ()
// optional: include a tip amount in addition to the total, ignored if `tipOnCardReader()` is present
. tip ( new BigDecimal ( "0.10" ))
// optional: add details
. title ( "Taxi Ride" )
. receiptEmail ( "[email protected]" )
. receiptSMS ( "+3531234567890" )
// optional: Add metadata
. addAdditionalInfo ( "AccountId" , "taxi0334" )
. addAdditionalInfo ( "From" , "Paris" )
. addAdditionalInfo ( "To" , "Berlin" )
// optional: foreign transaction ID, must be unique!
. foreignTransactionId ( UUID . randomUUID (). toString ()) // can not exceed 128 chars
// optional: skip the success screen
. skipSuccessScreen ()
// optional: skip the failed screen
. skipFailedScreen ()
. build ();
SumUpAPI . checkout ( MainActivity . this , payment , 2 );
@ Override
protected void onActivityResult ( int requestCode , int resultCode , Intent data ) {
if ( requestCode == 2 && data != null ) {
// Handle the response here
}
}
При вызове обратного вызова доступны несколько полей ответа:
Флаги ответа предоставляются в пакете Bundle, который передается обратно в действие обратного вызова:
int resultCode = getIntent (). getExtras (). getInt ( SumUpAPI . Response . RESULT_CODE );
Когда продавец вошел в систему, вы можете открыть это действие, чтобы получить доступ ко всем настройкам и опциям, связанным с устройством чтения карт.
SumUpAPI . openCardReaderPage ( MainActivity . this , 4 );
prepareForCheckout()
предлагает возможность подключить устройство чтения карт перед началом оформления заказа, что ускоряет общее время оформления заказа.
Чтобы вызвать этот метод, пользователю необходимо войти в систему под учетной записью SumUp, и устройство чтения карт уже должно быть настроено. Затем вызовите prepareForCheckout()
перед началом оформления заказа.
Примечание. Считыватели карт Air и Solo остаются подключенными через BLE после каждой транзакции, в то время как
prepareForCheckout()
используется, когда устройство считывания карт отключается (например, считыватель находится вне зоны действия, хост-приложение теряет фокус или считыватель выключен).
При настройке объекта SumUpPayment
можно включить следующие необязательные параметры:
Сумма чаевых может быть обработана в дополнение к total
с помощью параметра tip
. Сумма чаевых будет показана во время оформления заказа и включена в ответ. Обратите внимание, что сумма чаевых не может быть изменена во время и после оформления заказа.
Это позволяет клиенту добавлять чаевые непосредственно на устройстве чтения карт, а не запрашивать сумму чаевых на устройстве Android.
Сумма чаевых может быть запрошена непосредственно в кард-ридере с помощью параметра tipOnCardReader
, если кард-ридер поддерживает чаевые. См. пример здесь для поля tipOnCardReader
.
Примечание. Не все устройства чтения карт поддерживают эту функцию. Чтобы узнать, поддерживается ли эта функция для последнего сохраненного устройства чтения карт, всегда следует проверять
SumUpApi.isTipOnCardReaderAvailable()
. Вы должны разобраться с этим делом самостоятельно, чтобы избежать подсказок. Также обратите внимание, что если вызываются иtip
, иtipOnCardReader
, то при оформлении заказа будет учитываться только суммаtipOnCardReader
если она доступна.
Функция configureRetryPolicy()
позволяет вам устанавливать собственные параметры повтора для получения результатов транзакции, используя pollingInterval
, maxWaitingTime
и disableBackButton
.
pollingInterval
, и maxWaitingTime
должны быть указаны в миллисекундах со значениями по умолчанию 2000 мс и 60 000 мс соответственно. Установка для disableBackButton
значения true отключает кнопку «Назад» во время повторных попыток.maxWaitingTime
истекает без результата, SDK возвращает SumUpAPI.ResultCode.ERROR_UNKNOWN_TRANSACTION_STATUS
. Нажатие кнопки «Назад» (если она включена) во время повторных попыток также вызовет эту ошибку.pollingInterval
превышает maxWaitingTime
, maxWaitingTime
будет автоматически скорректирован в соответствии с ним. Отрицательные значения для любого параметра по умолчанию равны 0.configureRetryPolicy()
не используется, SDK по умолчанию возвращает SumUpAPI.ResultCode.ERROR_TRANSACTION_FAILED
. При использовании платежа SumUp, как показано ниже:
SumupPayment . builder ()
...
. foreignTransactionId ( UUID . randomUUID (). toString ())
. configureRetryPolicy ( 2000 , 60000 , true )
. build ();
Если возникли проблемы с подключением и статус транзакции невозможно получить, API вернет ERROR_UNKNOWN_TRANSACTION_STATUS
. В таких случаях вы можете запросить статус транзакции, вызвав API статуса транзакции SumUp, используя указанный foreignTransactionId
.
Идентификатор foreignTransactionID
будет связан с транзакцией и может использоваться для получения сведений, связанных с транзакцией. Подробности смотрите в документации API. Убедитесь, что этот идентификатор уникален в пределах учетной записи продавца SumUp и ее субсчетов. Он не должен быть длиннее 128 символов. ForeignTransactionID доступен при вызове обратного вызова: SumUpAPI.Param.FOREIGN_TRANSACTION_ID
Чтобы пропустить экран успеха, отображаемый в конце успешной транзакции, можно использовать параметр skipSuccessScreen
. При использовании этого параметра ваше приложение отвечает за отображение результата транзакции клиенту. В сочетании с API квитанций ваше приложение также может отправлять ваши собственные квитанции, подробности см. в документации API. Обратите внимание, что экраны успеха по-прежнему будут отображаться при использовании считывателей SumUp Air Lite.
Чтобы пропустить экран с ошибкой, отображаемый в конце неудавшейся транзакции, можно использовать skipFailedScreen
. При использовании этого параметра ваше приложение отвечает за отображение результата транзакции клиенту. Обратите внимание, что экраны с ошибками по-прежнему будут отображаться при использовании считывателей SumUp Air Lite.
Чтобы аутентифицировать учетную запись без необходимости каждый раз вводить учетные данные пользователя SumUp, вы можете сгенерировать токен доступа с помощью OAuth2.0 и использовать его для прозрачного входа в SumUp SDK.
SumUpLogin sumupLogin = SumUpLogin . builder ( mAffiliateKey ). accessToken ( "MY_ACCESS_TOKEN" ). build ();
SumUpAPI . openLoginActivity ( MainActivity . this , sumupLogin , 1 );
Информацию о том, как получить токен, см. в документации API.
Если токен недействителен, будет возвращен SumUpAPI.Response.ResultCode.ERROR_INVALID_TOKEN
.
Если в данный момент выполнен вход в торговую учетную запись, можно получить данные для этой учетной записи.
if (! SumUpAPI . isLoggedIn ()) {
// no merchant account currently logged in
} else {
Merchant currentMerchant = SumUpAPI . getCurrentMerchant ();
}
SumUpAPI . logout ();
buildTypes {
release {
// All ProGuard rules required by the SumUp SDK are packaged with the library
minifyEnabled true
proguardFiles getDefaultProguardFile( ' proguard-android.txt ' )
}
}
SDK поддерживает службы определения местоположения Google, чтобы повысить точность определения местоположения и снизить энергопотребление.
Чтобы использовать его, вам необходимо добавить зависимость в файл build.gradle.
implementation " com.google.android.gms:play-services-location:19.0.1 "
Если зависимость GLS не добавлена в проект или службы Google Play не установлены на мобильном устройстве, SumUp SDK определит местоположение с помощью службы определения местоположения по умолчанию, предоставляемой Android.
ПРИМЕЧАНИЕ. Рекомендуется использовать GLS версии 19.0.1.
Следующие функции обрабатываются API-интерфейсами SumUp:
Подведение итогов журнала изменений Android SDK
Лицензия SumUp Android SDK