我如何使用 Braintree 保存客户卡信息,以便稍后他们购物时我可以从中扣款?

How do I save customer card information with Braintree so that I can then charge it later when they make purchases?

因此,在我的 iOS 应用程序(和 Java 后端)中,用户可以购买东西。当他们创建帐户时,他们需要向我们提供他们的支付卡信息。我希望能够在他们的帐户在应用程序中创建时保存此卡信息,并将其绑定到将用于查找的 UUID。此外,每当用户想要购买东西时,我希望能够根据他们的 UUID 轻松获取他们在注册时提供的付款信息,并从存储在其中的卡中扣款。这似乎是 Braintree 的一个极其常见的用例,但我无法在网上找到有关如何实现它的示例,我被卡住了。

那么我该如何:

  1. 根据UUID保存用户关联的卡信息? 和
  2. 根据UUID查卡信息,然后充值?

完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系 support.

创建客户时,您可以specify a customer ID and associate a payment method:

CustomerRequest request = new CustomerRequest()
    .id("customer_123")
    .paymentMethodNonce(nonceFromTheClient);

Result<Customer> result = gateway.customer().create(request);

为了稍后使用客户 ID 查找客户的付款方式信息,您可以调用 Customer.find() 然后检索该客户的付款方式:

Customer customer = gateway.customer().find("customer_123");
customer.getPaymentMethods().get(0).getToken();

或者,您可以create a transaction with a customer ID and an amount,这将自动使用客户的默认付款方式:

TransactionRequest request = new TransactionRequest()
    .customerId("customer_123")
    .amount(new BigDecimal("10.00"));

Result<Transaction> result = gateway.transaction().sale(request);

这里有一些关于 creating transactions and accepting credit cards with Braintree 的一般文档。