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

时间:2015-02-04 11:22:11

标签: java ios payment braintree

当客户想要在创建销售订单时选择他的付款方式时,我看到它在DropInUI(小刻度标记)中发生了变化,我认为这应该成为默认付款方式,但这不是我服务器上发生的情况,我仍然会获得第一个的付款令牌。

这就是我正在做的事情:

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

案例:

  • 客户A使用信用卡下订单 - 全部好
  • 客户A下了另一个订单,这次添加了一个paypal帐户,ui下降显示两个选项,客户选择他的首选付款方式 - 一切顺利

在我的服务器上,我没有为信用卡和PayPal获得不同的付款令牌。

更新

根据Ryan的回答,我有一个新的问题:如何获得从dropin中选择的付款方式的令牌(是否有一种在iOS中返回付款方式的委托方法)。有没有办法识别用户选择的付款方式,以便我为它获取令牌?

2 个答案:

答案 0 :(得分:5)

当您从DropIn中选择付款方式时,该付款方式不会自动设置为客户的默认设置。如果您要设置默认付款方式,可以通过the SDK

执行此操作

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

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

答案 1 :(得分:2)

好吧,经过Ryan和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();

稍后在进行交易时会找到付款方式,如果是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);
            }