2015-02-04 2 views
3

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

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

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

Корпус:

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

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

UPDATE:

На основании ответа на Райана, у меня есть новый запрос: Как вы получаете маркер для способа оплаты, выбранного из DROPIN (есть метод делегата, который возвращает метод оплаты в IOS). Есть ли способ идентифицировать метод оплаты, выбранный пользователем, поэтому я беру его за токен?

ответ

2

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

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

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

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); 
      } 
+0

Выглядит хорошо Atif, Рад, что вы смогли это выяснить! –

+0

Yup. Просто хотел убедиться, что это правильный путь? –

5

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

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

Если у вас есть другие вопросы, пожалуйста, напишите нам по адресу [email protected]

+0

Адрес: Hey Ryan благодарит за ответ. Позвольте мне спросить об этом по-другому. Как вы получаете токен для метода оплаты, выбранного из раскрывающегося списка. Есть ли способ идентифицировать метод оплаты, выбранный пользователем, поэтому я беру его за токен? –

+0

Het Atif, Извините за поздний отклик. Чтобы найти последний использованный способ оплаты, вы можете получить доступ к первой транзакции в коллекции транзакций, связанной с клиентом. Затем просмотрите данные кредитной карты. Это будет выглядеть примерно так: 'Braintree :: Customer.find ('xxx'). Transaction.first.credit_card_details.token' –

+1

Это было идентифицировано как [проблема] (https: // github. com/braintree/braintree_android/issues/23) на Android и исправлены. Будет ли это добавлено к выходу JS в ближайшее время? Это довольно неприятный недостаток интерфейса ввода-вывода. – p4sh4

Смежные вопросы