Архив
 
Настройка оплаты через мобильное приложение СберБанка
Это старая версия API. Переходите на API ЮKassa.
Эта инструкция только для тех, кто использует способ оплаты СберБанк Онлайн и хочет реализовать оплату через мобильное приложение СберБанка. В процессе оплаты необходимо сформировать диплинк, по которому пользователь перейдет в приложение СберБанка. См. описание сценария
Если вы используете SberPay, эта инструкция вам не нужна: диплинк сразу придет в ответ на запрос createInvoice.
 
Шаг 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
Пример ответа
XML
<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. Формирование диплинка
 
Инструкция для iOS
 
Формат диплинка
sberbankonlineinvoicing://invoice/<merchantName>?ERIBUUID=<order_uuid>&callbackURLScheme=<callbackURLScheme>
 
Параметры для диплинка
ПараметрОписание
merchantNameНазвание приложения мерчанта
order_uuidИдентификатор заказа (RQUID), полученный при отправке запроса createInvoice.
callbackURLSchemeСсылка для callback-а
 
Статусы платежа при возврате в приложение
Успешная оплата
<merchantName>://callback?success=1
Ошибка при оплате
<merchantName>://callback?success=0
 
Инструкция для Android
Для формирования диплинка следует использовать интенты.
orderUUID
 — идентификатор заказа (RQUID), полученный при отправке запроса createInvoice.
Java
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.extra.EXTRA_ORDER_UUID";
                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);
                }
}
 
Что почитать еще
Описание процесса оплаты