Braintree不更新用户首选/默认付款方式

当客户想要在创build销售订单时select他的付款方式时,我发现它在DropInUI(小勾号)中发生了变化,我认为这应该成为默认付款方式,但这不是发生在我的服务器上,我仍然得到第一个支付令牌。

这是我正在做的事情:

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

案件:

  • 客户A用他的信用卡下单 – All Good
  • 客户A下了另一个订单,这次添加一个PayPal账户,并且ui下降显示两个选项,客户select他的首选付款方式 – 所有的好

在我的服务器,我没有得到不同的信用卡和贝宝支付令牌。

更新:

基于瑞安的答案,我有一个新的查询:你如何获得从下拉列表中select的付款方式的令牌(是否有委托方法返回iOS中的付款方式)。 有没有一种方法来识别用户select的付款方式,所以我为它取得令牌?

当您从DropIn中select付款方式时,该付款方式不会自动根据客户的默认设置进行设置。 如果您想设置默认付款方式,您可以通过SDK来完成 。

显示在DropIn中的卡是最近使用的卡。

如果您有任何其他问题,请随时给我们发电子邮件support@braintreepayments.com。

好了,经过Ryan和这里的很好的投入。 我想出了一种方法来使我的付款方式成为默认,并取得它的代币,以便稍后进行销售。 后来,因为我在使用市场,所以我无法创build一个服务费的销售,所以我从令牌中提取了付款方式,然后进行销售。 不知道我做了什么是最好的方法,但它是为了达到目的。

以下是我所做的:

将用户select的付款方式设置为默认值并保存其令牌:

 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(); 

在进行交易时,如果是CreditCard,则在稍后查找付款方式并申请费用:

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