我在我的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
答案 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上的文档。希望有所帮助!