我正在使用BrainTree drop-in UI,我按如下方式生成客户端令牌:
token = Braintree::ClientToken.generate(customer_id: some_id, options: {make_default: true })
然后通过以下方式更新客户:
Braintree::Customer.update(
some_id,
payment_method_nonce: options[:payment_method_nonce]
)
但是,所选信用卡未设置为默认信用卡,因为检查customer.default_payment_method
始终返回同一张卡。那么在更新客户时更新默认付款方式的任何线索都是什么?
修改
经过一些调查后,我似乎在添加新的付款方式时将其设置为默认付款方式,但是在选择已保存的付款方式时,它未设置为默认付款方式。
我最终使用了以下代码:
Braintree::PaymentMethod.create(
customer_id: some_id,
payment_method_nonce: options[:payment_method_nonce],
options: {
make_default: true
}
)
答案 0 :(得分:0)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support。
这是正确的 - 您配置的Drop-in UI会将新创建的付款方式设为默认值,但不会对客户选择的现有付款方式执行相同操作特定交易。
为了获得您正在寻找的结果,我建议您使用credit card token from the transaction result object更新付款方式,如this example所示:
result = Braintree::PaymentMethod.update(
"the_token",
:options => {
:make_default => true
}
)