StripeException:没有这样的计划

时间:2019-01-07 17:33:10

标签: c# asp.net-mvc stripe-payments

我正在创建客户对象并将其分配给Stripe中的计划,并收到错误消息“不存在这样的计划”。错误中给出的计划ID是正确的计划ID:No such plan: prod_EIcYiWkVa7LF7T

可能值得注意的是,客户的StripeCustomerId也未写入数据库,但这可能是因为稍后代码失败,因此未进行任何更改。

 [HttpPost]
        [Authorize]
        public ActionResult Subscribe(SubscribeViewModel model)
        {

            string CurrentUserId = User.Identity.GetUserId();
            var CurrentUser = UserManager.FindById(CurrentUserId);


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

            var custoptions = new CustomerCreateOptions
            {
                Description = "Customer object for " + CurrentUser.Email,
                SourceToken = model.StripeToken
            };

            var custservice = new CustomerService();
            Customer customer = custservice.Create(custoptions);

            CurrentUser.StripeCustomerId = customer.Id;

            var items = new List<SubscriptionItemOption>
            {
                new SubscriptionItemOption
                {
                    PlanId = db.Plans.Where(a=>a.Id == CurrentUser.Plan).FirstOrDefault().StripePlanId
                }
            };
            var options = new SubscriptionCreateOptions
            {
                CustomerId = CurrentUser.StripeCustomerId,
                Items = items
            };

            var service = new SubscriptionService();
            Subscription subscription = service.Create(options);


            CurrentUser.PlanStatus = "TRIAL";
            CurrentUser.ExpirationDate = DateTime.Now.AddDays(model.Plan.TrialDays);
            var Plan = db.Plans.Where(a => a.Id == CurrentUser.Plan).FirstOrDefault();
            return RedirectToAction("Index", "Home");
        }

2 个答案:

答案 0 :(得分:4)

这是在上面作为评论发布的,但是我将其添加为对@karllekko的歉意,因为我几乎没有通过就通过了它。

您要使用计划ID plan_xxxxx,而不是产品ID prod_xxxxx。我犯了同样的错误,即创建多个产品而不是一个具有多个价格计划的产品。

创建一个产品,然后针对您的“金”,“银”,“铜”等价格为每个产品设置多个计划,并在代码中使用这些plan_xxxxx ID来创建订阅。

答案 1 :(得分:1)

请使用价格 API Id 而不是上面的 prod_ID。

如图所示,它对我有用。 enter image description here