java—哪些braintree业务对象ID可供最终用户使用

pw9qyyiw  于 2021-07-05  发布在  Java
关注(0)|答案(3)|浏览(323)

braintreeapi将各种内部id返回给业务对象,包括 Subscription , Plan , PaymentMethod ,等等。与最终用户的应用程序(在用户设备上运行的前端代码)共享这些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 然后用来检查是否存在支付方法,此外,还用来删除、列出和更新方法。
在应用程序内部,这个令牌也可以用来识别支付方式。
回顾:与用户共享此令牌是否存在任何安全问题?

9wbgstp7

9wbgstp71#

大脑树标识符和标记对用户不感兴趣或不相关。没有理由分享它们。卡片的最后4张是您需要展示的全部内容,以供日后参考。

qlfbtfca

qlfbtfca2#

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

p1iqtdky

p1iqtdky3#

我认为与用户共享braintree标识符没有任何意义。
如果您想在这些支付或地址上提供一些功能,那么这些应该通过您的api。
理想情况下,您不应该直接向用户公开braintree域模型(这是几乎所有第三方域模型的标准约定)。您可以在braintree域模型的基础上创建自己的域模型。你所有的api都将围绕你的域模型,它将代理braintree域模型。

相关问题