Braintree 未更新用户 preferred/default 付款方式
Braintree not updating user preferred/default payment method
当客户在创建销售订单时想要选择他的付款方式时,我看到它在 DropInUI 中发生了变化(小勾号),我认为这应该成为默认付款方式,但我的服务器并不是这样, 我仍然得到第一个的支付令牌。
这是我正在做的事情:
String token = btGateway.customer().find(customerId).getDefaultPaymentMethod().getToken().toString();
案例:
- 客户 A 使用他的信用卡下订单 - 一切正常
- 客户A下了另一个订单,这次添加了一个paypal账户,ui中的drop显示了两个选项,客户选择了他喜欢的付款方式-很好
在我的服务器上,我没有为信用卡和 paypal 获得不同的支付令牌。
更新:
根据 Ryan 的回答,我有一个新的问题:如何获取从 dropin 中选择的付款方式的令牌(是否有委托方法 returns [=32] 中的付款方式=]).有没有办法识别用户选择的付款方式,以便我为其获取令牌?
当您 select 来自 DropIn 的支付方式时,该支付方式不会自动设置为客户的默认设置。如果您想设置默认付款方式,可以通过 the SDK.
进行设置
显示在 DropIn 中的卡片是最近使用的卡片。
如果您有任何其他问题,请随时发送电子邮件至 support@braintreepayments.com。
好吧,在 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);
}
当客户在创建销售订单时想要选择他的付款方式时,我看到它在 DropInUI 中发生了变化(小勾号),我认为这应该成为默认付款方式,但我的服务器并不是这样, 我仍然得到第一个的支付令牌。
这是我正在做的事情:
String token = btGateway.customer().find(customerId).getDefaultPaymentMethod().getToken().toString();
案例:
- 客户 A 使用他的信用卡下订单 - 一切正常
- 客户A下了另一个订单,这次添加了一个paypal账户,ui中的drop显示了两个选项,客户选择了他喜欢的付款方式-很好
在我的服务器上,我没有为信用卡和 paypal 获得不同的支付令牌。
更新:
根据 Ryan 的回答,我有一个新的问题:如何获取从 dropin 中选择的付款方式的令牌(是否有委托方法 returns [=32] 中的付款方式=]).有没有办法识别用户选择的付款方式,以便我为其获取令牌?
当您 select 来自 DropIn 的支付方式时,该支付方式不会自动设置为客户的默认设置。如果您想设置默认付款方式,可以通过 the SDK.
进行设置显示在 DropIn 中的卡片是最近使用的卡片。
如果您有任何其他问题,请随时发送电子邮件至 support@braintreepayments.com。
好吧,在 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);
}