Возможные сценарии оплаты описаны в структуре SPayMethod
Вне зависимости от конкретного сценария оплаты, Вам необходимо будет использовать один и тот же метод запуска SDK
В SDK на данный момент существует 4 способа авторизации для проведения оплаты:
Очередность попыток авторизации будет такой же, как описано выше. Т.е. сначала SDK будет пробовать авторизоваться по рефреш токену, затем бесшовным способом и так далее, пока не пройдет успешно, либо все способы не закончатся. Естественно, условие выше актуально в случае, когда все способы доступны для конкретного пользователя и способа оплаты
Для Пользователя и Партнера визуальное отличие будет только между авторизацией через мобильное приложение Банка (произойдет переход в МП Банка с авторизацией и редирект обратно в приложение Партнера) и другими способами (все происходит в рамках открытой шторки SDK)
В большинстве случаев первая авторизация для Пользователя будет через мобильное приложение Банка
Метод pay
является входной точкой в SDK и должен быть вызван только по клику на кнопку «Оплатить»
Обязательно корректно укажите значение параметра
appPackage
.
В противном случае при возврате из МП Банка после авторизации поднимется шторка с вариантами приложений для продолжения оплаты. Таким образом сценарий разорвется
SPaySdkApp.getInstance().pay(
method = SPayMethod.Default,
request = SPaymentRequest(
context = requireContext(),
apiKey = API_KEY,
merchantLogin = MERCHANT_LOGIN,
bankInvoiceId = BANK_INVOICE_ID,
orderNumber = ORDER_NUMBER,
appPackage = APP_PACKAGE,
phoneNumber = PHONE_NUMBER
) { paymentResult -> }
)
SPaySdkApp.getInstance().pay(
SPayMethod.Default,
SPaymentRequest(
context,
API_KEY,
MERCHANT_LOGIN,
BANK_INVOICE_ID,
ORDER_NUMBER,
APP_PACKAGE,
PHONE_NUMBER,
paymentResult -> {
if (paymentResult instanceof PaymentResult.Success) {
//do something on success
} else if (paymentResult instanceof PaymentResult.Error) {
//do something on error
} else if (paymentResult instanceof PaymentResult.Processing) {
//do something on processing
}
return null;
}
)
);