Настройка оплаты через мобильное приложение Сбербанка

Attention. Это старая версия API. Переходите на API Яндекс.Кассы.
Эта инструкция предназначена для магазинов, которые реализуют оплату через мобильное приложение Сбербанка (сценарий подходит только для мобильных приложений). В процессе оплаты необходимо сформировать deeplink, по которому пользователь перейдет в приложение Сбербанка. См. описание сценария

Шаг 1. Получение идентификатора заказа

Для получения идентификатора заказа (RQUID) необходимо вызвать метод createInvoice.

Пример запроса
POST /webservice/mws/api/createInvoice HTTP/1.1
Host: someshop.ru 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: length
clientOrderId=20170714T084637%2B00%3A00&shopId=15203&shopArticleId=106723&sum=11.00&customerNumber=216&description=%D0%9D%D0%BE%D1%81%D0%BE%D1%87%D0%BA%D0%B8&offer_accepted=true&smsPhoneNumber=79151231560&showcase_url=https%3A%2F%2Fdonelly.ru&invoiceType=sberbank&payMethod=online
Пример ответа
<createInvoiceResponse status="1" error="0" processedDT="2017-07-14T11:46:41.103+03:00" orderId="2000734125092" externalPaymentUrl="https://online.sberbank.ru/CSAFront/payOrderPaymentLogin.do?ReqId=625d499cfe51f4e286f4896a989e41e7" externalTransactionNumber="625d499cfe51f4e286f4896a989e41e7"/>

Шаг 2. Формирование deeplink

Инструкция для iOS

Формат диплинка
sberbankonlineinvoicing://invoice/<merchantName>?ERIBUUID=<order_uuid>&callbackURLScheme=<callbackURLScheme>
Параметры для диплинка
ПараметрОписание

merchantName

Название приложения мерчанта

order_uuid

Идентификатор заказа (RQUID), полученный при отправке запроса createInvoice.

callbackURLScheme

Ссылка для callback-а

ПараметрОписание

merchantName

Название приложения мерчанта

order_uuid

Идентификатор заказа (RQUID), полученный при отправке запроса createInvoice.

callbackURLScheme

Ссылка для callback-а

Статусы платежа при возврате в приложение

Успешная оплата

<merchantName>://callback?success=1

Ошибка при оплате

<merchantName>://callback?success=0

Инструкция для Android

Для формирования диплинка следует использовать интенты.

orderUUID — идентификатор заказа (RQUID), полученный при отправке запроса createInvoice.

public class MainActivity extends AppCompatActivity {
                private static final String SBERBANK_ONLINE_PACKAGE_NAME = "ru.sberbankmobile";
                private static final String SBERBANK_ONLINE_INVOICING_ACTIVITY_NAME = "ru.sberbank.mobile.external.InvoicingActivity";
 
                private static final String ORDER_UUID_KEY = "ru.sberbank.mobile.ORDER_UUID_KEY;
                private static final String RESULT_KEY = "ru.sberbank.mobile.RESULT_KEY";
                private static final String CALLBACK_INTENT_KEY = "ru.sberbank.mobile.CALLBACK_INTENT_KEY";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBuyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String orderUUID = mEribUid.getText().toString();
                                                               Intent invoicingIntent = new Intent();
                                                               invoicingIntent.setComponent(new ComponentName(SBERBANK_ONLINE_PACKAGE_NAME, SBERBANK_ONLINE_INVOICING_ACTIVITY_NAME));
                                                               invoicingIntent.putExtra(ORDER_UUID_KEY, orderUUID);
                startActivityForResult(invoicingIntent, REQUEST_CODE);
            }
        });
    }
                /**       
                * В data по ключу RESULT_KEY будет содержаться результат и какая-то дополнительная информация
                */
                @Override
                protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//                           "SUCCESS" or "FAILURE"
                               String result = intent.getStringExtra(RESULT_KEY);
                }
}