yoomoney / yookassa-android-sdk

This library allows implementing payment acceptance into mobile apps on Android. It works as an extension to the YooMoney API.
https://yookassa.ru/developers/payment-forms/android-sdk
MIT License
39 stars 22 forks source link

После выполнения 3ds onActivityResult не вызывается #57

Closed RussianWoodpecker closed 4 years ago

RussianWoodpecker commented 4 years ago

Здравствуйте, почему-то при завершении ввод данных в окне 3ds я не получаю никаких результатов, т.е. не происходит вызов onActivityResult. При этом результаты токинезации я получаю успешно.

public class YandexKassaPaymentActivity extends BaseActivity implements Callback<ApiResponse<PaymentResponse>> {
    ...
    private void initOnlinePayment(OrderCreatedReply.Order order) {
        Settings settings = Settings.getInstance();
        Set<PaymentMethodType> paymentMethodTypes = PaymentHelper.getPaymentMethodTypes();
        final PaymentParameters paymentParameters = new PaymentParameters(
                new Amount(new BigDecimal(order.amount), Currency.getInstance(order.currency)),
                order.title,
                order.description,
                BuildConfig.MERCHANT_TOKEN,
                BuildConfig.SHOP_ID,
                SavePaymentMethod.USER_SELECTS,
                paymentMethodTypes
        );
        final UiParameters uiParameters = new UiParameters(false, new ColorScheme(R.color.colorPrimary));
        final MockConfiguration mockConfiguration;
        if (settings.isTestModeEnabled()) {
            mockConfiguration = new MockConfiguration(true, true, 0, new Amount(new BigDecimal(order.amount), Currency.getInstance(order.currency)));
        } else {
            mockConfiguration = null;
        }
        final TestParameters testParameters = new TestParameters(true, false, mockConfiguration);
        final Intent intent = Checkout.createTokenizeIntent(this,
                paymentParameters,
                testParameters,
                uiParameters
        );
        startActivityForResult(intent, REQUEST_CODE_TOKENIZE);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("3ds", Integer.toString(requestCode));
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_TOKENIZE) {
            switch (resultCode) {
                case RESULT_OK:
                    // successful tokenization
                    final TokenizationResult result = Checkout.createTokenizationResult(data);
                    if (getIntent().getExtras() != null && getIntent().getExtras().containsKey(ARG_ORDER)) {
                        OrderCreatedReply orderCreatedReply = (OrderCreatedReply)getIntent().getExtras().get(ARG_ORDER);
                        if (orderCreatedReply != null) {
                            PaymentRequest request = new PaymentRequest(result.getPaymentToken(), orderCreatedReply.order.orderId);
                            ApiClient.payment(request, this);
                        }
                    }

                    break;
                case RESULT_CANCELED:
                   ...
            }
        } else if (requestCode == REQUEST_CODE_3DS) {
            Log.d("3ds", Integer.toString(requestCode))
        }
    }

    @Override
    public void onResponse(Call<ApiResponse<PaymentResponse>> call, Response<ApiResponse<PaymentResponse>> response) {
        if (response.isSuccessful()) {
            PaymentResponse paymentResponse = response.body().get();
            if (paymentResponse != null && paymentResponse.url3ds != null && !paymentResponse.url3ds.isEmpty()) {
                Intent intent = Checkout.create3dsIntent(
                        this,
                        paymentResponse.url3ds
                );
                startActivityForResult(intent, REQUEST_CODE_3DS);
            } 
        }
    }

}
kavorka-cat commented 3 years ago

Добрый день. Подскажите, пожалуйста, как удалось решить проблему? Сейчас то же самое возникает с версией yookassa-android-sdk 5.0.3