如何使用BrainTree API对存储在Vault中的卡进行3D安全交易

时间:2015-07-05 17:26:12

标签: asp.net braintree

我在我的Dotnet webform应用程序中尝试了braintree API,并且能够成功创建事务。现在我陷入了为Braintree Vault中存储的卡设置3D安全验证交易的问题之一。

在他们提到的API中,传递NONCE FROM SERVER并从客户端传递金额以验证交易。但是我无法得到那个链接。在访问Liability Shifted概念时,我也非常困惑。我可以对此有更好的解释吗?

我已经彻底完成了API,但无法弄清楚这个问题。

我的要求:我需要在我的应用程序中为已启用3D Secure的卡创建3DSecure事务。但是,如果客户没有启用3D安全,我应该能够完成交易。(我通过将3D Secure - Required属性从服务器端传递给false来理解) 现在,我还需要将卡详细信息保存在Vault for Saved Cards Section中。因此,当我试图调用3DSecure for Saved cards部分时,从客户端生成的response.nonce与在服务器端生成的Nonce相同。所以它说已经使用了NONCE。

所以请在这方面帮助我。提前谢谢。

SRIKANTH

1 个答案:

答案 0 :(得分:1)

我在Braintree担任开发人员。如果您的服务器和客户端代码为integrated properly,则客户端上verify3DS()方法返回的nonce应与服务器上最初生成的nonce不同。

服务器端:使用付款方式令牌在您的服务器上生成付款方式随机数。

// Generate a nonce for the payment method on your server

var result = gateway.PaymentMethodNonce.Create("PaymentMethodToken");
var nonce = result.Target.Nonce;

注意:我正在努力在我们的documentation中包含这样的代码段,以防止将来出现关于如何在服务器上生成随机数的混淆。

客户端:使用服务器中的nonce验证卡。然后使用客户端的nonce完成交易。

var paymentMethodNonce = 'nonce_from_server';

client.verify3DS({
  amount: 500,
  creditCard: paymentMethodNonce
}, function (error, response) {
  if (!error) {
    // 3D Secure finished. 
    // Use nonce in response to create transaction. This should be different from the nonce created on your server.

    // console.log(response.nonce);
  } else {
    // Handle errors
  }
});

至于您关于责任转移的问题,3D-Secure协议可以将欺诈责任从您作为商家转移到发卡机构depending on which parties participate in 3D-Secure

回调中的响应对象包含有关责任是否转移的详细信息,或者是否可以对给定的付款方式进行责任转移。

client.verify3DS({
  amount: 500,
  creditCard: paymentMethodNonce
}, function (error, response) {
  if (!error) {
    // Response will also include liability shift details for you to use

    // console.log(response.verificationDetails);
  } else {
    // Handle errors
  }
});

我建议您重新访问what to do with the liability shift response values上的文档。希望有所帮助!