# Accepter des paiements pour l'élimination du carbone Offrez à votre clientèle la possibilité d'acheter des solutions d'élimination du carbone en utilisant l'API Climate dans votre intégration de paiement. # Guide de démarrage de Climate Orders Offrez à votre clientèle la possibilité d’acheter des solutions d’élimination du carbone à l’aide de l’[API Climate Orders](https://docs.stripe.com/api/climate/order.md) dans votre intégration de paiement. ### Installer la bibliothèque Node de Stripe Installez le package et importez-le dans votre code. Si vous partez de zéro et qu’il vous faut un fichier package.json, vous pouvez également télécharger les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code. #### npm Installez la bibliothèque : ```bash npm install --save stripe ``` #### GitHub Vous pouvez sinon télécharger le code source de la bibliothèque Node de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-node). ### Installer la bibliothèque Ruby de Stripe Installez le gem Ruby de Stripe et exigez-le dans votre code. Si vous partez de zéro et avez besoin d’un Gemfile, téléchargez les fichiers du projet à l’aide du lien dans l’éditeur de code. #### Terminal Installez le gem : ```bash gem install stripe ``` #### Bundler Ajoutez cette ligne à votre Gemfile : ```bash gem 'stripe' ``` #### GitHub Vous pouvez sinon télécharger le code source du gem Ruby de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-ruby). ### Installer la bibliothèque Java Ajoutez la dépendance à votre build et importez la bibliothèque. Ou bien, si vous partez de zéro et avez besoin d’un exemple de fichier pom.xml (pour Maven), téléchargez les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code. #### Maven Ajoutez la dépendance suivante à votre POM et remplacez {VERSION} par le numéro de version que vous souhaitez utiliser. ```bash \ncom.stripe\nstripe-java\n{VERSION}\n ``` #### Gradle Ajoutez la dépendance à votre fichier build.gradle et remplacez {VERSION} par le numéro de version que vous souhaitez utiliser. ```bash implementation "com.stripe:stripe-java:{VERSION}" ``` #### GitHub Téléchargez le fichier JAR directement [depuis GitHub](https://github.com/stripe/stripe-java/releases/latest). ### Installer le package Python de Stripe Installez le package Stripe et importez-le dans votre code. Si vous partez de zéro et qu’il vous faut un fichier requirements.txt, téléchargez les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code. #### pip Installez le package via pip : ```bash pip3 install stripe ``` #### GitHub Téléchargez le code source de la bibliothèque stripe-python directement [depuis GitHub](https://github.com/stripe/stripe-python). ### Installer la bibliothèque PHP Installez la bibliothèque avec composer et initialisez-la avec votre clé API secrète. Si vous partez de zéro et que vous avez besoin d’un fichier composer.json, vous pouvez également télécharger les fichiers à l’aide du lien de téléchargement dans l’éditeur de code. #### Composer Installez la bibliothèque : ```bash composer require stripe/stripe-php ``` #### GitHub Vous pouvez sinon télécharger le code source de la bibliothèque php de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-php). ### Configurer votre serveur Ajoutez la dépendance à votre build et importez la bibliothèque. Si vous partez de zéro et avez besoin d’un fichier go.mod, téléchargez les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code. #### Go Veillez à initialiser avec des modules Go : ```bash go get -u github.com/stripe/stripe-go/v85 ``` #### GitHub Vous pouvez sinon télécharger le code source de la bibliothèque Go de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-go). ### Installer la bibliothèque Stripe.net Installez le package avec .NET ou NuGet. Si vous partez de zéro, vous pouvez également télécharger les fichiers qui contiennent un fichier .csproj configuré. #### .NET Installez la bibliothèque : ```bash dotnet add package Stripe.net ``` #### NuGet Installez la bibliothèque : ```bash Install-Package Stripe.net ``` #### GitHub Vous pouvez sinon télécharger le code source de la bibliothèque .NET de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-dotnet). ### Installer les bibliothèques Stripe Installez les packages et importez-les dans votre code. Si vous partez de zéro et qu’il vous faut un fichier `package.json`, vous pouvez également télécharger les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code. Installez les bibliothèques : ```bash npm install --save stripe @stripe/stripe-js next ``` ### Créer un endpoint pour gérer la requête Ajoutez un endpoint sur votre serveur créant une [session Checkout](https://docs.stripe.com/api/checkout/sessions.md). La session Checkout contrôle ce que votre client voit sur la page de paiement. ### Calculer le montant de la commande Utilisez [Climate Products](https://docs.stripe.com/api/climate/product.md) pour récupérer le dernier tarif et calculer le montant total de la commande. ### Créer un client Recherchez un [client](https://docs.stripe.com/api/customers.md) dans votre base de données ou créez un nouveau `Customer` pour représenter la personne que vous facturez. ### Créer une facture vide Veillez à transmettre le [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) dans `metadata` et définissez l’attribut [collection_method](https://docs.stripe.com/api/invoices/object.md#invoice_object-collection_method) sur `send_invoice`. Pour que Stripe soit en mesure de marquer une facture comme étant en retard, renseignez le paramètre [days_until_due](https://docs.stripe.com/api/invoices/create.md#create_invoice-days_until_due). Stripe envoie au client la facture et des instructions de paiement par e-mail. Pour obtenir davantage d’options de personnalisation des factures, consultez la page relative aux [factures](https://docs.stripe.com/api/invoices.md). ### Créer un poste de facture Créez un poste de facture en transmettant les paramètres `customer.id` et `invoice.id` ainsi que les paramètres `amount_total` et `currency` de la commande. ### Envoyer la facture Envoyez la facture à l’adresse e-mail associée au client et redirigez vers une page de confirmation de paiement. Dès que vous envoyez une facture, Stripe la finalise. De nombreuses juridictions considèrent les factures finalisées comme un document juridique, ce qui rend certains champs non modifiables. Si vous envoyez des factures déjà payées, aucune référence au paiement n’est fournie dans l’e-mail. Pour toute facture finalisée, vous pouvez soit télécharger et envoyer un [PDF](https://docs.stripe.com/api/invoices/object.md#invoice_object-invoice_pdf), soit [créer un lien](https://docs.stripe.com/api/invoices/object.md#invoice_object-hosted_invoice_url) vers la [page de la facture hébergée](https://docs.stripe.com/invoicing/hosted-invoice-page.md) correspondante. ### Créer une session Checkout Créez une `Checkout Session` pour encaisser le paiement de vos clients. ### Configurer la session Checkout Veillez à transmettre le [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) dans `metadata`. Pour plus d’options de personnalisation de la session Checkout, consultez [Checkout](https://docs.stripe.com/api/checkout/sessions.md). ### Fournir les URL de confirmation et d’annulation Indiquez les URL des pages de confirmation ou d’annulation de paiement. Assurez-vous qu’elles sont publiquement accessibles afin que Stripe puisse y rediriger les clients. Vous pouvez également gérer les états de confirmation et d’annulation avec la même URL. ### Rediriger vers Checkout Après avoir créé la session, redirigez votre client vers l’URL de la page Checkout renvoyée dans la réponse. ### Créer une recharge Votre commande est financée à l’aide du compte bancaire associé à votre compte, en transmettant le [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) dans `metadata`. Assurez-vous que votre compte bancaire autorise les prélèvements de Stripe et qu’il dispose d’un solde suffisant pour couvrir votre commande. ### Créer une commande de solution d’élimination du carbone Une [commande Climate](https://docs.stripe.com/api/climate/order.md) réserve la solution d’élimination du carbone et en assure le suivi jusqu’à livraison. Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md). > Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus. ### Créer une commande de solution d’élimination du carbone Lorsque l’utilisateur règle sa facture, créez la [commande Climate](https://docs.stripe.com/api/climate/order.md). Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md). > Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus. ### Créer une commande de solution d’élimination du carbone Lorsque l’utilisateur finalise son paiement à l’aide de Checkout, créez la [commande Climate](https://docs.stripe.com/api/climate/order.md). Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md). > Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus. ### Créer une commande de solution d’élimination du carbone Une fois la recharge effectuée, créez la [commande Climate](https://docs.stripe.com/api/climate/order.md). Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md). > Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus. ### Ajouter une page d’aperçu de commande Ajoutez une page permettant de prévisualiser les solutions d’élimination du carbone que vous proposez à la vente et de collecter un e-mail auprès de votre client. Affichez ici vos ressources marketing et indiquez clairement la date de livraison prévue et les garanties applicables à votre produit. ### Ajouter une page d’aperçu de commande Ajoutez une page permettant de prévisualiser les solutions d’élimination du carbone que vous proposez à la vente. Affichez ici vos ressources marketing et indiquez clairement la date de livraison prévue et les garanties applicables à votre produit. ### Ajouter un bouton de commande Ajoutez un bouton pour passer une commande et envoyer la facture. ### Ajouter un bouton de commande Ajoutez un bouton pour passer une commande. Lorsque votre client clique sur ce bouton, il est redirigé vers le formulaire de paiement hébergé par Stripe. ### Gérer la redirection au retour de Checkout Affichez un message destiné au client lorsqu’il est redirigé vers votre page. ### Ajouter une page de commande Dans votre application, créez une page pour passer une commande. ### Télécharger le kit de ressources Utilisez [le kit de ressources](https://stripe-images.s3.amazonaws.com/content-store/climate/APIAssetKit.zip) pour présenter à vos clients les produits d’élimination du carbone. ### Définir vos variables d’environnement Ajoutez vos clés publiables et vos clés secrètes à un fichier `.env`. Next.js les charge automatiquement dans votre application en tant que [variables d’environnement](https://nextjs.org/docs/basic-features/environment-variables). Ajoutez également une clé secrète de webhook que vous pouvez créer dans le [Dashboard](https://dashboard.stripe.com/webhooks) ou à l’aide de la [CLI Stripe](https://docs.stripe.com/stripe-cli.md). ### Exécuter l’application Démarrez votre application avec `npm run dev` et accédez à . ### Faire un essai Cliquez sur **Checkout** pour être redirigé vers la page Checkout. Utilisez l’une de ces cartes de test pour simuler un paiement. | Scenario | Card Number | | ----------------------------------- | ---------------- | | Payment succeeds | 4242424242424242 | | Payment requires 3DS authentication | 4000002500003155 | | Payment is declined | 4000000000009995 | ### Faire un essai Cliquez sur **Passer commande** pour envoyer une facture test. Utilisez l’une de ces cartes de test pour simuler le paiement de la facture. | Scenario | Card Number | | ----------------------------------- | ---------------- | | Payment succeeds | 4242424242424242 | | Payment requires 3DS authentication | 4000002500003155 | | Payment is declined | 4000000000009995 | ### Créer votre commande de solution d’élimination du carbone Affichez la `Climate Order` dans le [Dashboard Stripe](https://dashboard.stripe.com/climate/orders) pour confirmer que la création de la commande Climate a bien abouti. // Check to see if this is a redirect back from the server const query = new URLSearchParams(window.location.search); if (query.get("success")) { setMessage("Order placed!"); } if (query.get("canceled")) { setMessage("Order canceled."); }

Frontier's 2027 offtake portfolio

$550.00/ton

Frontier's 2027 offtake portfolio

$550.00/ton
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); export default async function handler(req, res) { const currency = 'usd'; const {data: products} = await stripe.climate.products.list(); // Select which carbon removal product you want to order const climateProduct = products.find((p) => p.id === 'climsku_frontier_offtake_portfolio_2027'); // Calculate the total amount based on the number of tons const unit_amount = 1.0 * climateProduct.current_prices_per_metric_ton[currency].amount_total; // Look up a product in your database or create a new one const product = await stripe.products.create({ name: climateProduct.name, }); // Create Checkout Sessions from body params. const session = await stripe.checkout.sessions.create({ line_items: [ { price_data: { unit_amount, currency, product: product.id, }, quantity: 1, }, ], mode: 'payment', metadata: { climate_product: climateProduct.id }, success_url: `${req.headers.origin}?success=true`, }); res.redirect(303, session.url); const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); export default async function handler(req, res) { const currency = 'usd'; const {data: products} = await stripe.climate.products.list(); // Select which carbon removal product you want to order const climateProduct = products.find((p) => p.id === 'climsku_frontier_offtake_portfolio_2027'); // Calculate the total amount based on the number of tons const unit_amount = 1.0 * climateProduct.current_prices_per_metric_ton[currency].amount_total; // Look up a customer in your database or create a new one const customer = await stripe.customers.create({email: 'TODO@example.com'}); // Create an Invoice const invoice = await stripe.invoices.create({ customer: customer.id, collection_method: 'send_invoice', days_until_due: 1, metadata: { climate_product: climateProduct.id }, }); // Look up a product in your database or create a new one const product = await stripe.products.create({ name: climateProduct.name, }); // Create an Invoice Item with the Price, and Customer you want to charge await stripe.invoiceItems.create({ customer: customer.id, invoice: invoice.id, price_data: { unit_amount, currency, product: product.id, }, }); // Send the Invoice await stripe.invoices.sendInvoice(invoice.id); res.redirect(303, req.headers.origin + '?success=true'); const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); export default async function handler(req, res) { const currency = 'usd'; const {data: products} = await stripe.climate.products.list(); // Select which product you want to order const product = products.find((product) => product.id === 'climsku_frontier_offtake_portfolio_2027'); // Calculate the total amount based on the number of tons const amount = 1.0 * product.current_prices_per_metric_ton[currency].amount_total; // Create a top-up await stripe.topups.create({ amount, currency, metadata: { climate_product: product.id }, }); res.redirect(303, req.headers.origin + '?success=true'); const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); export default async function handler(req, res) { const order = await stripe.climate.orders.create({ metric_tons: '1.0', product: 'climsku_frontier_offtake_portfolio_2027', }); res.redirect(303, req.headers.origin + '?success=true'); case 'invoice.paid': { const invoice = event.data.object; if (invoice.metadata.climate_product) { await stripe.climate.orders.create({ amount: invoice.total, currency: invoice.currency, product: invoice.metadata.climate_product, }); } break; } case 'checkout.session.completed': { const session = event.data.object; if (session.metadata.climate_product) { await stripe.climate.orders.create({ amount: session.amount_total, currency: session.currency, product: session.metadata.climate_product, }); } break; } case 'topup.succeeded': { const topup = event.data.object; if (topup.metadata.climate_product) { await stripe.climate.orders.create({ amount: topup.amount, currency: topup.currency, product: topup.metadata.climate_product, }); } break; } \# https://dashboard.stripe.com/apikeys STRIPE_SECRET_KEY=<> \# Set this environment variable to support webhooks — https://stripe.com/docs/webhooks#verify-events STRIPE_WEBHOOK_SECRET=whsec_12345