Blazor Blazer服务器:安装Braintree支付Javascript和.NET SDK及API

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库添加

我找不到任何使用Blazer服务器应用程序设置Braintree和SDK的示例

Brainstree工作流是在客户机中收集用户信用卡数据,然后客户机返回一个令牌,Brainstree将其称为Nonce。这样,用户的信用卡数据就不会通过或存储在应用程序中。您将nonce传递给服务器,然后服务器处理付款


我不知道如何使javascript与Blazer服务器一起工作,然后在服务器端需要做什么。

我能够使用Brainstree sandbox实现支付过程

  • 将Braintree javascript库添加到_Host.cshtml文件
  • 
    
  • 将Braintree函数添加到_Host.cshtml文件中(这应该放在单独的js文件中)
  • 
    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);
    });
    })
    });
    }
    
  • 创建Payment.razor文件
  • @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(错误消息); } } }