Braintree v2将nonce帖子发回服务器

时间:2015-02-17 17:32:08

标签: c# asp.net forms braintree

我正在尝试从" v2 / braintree.js"获取nonce字符串。如何在链接按钮上触发回发服务器的帖子单击以生成随机数字符串?我想以这种方式检索它:

Request.Form["payment_method_nonce"].ToString();

在旧版本" v1 / braintree.js"单击按钮时我使用了以下内容。

function submit_data() {
            var braintree = Braintree.create('------key-------');
            braintree.encryptForm('braintree-payment-form');
        }

1 个答案:

答案 0 :(得分:1)

由于我想在帖子上访问nonce字符串并验证帖子上的所有字段,我使用了以下内容。我遇到的问题是nonce字符串是异步计算的。

我创建了

<asp:HiddenField ID="nonce_hidden" ClientIDMode="Static" runat="server" />

然后在链接按钮上购买我做了这个

<a href="#!" class="button" onclick="get_nonce_data();">Purchase</a>

然后我创建了一个不可见的链接按钮,点击后会回发到服务器。

<asp:LinkButton ID="cc_payment_next_btn" ClientIDMode="Static" runat="server" OnClick="cc_payment_next_btn_Click"></asp:LinkButton>

“购买”链接启动脚本以标记信用卡信息并将随机数字符串保存为隐藏值。一旦计算了nonce字符串,它就会触发我点击的隐藏链接按钮上的“click”,然后将其发回服务器。

function get_nonce_data() {var first_name = document.getElementById("first_name_txt").value;var last_name = document.getElementById("last_name_txt").value;var zip_code = document.getElementById("zip_code_txt").value;var client = new braintree.api.Client({ clientToken: "client-token" });client.tokenizeCard({number: document.getElementById("cc_number_txt").value,cardholderName: first_name + ' ' + last_name,expirationDate: document.getElementById("cc_expiration_txt").value,cvv: document.getElementById("cc_ccv_txt").value,billingAddress: {postalCode: zip_code}}, function (err, nonce) {if (err === null) {document.getElementById("nonce_hidden").value = nonce;$('#cc_payment_next_btn')[0].click();}else {alert('An error has occured');}});}

然后在后端完成所有验证和处理。