我正在尝试通过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
答案 0 :(得分:2)
我已经解决了这个问题。我只是将行StripeConfiguration.SetApiKey(sk_test_BQokikJOvBiI2HlWgH4olfQ2);