私はChargeBeeのAPI + BraintreeJS(PCI準拠を取得するのが最も簡単です)を使用して、BraintreeにChargebeeを統合しようとしています。ここでは、使用できるメソッドのリンクがあります(https://www.chargebee.com/docs/braintree.html)。その文書に基づいて、私はこれらの手順BraintreeJS paymentnonceペイロードをASP.NET Webフォームに渡す
1)使用BraintreeJSは、すべてのホストされたフィールドをトークン化し、支払ナンス 3を得るために、ブレーントリーAPIに送信する).NET 2のためのブレインSDKを使用してclientTokenの生成であると結論付けることができます)を使用しますChargeBee SDK for .NETを使用して、チャージビーでサブスクリプションを作成するための支払いノンスを送信
私は(1)と(2)をやりましたが、私の問題はポストバック中にどのように支払いノンスを読むことができますか?私は私のコード
<script>
var form = document.querySelector('#cardForm');
var authorization = '<%=clientToken%>';
braintree.client.create({
authorization: authorization
}, function (err, clientInstance) {
if (err) {
console.error(err);
return;
}
createHostedFields(clientInstance);
});
function createHostedFields(clientInstance) {
braintree.hostedFields.create({
client: clientInstance,
styles: {
'input': {
'font-size': '16px',
'font-family': 'courier, monospace',
'font-weight': 'lighter',
'color': '#ccc'
},
':focus': {
'color': 'black'
},
'.valid': {
'color': '#8bdda8'
}
},
fields: {
number: {
selector: '#card-number',
placeholder: '4111 1111 1111 1111'
},
cvv: {
selector: '#cvv',
placeholder: '123'
},
expirationDate: {
selector: '#expiration-date',
placeholder: 'MM/YYYY'
},
postalCode: {
selector: '#postal-code',
placeholder: '11111'
}
}
}, function (hostedFieldsErr, hostedFieldsInstance) {
if (hostedFieldsErr) {
console.error(hostedFieldsErr);
return;
}
submit.removeAttribute('disabled');
form.addEventListener('submit', function (event) {
event.preventDefault();
hostedFieldsInstance.tokenize(function (tokenizeErr, payload) {
if (tokenizeErr) {
console.error(tokenizeErr);
return;
}
// If this was a real integration, this is where you would
// send the nonce to your server.
var noncestr = payload.nonce
alert(noncestr); // Confirm nonce is received.
console.log('Got a nonce: ' + payload.nonce);
$('#paymentmethodnonce').attr("value", noncestr); // Add nonce to form element.
form.submit();
});
}, false);
});
}
</script>
<body>
<div class="demo-frame">
<form action="/" method="post" id="cardForm">
<label class="hosted-fields--label" for="card-number">Card Number</label>
<div id="card-number" class="hosted-field"></div>
<label class="hosted-fields--label" for="expiration-date">Expiration Date</label>
<div id="expiration-date" class="hosted-field"></div>
<label class="hosted-fields--label" for="cvv">CVV</label>
<div id="cvv" class="hosted-field"></div>
<label class="hosted-fields--label" for="postal-code">Postal Code</label>
<div id="postal-code" class="hosted-field"></div>
<div class="button-container">
<input type="submit" class="button button--small button--green" value="Purchase" id="submit" />
</div>
<asp:Label runat="server" ID="lblResult"></asp:Label>
</form>
</div>
<script src="https://js.braintreegateway.com/web/3.8.0/js/client.js"></script>
<script src="https://js.braintreegateway.com/web/3.8.0/js/hosted-fields.js"></script>
</body>
</html>
public partial class Default : System.Web.UI.Page
{
protected string clientToken;
private BraintreeGateway gateway = new BraintreeGateway
{
Environment = Braintree.Environment.SANDBOX,
MerchantId = "xxx",
PublicKey = "xxx",
PrivateKey = "xxx"
};
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//generate clienttoken from braintree sdk
clientToken = gateway.ClientToken.generate();
}
else
{
var paymentnonce = Request.Form["paymentmethodnonce"];
}
}
}
ありがとうございました。私はそれを追加しました。ここでの問題は、私の提出がポストバックをしないということです。どんな手掛かり? – mraswinc
@mraswinc:私は大きな説明はできませんが、[ClientScript.GetPostBackEventReference(this、string.Empty); '](https://msdn.microsoft.com/en-us/)私自身の統合で 'IsPostBack'をチェックする前に、私たち/ライブラリ/ system.web.ui.clientscriptmanager.getpostbackeventreference(v = vs.110).aspx)このコールは、正しくチェックできるようにポストバックイベントを設定する必要があります。 – jake