Предварительное заполнение из Google Payments - PullRequest
0 голосов
/ 23 октября 2018

У меня есть экран в моем приложении для Android, где мы требуем, чтобы пользователь ввел номер карты и соответствующий PIN-код для нее (не обращая на это внимания с точки зрения безопасности), и было бы неплохо, если бы мы могли предварительно заполнить данные из Google Payесли они хранятся.

У меня есть следующий макет, обрезанный до самого необходимого:

<LinearLayout>

    <!-- Id -->

    <LinearLayout>
        <ImageView/>
        <android.support.design.widget.TextInputLayout android:hint="User Id">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/txtUserId"
                android:inputType="number"/>

        </android.support.design.widget.TextInputLayout>
    </LinearLayout>

    <!-- Card Number -->

    <LinearLayout>
        <ImageView/>
        <android.support.design.widget.TextInputLayout android:hint="Card number">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/txtCardNumber"
                android:inputType="number"/>

        </android.support.design.widget.TextInputLayout>
    </LinearLayout>

    <!-- PIN Number -->

    <LinearLayout>
        <ImageView />
        <android.support.design.widget.TextInputLayout android:hint="PIN Number">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/txtPin"
                android:maxLength="4"
                android:inputType="numberPassword" />

        </android.support.design.widget.TextInputLayout>
    </LinearLayout>
</LinearLayout>

В этом состоянии, когда я нажимаю на поле кредитной карты, он будет правильно пытаться предварительно заполнитьв моей кредитной карте, хранящейся в Google (сначала проверяю CCV с помощью модальности Google Pay) без необходимости что-либо делать. Плохая вещь заключается в том, что она также вводит CCV в поле PIN-кода, что неверно, поскольку именно там вы вводите свой PIN-код, если пытаетесь совершить платеж картой с помощью устройства POS.

Если я введу importantForAutofill="no" в поле ПИН-кода, тогда он вообще ничего не заполняет, даже если я введу importantForAutofill="yes" и android:autofillHints="creditCardNumber" в поле номера карты.

Аналогично, если ясделать это программно, ничего не заполняя:

inputId.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
inputCardNumber.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_YES);
inputCardNumber.setAutofillHints(View.AUTOFILL_HINT_CREDIT_CARD_NUMBER);
inputPin.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);

Как мне сделать предоплату номера карты из Google Pay, если CCV неправильно предварительно заполняет поле PIN-кода?

...