Sök…


Syntax

  • var stripeSubscriptionOptions = new StripeSubscriptionCreateOptions ();

    // skapa en variabel för att hålla alternativobjekt

            stripeSubscriptionOptions.Quantity = model.update;
    

    // exempel på antal platser för ett prenumeration

            var subscriptionService = new StripeSubscriptionService();
    

    // skapa en tjänst för att ringa API

            var stripeSubscription = subscriptionService.Create(user.CustomerIdentifier, planId,
    

    stripeSubscriptionOptions);

    // service.create (string CustID, string PlanID, Object SubscriptionOptions)

    // Kund-ID bör sparas från din databas, du kan hämta planID från remsan med en PlanService och skapa alternativobjektet som ovan. Om du NuGet the Stripe.Net fungerar intellisense också för dessa.

Anmärkningar

Någonstans i början av din controller bör du ringa

StripeConfiguration.SetApiKey(YOUR SECRET KEY VAR);

och för datasäkerhet bör det vara ett värde som är dold som en hemlighet i besättningar

om du inte ställer in API-nyckeln kan du inte ändra prenumerationer eller skapa kunder

Börjar med Stripe.Net i ASP.Net Core 1.0

https://github.com/jaymedavis/stripe.net är en bra utgångspunkt.
Förutsatt att du använder MVC w / Razor måste du ha några saker på din View-sida

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

Detta skript uppmanar stripe.js att hantera att skapa ett token.

<script type="text/javascript">
        Stripe.setPublishableKey('YOUR STRIPE PUBLIC KEY');

var stripeResponseHandler = function (status, response) {
    var $form = $('#payment-form');

    if (response.error) {
        // Show the errors on the form
        $form.find('.payment-errors').text(response.error.message);
        $form.find('button').prop('disabled', false);
    } else {
        // token contains id, last4, and card type
        var token = response.id;
        // Insert the token into the form so it gets submitted to the server
        $form.append($('<input type="hidden" asp-for="stripeToken" />').val(token));
        // and re-submit
        $form.get(0).submit();
    }
};

jQuery(function ($) {
    $('#payment-form').submit(function (e) {
        var $form = $(this);

        // Disable the submit button to prevent repeated clicks
        $form.find('button').prop('disabled', true);

        Stripe.card.createToken($form, stripeResponseHandler);

        // Prevent the form from submitting with the default action
        return false;
    });
});
</script>

För att lägga till token till en modell, se till att du ändrar

$form.append($('<input type="hidden" asp-for="stripeToken" />').val(token));

för att återspegla din modell. Formen ska se ut så här.

 <form asp-action="confirm" method="POST" id="payment-form">
            <span class="payment-errors"></span>

            <div class="row">
                <label>
                    <span>Card Number</span>
                    <input type="text" data-stripe="number" value="4242424242424242">
                </label>
            </div>

            <div class="row">
                <label>
                    <span>CVC</span>
                    <input type="text" data-stripe="cvc" value="123">
                </label>
            </div>

            <div class="row">
                <label>
                    <span>Expiration (MM/YYYY)</span>
                    <input type="text" data-stripe="exp-month" value="12">
                </label>
                <input type="text" data-stripe="exp-year" value="2020">
            </div>

            <button type="submit">Buy Now</button>
        </form> 

Styrenheten tar en av användarna och letar efter en CustomerIdentifier som är kundens ID som anges av stripe. Om detta inte sparas i databasen fungerar det på att skapa en kund för dem

 public async Task<IActionResult> Index(OrderViewModel model)   //HOME PAGE beginning of managing subs
    {
        //get the user and their ID
        var user = await GetCurrentUserAsync();
        var userId = user?.Id;
        // If they have a customer Identifier use it
        if (!string.IsNullOrEmpty(user.CustomerIdentifier))  //eventually if user has a saved card as well
        {
            //Create the API call to subscription and put its response in a list
            var subscriptionService = new StripeSubscriptionService();
            IEnumerable<StripeSubscription> response = subscriptionService.List(user.CustomerIdentifier);

            ViewBag.Subscription = response;

            ViewBag.Customer = user.CustomerIdentifier;


        }
        ModelState.Clear();
        return View(model);
    }
 public async Task<IActionResult> Confirm(OrderViewModel model, string stripeToken)  // CREATE CHARGE NO CARD/ NO CUSTOMER
    {
        model.stripeToken = stripeToken;
        //get the user and their ID
        var user = await GetCurrentUserAsync();
        var userId = user?.Id;
        var planId = "YOUR PLAN ID HERE";  //plan ID only 1 atm but will need to be a dynamic plan ID list later
        // If they have a customer Identifier use it
        if (!string.IsNullOrEmpty(user.CustomerIdentifier))
        {
            //Create the API call to subscription and put its response in a list
            //Use the subscription options to apply a quantity to the initial subscription for seats
            var stripeSubscriptionOptions = new StripeSubscriptionCreateOptions();
            stripeSubscriptionOptions.Quantity = model.update;
            var subscriptionService = new StripeSubscriptionService();
            var stripeSubscription = subscriptionService.Create(user.CustomerIdentifier, planId, stripeSubscriptionOptions);
            //save Subscriptions data here

            ModelState.Clear();
            //await SaveSubscription(stripeSubscription, user);
            await _userManager.UpdateAsync(user);
        }
        else // Customer is new and doesn't have an ID
        {
            //Create API options
            var customer = new StripeCustomerCreateOptions();
            
            // Add option values
            customer.Email = $"{user.Email}";
            customer.Description = $"{user.Email} [{userId}]";
            customer.PlanId = planId;
            
            customer.SourceToken = model.stripeToken;
            //Make the call to create the customer with the creation options
            var customerService = new StripeCustomerService();
            StripeCustomer stripeCustomer = customerService.Create(customer);

            //save the customer ID
            user.CustomerIdentifier = stripeCustomer.Id;

            //create card update options and add billing info
            var cardOptions = new StripeCardUpdateOptions();
            cardOptions.AddressLine1 = model.BillingInfo.AddressL1;
            cardOptions.AddressLine2 = model.BillingInfo.AddressL2;
            cardOptions.AddressCountry = model.BillingInfo.Country;
            cardOptions.AddressCity = model.BillingInfo.City;
            cardOptions.AddressState = model.BillingInfo.State;
            cardOptions.AddressZip = model.BillingInfo.Zip;
            cardOptions.Name = model.BillingInfo.Name;
            var cardUpdate = new StripeCardService();
            // get the customer card ID and then update the card info
            StripeCustomer customerCardGet = customerService.Get(user.CustomerIdentifier);
            var cardId = customerCardGet.DefaultSourceId;
            StripeCard Card = cardUpdate.Update(user.CustomerIdentifier, cardId, cardOptions);


            //save Subscriptions data here
            //user.ConcurrentUsers = Stripe Quantity
            
            ModelState.Clear();

            await _userManager.UpdateAsync(user);
           
        }
        ViewBag.Success = "confirm";
        return View("Success");
    }

Detta speciella exempel inkluderar några av extrafunktioner som att ta faktureringsinformation i styrenheten. Om du vill ha detta, lägg bara till det i formuläret i vyn och skapa en modell för att hålla den.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow