哪些Braintree业务对象ID可以提供给最终用户



Braintree API向业务对象返回各种内部ID,包括SubscriptionPlanPaymentMethod等的ID。与最终用户的应用程序(运行在用户设备上的前端代码(共享这些ID是否存在安全问题?(最终用户不会看到这些ID,但它们会通过有线传输。(

详细示例:

用户在应用程序中添加付款方式。应用服务器将请求转发给Braintree,例如:

val result = gateway.paymentMethod.create(
new PaymentMethodRequest()
.customerId(user.billing.get.braintree.customerID)
.paymentMethodNonce(nonce)
.billingAddressId(user.billing.get.braintree.addressID.get)
.options()
.makeDefault(true)
.verifyCard(true)
.failOnDuplicatePaymentMethod(false)
.done()
)

然后结果处理如下:

Option(result.getTarget)
.map {
case card: CreditCard =>
braintreePaymentMethod(
card.getClass.getCanonicalName,
card.getToken,
card.getImageUrl,
card.isDefault,
"ending " + card.getLast4
)
}
.getOrElse(throw Payments.Exception.Braintree(result.getMessage))

card.getToken返回支付方式的令牌,如界面中所示:


public interface PaymentMethod {
String getToken();
boolean isDefault();
String getImageUrl();
String getCustomerId();
List<Subscription> getSubscriptions();
}

然后,getToken获取的上述令牌用于检查支付方法的存在,此外,还用于删除、列出和更新该方法。

在应用程序内部,此令牌也可以用于识别支付方式。

回顾:与用户共享此令牌是否存在任何安全问题?

Braintree标识符和令牌对用户来说并不有趣或相关。没有理由分享它们。卡片的最后4个是你需要展示的全部内容,以备日后参考。

我认为与用户共享脑树标识符没有任何意义。

如果你想在这些支付或地址上提供一些功能,那么这些功能应该通过你的api。

理想情况下,您不应该直接向用户公开脑树域模型(这是几乎所有第三方域模型的标准pactice(。您可以在脑树域模型之上创建自己的域模型。你所有的api都将围绕你的域模型,它将代理大脑树域模型。

如果必须使用它,那没关系。中间件可以用来确保这里的安全性。

相关内容

  • 没有找到相关文章