Braintree не обновляет предпочитаемый пользователем / способ оплаты по умолчанию

Когда клиент хочет выбрать способ оплаты при создании заказа на продажу, я вижу, что он изменился в DropInUI (небольшая отметка), и я предполагаю, что он должен стать методом оплаты по умолчанию, но это не то, что происходит на моем сервере, я все равно получаю токен оплаты за первый.

Вот что я делаю:

String token = btGateway.customer().find(customerId).getDefaultPaymentMethod().getToken().toString();

Случай:

  • Клиент А размещает заказ с помощью своей кредитной карты - All Good
  • Клиент А размещает другой заказ, на этот раз добавляя учетную запись PayPal, и падение пользовательского интерфейса показывает два варианта, клиент выбирает свой предпочтительный способ оплаты - все хорошо

На моем сервере я не получаю другой платежный токен для кредитной карты и PayPal.

ОБНОВИТЬ:

Основываясь на ответе Райана, у меня есть новый запрос: как получить токен для метода оплаты, выбранного из выпадающего списка (есть ли метод делегата, который возвращает метод оплаты в iOS). Есть ли способ определить способ оплаты, выбранный пользователем, чтобы я получил токен для него?

2 ответа

Решение

Хорошо, после приятных комментариев Райана и здесь. Я нашел способ сделать мой метод оплаты по умолчанию и получить его токен, чтобы сделать продажу позже. Позже, поскольку я использую торговую площадку, я не могу создать продажу с платой за обслуживание, поэтому я выбрал способ оплаты с токена и продолжил делать продажи. Не уверен, что то, что я сделал, - лучший способ, но оно служит цели.

Вот что я сделал:

Сделайте выбор способа оплаты пользователем по умолчанию и сохраните его токен:

if(customerId!=null){
            PaymentMethodRequest request = new PaymentMethodRequest()
            .customerId(customerId)
            .paymentMethodNonce("paymentMethodNonceFromClient")
            .options()
                .makeDefault(true)
            .done();

            Result<PaymentMethod> result = (Result<PaymentMethod>) btGateway.paymentMethod().create(request);
            if(result.isSuccess())
                token = btGateway.customer().find(customerId).getDefaultPaymentMethod().getToken().toString();

Позже при совершении транзакции найдите способ оплаты и примените комиссию, если это Кредитная карта:

PaymentMethod payMethod = btGateway.paymentMethod().find(token);
            if(payMethod instanceof CreditCard){
                request = new TransactionRequest()
                .amount(new BigDecimal(txnAmount))
                .paymentMethodToken(token)
                .merchantAccountId("merchantAccountId")
                .serviceFeeAmount(new BigDecimal(serviceFee));
            }else{
                request = new TransactionRequest()
                .amount(new BigDecimal(txnAmount))
                .paymentMethodToken(token);
            }

Когда вы выбираете способ оплаты из DropIn, этот способ оплаты не устанавливается автоматически по умолчанию клиента. Если вы хотите установить способ оплаты по умолчанию, вы можете сделать это через SDK.

Карта, отображаемая в DropIn, является последней использованной картой.

Если у вас есть другие вопросы, пожалуйста, напишите нам по адресу support@braintreepayments.com.

Другие вопросы по тегам