在 Braintree 交易后确定客户 ID 并保存付款方式

Deciding on customer id and saving payment method after transaction in Braintree

我想在我们的网站上使用 Braintree 支付网关实现以下工作流程:登录或未登录的客户使用信用卡付款(使用 Braintree 托管字段)。如果付款成功但客户没有登录,我们会建议他登录或注册以保存付款方式。

不幸的是,这意味着在 Transaction.sale 中我不能使用现有的客户 ID,因为客户尚未登录我们的系统。交易完成后,我无法重复使用付款随机数来创建付款方式并将其分配给我们的客户。

我正在考虑的一种可能性是在交易期间始终使用付款方式(使用新的 Braintree 客户 ID),而不是在用户登录时将此客户 ID 分配给我们的用户帐户。但是,这可能会导致用户拥有多个 Braintree 客户 ID,这会使以后使用保存的卡进行的付款变得复杂。 (另外,我必须保管大量虚假客户和付款方式,因为我们的大多数客户从不创建用户帐户,因此这些假客户和付款方式将永远不会再使用。)有没有更好的方法?

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

你是对的。要实现此流程,您需要每次都创建一个新的客户和付款方式。好消息是 Transaction.sale 不需要客户 ID,只需要 payment method token,因此您可以将支付方式令牌与应用程序的客户 ID 相关联,而无需维护与Braintree 控制面板中的客户。

要清理,您可以执行以下操作:

1) 如果用户拒绝保存支付方式的选项,立即删除客户和支付方式令牌。

2) 如果用户在没有做出任何决定的情况下关闭应用程序,您可以有一个定期流程来清理无人认领的客户和支付方式令牌。