使用Stripe进行Asp.NET MVC支付的例外情况?

时间:2017-11-18 14:26:55

标签: asp.net-mvc stripe-payments

我正在尝试通过Stripe在我的网站上添加付款,但我有一个异常抛出,我不知道如何解决它。我正在关注this示例和this,但仍无法使其有效。

我该如何解决?

控制器buyPack

public ActionResult buyPackPesquisas(){
        BuyPackPesquisasModel model = new BuyPackPesquisasModel();

        model.valor = ConfigPackPesquisas.valor;
        model.valorCents = ConfigPackPesquisas.valorCents;

        model.qtdPesquisas = ConfigPackPesquisas.qtdPesquisas;
        Usuario u = Session["Usuario"] as Usuario;
        model.nomeUsuario = CapitalizeText.capitalize(u.nome);
        model.emailusuario = u.email;

        Usuario usuario = new UsuarioDAO().findObject(u.id);
        model.qtdCreditoCorrente = usuario.qtdPesquisas;

        //stripe
        model.stripePublishKey = "pk_test_6pRNASCoBOKtIshFeQd4XMUh";

        return View(model);
    }

HTML buyPackPesquisas

@using (Html.BeginForm("Charge", "Usuario", FormMethod.Post)){
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

<script src="//checkout.stripe.com/v2/checkout.js"
                            class="stripe-button"
                            data-key="@Model.stripePublishKey"
                            data-locale="auto"
                            data-name="MyApplication"
                            data-description="Buy Crédit"
                            data-email="@Model.emailusuario"
                            data-label="Buy Now"
                            data-amount="@Model.valorCents">
                    </script>

}

控制器费用

public ActionResult Charge(string stripeEmail, string stripeToken){
        //card to test: 4242 4242 4242 4242        
        var customers = new StripeCustomerService();
        var charges = new StripeChargeService();

        var customer = customers.Create(new StripeCustomerCreateOptions{
            Email = stripeEmail,
            SourceToken = stripeToken
        });

        var charge = charges.Create(new StripeChargeCreateOptions{
            Amount = ConfigPackPesquisas.valorCents,
            Description = "Créditos Pesquisa",
            Currency = "usd",
            CustomerId = customer.Id
        });

        //update user informations
        UsuarioDAO dao = new UsuarioDAO();
        Usuario u = Session["Usuario"] as Usuario;
        Usuario usuario = dao.findObject(u.id);
        usuario.qtdPesquisas = ConfigPackPesquisas.qtdPesquisas;
        dao.update(usuario);

        return View();
    }

Global.asax中

StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["sk_test_BQokikJOvBiI2HlWgH4olfQ2"]);

异常

[StripeException: You did not provide an API key, though you did set your Authorization header to "Bearer". Using Bearer auth, your Authorization header should look something like 'Authorization: Bearer YOUR_SECRET_KEY'. See https://stripe.com/docs/api#authentication for details, or we can help at https://support.stripe.com/.]
   Stripe.Infrastructure.Requestor.ExecuteRequest(HttpRequestMessage requestMessage) +268
   Stripe.Infrastructure.Requestor.PostString(String url, StripeRequestOptions requestOptions) +80
   Stripe.StripeCustomerService.Create(StripeCustomerCreateOptions createOptions, StripeRequestOptions requestOptions) +111
   UsuarioController.Charge(String stripeEmail, String stripeToken) in c:\Users\fernando\Documents\Visual Studio 2013\Projects\InvestimentosUSA\InvestimentosUSA\Controllers\UsuarioController.cs:627
   lambda_method(Closure , ControllerBase , Object[] ) +245
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +59
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +435
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +60
   System.Web.Mvc.Async.ActionInvocation.InvokeSynchronousActionMethod() +76
   System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +36
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +73
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +44
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9657896
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

1 个答案:

答案 0 :(得分:2)

我已经解决了这个问题。我只是将行StripeConfiguration.SetApiKey(sk_test_BQokikJOvBiI2HlWgH4olfQ2);

添加到Global.asax中