Исключить кредитные карты из Google Pay - PullRequest
2 голосов
/ 15 января 2020

Недавно было объявлено, что с апреля 2020 года азартные игры с помощью кредитных карт будут запрещены в Великобритании. Поэтому мне нужно исключить кредитные карты из Google Pay, чтобы пользователь не мог выбрать их в качестве способа оплаты.

Я знаю, что могу исключить определенные c карточные сети, например, так:

private static JSONArray getAllowedCardNetworks() {
  return new JSONArray()
      .put("AMEX")
      .put("DISCOVER")
      .put("INTERAC");
      .put("JCB")
      .put("MASTERCARD")
      .put("VISA");
}

Однако, учитывая, что карточная сеть может предоставлять как дебетовые, так и кредитные карты, не имеет смысла исключить использование сетей.

Существует также возможность исключения предоплаченных карт с помощью

allowPrepaidCards

Но я не вижу ничего об исключении кредитных или дебетовых карт, разве это не поддерживается?

Редактировать:

Поговорив с Google, они дали мне следующий ответ, я буду обновлять, когда эта функция будет доступна. А пока следуйте советам Самса.

Спасибо, что обратились к нам. К сожалению, в настоящее время у нас нет способа исключить кредитные карты из Google Pay API. Нам известно об этом, и мы рассматриваем возможные варианты включения этой функции. Пожалуйста, дайте нам проверить продукт с помощью этой функции, и мы свяжемся с вами.

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Эта функция теперь доступна, хотя документация еще не обновлена.

См. Пример веб-реализации: https://jsfiddle.net/6983ofu2/

const baseCardPaymentMethod = {
  type: 'CARD',
  parameters: {
    allowedAuthMethods: allowedCardAuthMethods,
    allowedCardNetworks: allowedCardNetworks,
    allowCreditCards: false
  }
};

Будет интересно посмотреть, работает ли он и для Android.

1 голос
/ 15 января 2020

Я читал документацию, и самая близкая информация, которую я могу понять, это после того, как вы получите PaymentData, вы можете проверить тип карты, используя getCardClass()

PaymentData paymentData = PaymentData.getFromIntent(intent);
if (paymentData.getCardInfo().getCardClass() != WalletConstants.CARD_CLASS_DEBIT) {
    // show error to user
}
else
{
    // proceed to payment.
}

Чтение в документации здесь тип возврата getCardClass равен int, что указывает на следующее:

  • Значение константы: 1 = CARD_CLASS_CREDIT
  • Значение константы: 2 = CARD_CLASS_DEBIT
  • Значение константы: 3 = CARD_CLASS_PREPAID
  • Значение константы: 4 = CARD_CLASS_UNKNOWN

Надеюсь, это поможет.

...