web-dev-qa-db-fra.com

Taux d'imposition dans le nouveau Stripe Checkout


J'ai implémenté le nouveau Stripe Checkout sur mon NodeJS server, mais je ne peux pas spécifier le taux de taxe pour la facturation.

Selon ma compréhension Les taux de taxe doivent être spécifiés dans API d'intention de paiement . Le fait est que le nouveau Checkout crée automatiquement un Payment Intent via son CreateSession (voir payment_intent_data), mais je ne suis pas en mesure d'insérer un taux de taxe lors de sa création.

Comment cela peut-il être fait? Ce que je veux réaliser, c'est que l'utilisateur connaisse le% de taxe à la fois dans le Checkout UI et dans la finale email invoice.

Voici mon code:

return stripe.checkout.sessions.create({
    payment_method_types: [paymentMethod],
    line_items: [{
        name: name,
        description: description,
        images: [imageUrl],
        amount: amount,
        currency: currency,
        quantity: 1
    }],
    success_url: successUrl,
    cancel_url: cancelUrl,
    customer: stripeId,
    payment_intent_data: {
        receipt_email: email,
        metadata: {
            userId: userId,
            amount: amount,
            currency: currency,
            ref: ref,
            stripeId: stripeId,
            details: details
        }
    }
}).then(session => {
    return res.send(session)
17
r4id4

Au moment de cette réponse, Stripe Checkout ne prend pas en charge les taux de taxe.

Une alternative est de collecter les détails de paiement en utilisant le mode "configuration" Checkout [1], puis de créer un PaymentIntent [2] à partir de votre serveur avec le PaymentMethod collecté dans Checkout et le taux de taxe que vous souhaitez utiliser.

[1] https://stripe.com/docs/payments/checkout/collecting

[2] https://stripe.com/docs/api/payment_intents/create

5
w1zeman1p

Stripe checkout support now Taux d'imposition.

À partir de la version "Stripe.net" 35.12.0, vous pouvez définir un taux de taxe par défaut lorsque vous créez une nouvelle session.

var options = new SessionCreateOptions {
    PaymentMethodTypes = new List<string> {
        "card",
    },
    SubscriptionData = new SessionSubscriptionDataOptions {
        DefaultTaxRates = new List<string> {
            _STRIPE_OPTIONS.Tax // Your tax rate id
        },
        Items = new List<SessionSubscriptionDataItemOptions> {
            new SessionSubscriptionDataItemOptions {
                Plan = request.PlanId, // Your plan id
            },
        },
    },
    Customer = customer.StripeCustomerId,
    SuccessUrl = _STRIPE_OPTIONS.SuccessUrl,
    CancelUrl = _STRIPE_OPTIONS.CancelUrl
};

var service = new SessionService();
var session = service.Create(options);

N'oubliez pas de mettre à jour votre version de webhook si vous en utilisez une.

0
Nicolas Law-Dune