Blazor Blazer服务器:安装Braintree支付Javascript和.NET SDK及API
我找不到任何使用Blazer服务器应用程序设置Braintree和SDK的示例 Brainstree工作流是在客户机中收集用户信用卡数据,然后客户机返回一个令牌,Brainstree将其称为Nonce。这样,用户的信用卡数据就不会通过或存储在应用程序中。您将nonce传递给服务器,然后服务器处理付款Blazor Blazer服务器:安装Braintree支付Javascript和.NET SDK及API,blazor,blazor-server-side,braintree,Blazor,Blazor Server Side,Braintree,我找不到任何使用Blazer服务器应用程序设置Braintree和SDK的示例 Brainstree工作流是在客户机中收集用户信用卡数据,然后客户机返回一个令牌,Brainstree将其称为Nonce。这样,用户的信用卡数据就不会通过或存储在应用程序中。您将nonce传递给服务器,然后服务器处理付款 我不知道如何使javascript与Blazer服务器一起工作,然后在服务器端需要做什么。我能够使用Brainstree sandbox实现支付过程 将Braintree javascript库添加
我不知道如何使javascript与Blazer服务器一起工作,然后在服务器端需要做什么。我能够使用Brainstree sandbox实现支付过程
window.brainstreePayment=(clientToken,dotNetObject)=>{
//警报(clientToken);
var按钮=document.querySelector(“#提交按钮”);
braintree.dropin.create({
授权:clientToken,
选择器:“#dropin容器”
},函数(错误,实例){
按钮。addEventListener('click',函数(){
requestPaymentMethod(函数(requestPaymentMethodErr,有效负载){
if(requestPaymentMethodErr){
//没有可用的付款方式。
//相应的错误将显示在UI中。
错误(requestPaymentMethodErr);
返回;
}
dotNetObject.invokeMethodAsync('MakePayment',payload.nonce);
});
})
});
}
@page”/PaymentSubmit/“
@使用智能树;
@使用Microsoft.Extensions.Logging;
@注入IJSRuntime JSRuntime;
@注入ILogger记录器;
金额:
支付
PaymentTransactionId:@PaymentTransactionId
@代码{
公共字符串ClientToken{get;set;}
公共字符串Nonce{get;set;}
公共字符串金额{get;set;}
公共字符串PaymentTransactionId{get;set;}
公共BraintreeGateway=新BraintreeGateway
{
环境=Braintree.Environment.SANDBOX,
MerchantId=“GetFromBraintree”,
PublicKey=“GetFromBraintree”,
PrivateKey=“GetFromBraintree”
};
AfterRenderAsync(bool firstRender)上受保护的重写异步任务
{
if(firstRender)
{
ClientToken=gateway.ClientToken.Generate();
var dotNetReference=DotNetObjectReference.Create(此);
等待JSRuntime.InvokeVoidAsync(“brainstreePayment”、ClientToken、dotNetReference);
}
}
[JSInvokable(“MakePayment”)]
公共作废付款(字符串Nonce)
{
logger.LogWarning(Nonce);
logger.LogWarning(金额);
十进制新金额=转换为十进制(金额);
var request=新事务处理请求
{
金额=新金额,
PaymentMethodNonce=Nonce,
选项=新事务选项请求
{
SubmitForSettlement=true
}
};
结果=gateway.Transaction.Sale(请求);
if(result.issucess())
{
事务=结果。目标;
logger.LogWarning(“交易成功”);
PaymentTransactionId=交易.Id;
StateHasChanged();
@*重定向*@
}
else if(result.Transaction!=null)
{
@*重定向*@
logger.LogWarning(“事务空”);
}
其他的
{
字符串errorMessages=“”;
foreach(result.Errors.DeepAll()中的ValidationError错误)
{
errorMessages+=“Error:”+(int)Error.Code+“-”+Error.Message+“\n”;
}
logger.LogWarning(“事务错误”);
logger.LogWarning(错误消息);
}
}
}