2016-08-05 6 views
3

Stripe.netメソッドが見つかりません: 'ボイドStripe.StripeCustomerCreateOptions.set_Card(Stripe.StripeCreditCardOptionsを)' 私は、最新Stripe.netのバージョンを使用してい

await SubscriptionsFacade.SubscribeUserAsync(user, planId, taxPercent: taxPercent); 

[MissingMethodExceptionを発生させます。方法を'Void Stripe.StripeCustomerCreateOptions.set_Card(Stripe.StripeCreditCardOptions)']

何か変更がありますか?私は最新のバージョンに更新し、今私のStripe.netアプリが壊れています。ストライプはカードを作る新しい方法を導入しましたか?私の知る限りSubscribeUserAsyncはそのコールのカードを必要とされて言うことができるように

https://github.com/pedropaf/saas-ecom/blob/1370ac169807e97ffb7414610d5be4de4a3cc9ae/SaasEcom.Core/Infrastructure/Facades/SubscriptionsFacade.cs

+0

と一つに既存経由でカードのいずれかを追加することになり、いくつかのより多くの私たちは、おそらくあなたのコントローラでその購読コードのもう少しを見ることができますか? –

+0

@Alex Rohrコントローラーコード – user299709

答えて

1

public async Task<ActionResult> Register(RegisterViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var userIP = GeoLocation.GetUserIP(Request).Split(':').First(); 
     var user = new ApplicationUser 
     { 
      UserName = model.Email, 
      Email = model.Email, 
      RegistrationDate = DateTime.UtcNow, 
      LastLoginTime = DateTime.UtcNow, 
      IPAddress = userIP, 
      IPAddressCountry = GeoLocationHelper.GetCountryFromIP(userIP), 
      BillingAddress = new BillingAddress() 
     }; 
     var result = await UserManager.CreateAsync(user, model.Password); 
     if (result.Succeeded) 
     { 
      // Create Stripe user 
      var taxPercent = user.IPAddressCountry != null && EuropeanVat.Countries.ContainsKey(user.IPAddressCountry) ? 
       EuropeanVat.Countries[user.IPAddressCountry] : 0; 

      // if no plan set, default to professional 
      var planId = string.IsNullOrEmpty(model.SubscriptionPlan) 
       ? "starter" 
       : model.SubscriptionPlan; 

      var customer = new StripeCustomerService(); 
      var customerInfo = customer.Get(user.CustomerIdentifier); 

      await SubscriptionsFacade.SubscribeUserAsync(user, planId, taxPercent: taxPercent); 
      await UserManager.UpdateAsync(user); 

      await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); 
      await UserManager.EmailService.SendWelcomeEmail(user.UserName, user.Email); 

      TempData["flash"] = new FlashSuccessViewModel("Congratulations! Your account has been created."); 

      return RedirectToAction("Index", "Notes"); 
     } 
     AddErrors(result); 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

とSubscribeUserAsync:

はここで完全なコードです。

private async Task<Subscription> SubscribeUserAsync 
(SaasEcomUser user, string planId, CreditCard creditCard, int trialInDays = 0, decimal taxPercent = 0) 

または

public async Task<Subscription> SubscribeUserAsync 
(SaasEcomUser user, string planId, decimal taxPercent = 0, CreditCard creditCard = null) 

あなたはそれがおそらくそれで行くことにクレジットカードを望んでいるユーザーをサブスクライブしているので。私は、彼らはそれを更新した場合、私はわからないよトークンを生成を介して、または呼び出し、

var customer = new StripeCustomerService(); 
var customerInfo = customer.Get(user.CustomerIdentifier); 
//then store card with customerInfo.DefaultSourceId somewhere and use it 
+0

がこれをテストしています.... – user299709

+0

よく 'user.CustomerIdentifier'でコンパイルエラーが発生しました。フルコントローラーコード – user299709

+0

の回答を更新しました。ストライプユーザーがアカウント登録時に作成され、ユーザーからクレジットカードが提供されていないため、カードの保管方法(3行目のコメント)を確認してください。 – user299709

関連する問題