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

Posted

技术标签:

【中文标题】Braintree 未更新用户首选/默认付款方式【英文标题】:Braintree not updating user preferred/default payment method 【发布时间】:2015-04-03 21:36:55 【问题描述】:

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

这就是我正在做的事情:

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

案例:

客户 A 用他的信用卡下单 - All Good 客户 A 下订单,这次添加了一个 paypal 帐户,ui 中的下拉显示两个选项,客户选择他喜欢的付款方式 - 很好

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

更新:

根据 Ryan 的回答,我有一个新查询:如何获取从 dropin 中选择的支付方式的令牌(ios 中是否有返回支付方式的委托方法)。有没有办法识别用户选择的付款方式,以便我为其获取令牌?

【问题讨论】:

【参考方案1】:

好的,在 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();

稍后在进行交易时查找付款方式并收取费用(如果是信用卡):

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

【讨论】:

是的。只是想确保这是正确的方法?【参考方案2】:

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

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

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

【讨论】:

嗨瑞恩感谢您的回复。让我换个方式问吧。您如何获取从 dropin 中选择的付款方式的令牌。有没有办法识别用户选择的付款方式,以便我为其获取令牌? Het Atif,抱歉回复晚了。为了找到最近使用的付款方式,您可以访问与客户关联的交易集合中的第一笔交易。然后查看信用卡详细信息。这最终会看起来像这样:Braintree::Customer.find('xxx').transactions.first.credit_card_details.token 这已在 android 上被识别为 issue 并已修复。这会很快添加到 JS 插件中吗?这是插入式 UI 的一个相当糟糕的缺点。

以上是关于Braintree 未更新用户首选/默认付款方式的主要内容,如果未能解决你的问题,请参考以下文章

Paypal vs Braintree 用户对用户付款

如何使用 Braintree 在客户端显示客户的付款方式?

Braintree 的 PayPal 付款中未显示金额

Braintree Apple Sandbox Pay 扫描指纹 iOS 后显示付款未完成错误

BrainTree:获取所有客户的付款方式

Braintree 中的付款方式令牌无效