Braintree仅Vault流:创建PayPal支付方式Token的正确方案(新客户)
Braintree仅存储支付方式Token方案分析
两种方案的可行性
方案1:创建Customer并提取支付方式Token
这个方案完全可行,是Braintree Vault流程的标准用法。创建Customer时传入前端返回的payment method nonce,Braintree会自动将该支付方式绑定到新创建的Customer账户下,你可以从返回的Customer对象中提取支付方式Token并存储,用于后续支付操作。
代码示例:CustomerRequest request = new CustomerRequest() .firstName("Fred") .lastName("Jones") .paymentMethodNonce(nonceFromTheClient); Result<Customer> result = gateway.customer().create(request); result.isSuccess(); // true Customer customer = result.getTarget(); customer.getId(); // e.g. 160923 customer.getPaymentMethods().get(0).getToken(); // e.g. f28w 这里获取到的就是可存储的支付方式Token方案2:直接创建PaymentMethod
这个方案本身可行,但不能填虚假的dummy customerId——Braintree要求传入的customerId必须是系统中已存在的有效Customer ID,否则请求会直接失败。如果没有现成的Customer,你还是得先创建一个Customer,再用其ID来创建PaymentMethod,反而多了额外步骤,效率不如方案1。
代码示例(需使用真实Customer ID):PaymentMethodRequest request = new PaymentMethodRequest() .customerId("131866") // 必须为Braintree中已存在的Customer ID .paymentMethodNonce(nonceFromTheClient); Result<? extends PaymentMethod> result = gateway.paymentMethod().create(request);
新客户且无需关注Customer ID场景的正确做法
针对你的需求(新客户、仅需存储支付方式Token、不向客户收费),方案1是标准且正确的选择:
- 无需额外提前创建Customer,一步完成Customer创建与支付方式绑定;
- 即使你不需要关注返回的Customer ID,依然可以顺利提取到所需的支付方式Token;
- 完全符合Braintree的Vault设计逻辑,后续如果需要关联客户信息,也可以基于该Customer ID进行扩展。
内容的提问来源于stack exchange,提问作者user3277841
相关产品推荐
相关产品推荐

